ICAO hex code: what the 24-bit address reveals about registration and origin

Every aircraft with a Mode S transponder broadcasts a globally unique 24-bit address. How ICAO allocates address blocks to states, what the hex code has to do with the registration, and how to use it while spotting.

Planetrack editorial teamPublished: October 15, 202616 min read

Key takeaways

  • One code per aircraft: The ICAO 24-bit address identifies a single aircraft. At any one time it may be assigned to only one aircraft, and each aircraft has only one.
  • Six hex characters, about 16.8 million possibilities: 24 bits yield 16,777,216 values. Because all zeros and all ones are not assigned, 16,777,214 usable addresses remain.
  • The beginning reveals the state of registry: ICAO allocates a fixed address block to each state. German aircraft are in the range 3C0000 to 3FFFFF, US aircraft between A00000 and AFFFFF.
  • New state, new code: When an aircraft moves to a different registry, it gives up its old address and receives a new one from the new state’s block.
  • Hex code is not squawk: The four-digit squawk is assigned by air traffic control for each flight. The 24-bit address belongs to the aircraft permanently.
Contents
  1. 1.Hex code: the short answer
  2. 2.What the address is needed for
  3. 3.How ICAO allocates the addresses
  4. 4.Recognizing the state of registry from the hex code
  5. 5.Hex code and registration: sometimes calculable, sometimes not
  6. 6.What happens on a re-registration?
  7. 7.Hex code, squawk, callsign: three values, three jobs
  8. 8.Using the hex code while spotting
  9. 9.Hexadecimal, octal, binary: the same number in three notations
  10. 10.What to watch out for
  11. 11.Conclusion

On the flight tracker map you click an aircraft, and next to registration, type and callsign there is an inconspicuous value like 3C4A21 or 4B1814. Many people skip over it. Yet this ICAO hex code is the aircraft’s real identity on the radio: a 24-bit address that the transponder sends along with every transmission. This guide explains where the address comes from, how it relates to the registration and state of registry, why it changes on a re-registration and how you can put it to practical use while spotting.

Keep the registration in sight before it lands

With Planetrack you set sighting alerts for registrations, types, airlines and special liveries and get notified on approach or landing. Planetrack is launching soon – join the waitlist and get early access.

Download Planetrack on the App Store Get Planetrack on Google Play

Hex code: the short answer

The ICAO 24-bit address is a globally unique identifier assigned to every aircraft with a Mode S transponder. It consists of 24 binary digits and is usually written as a six-digit hexadecimal value – hence the name hex code. ICAO allocates a fixed address block to each state, and the national registry authority assigns individual addresses from it to the aircraft on its register. That is why the start of the code alone reveals the state of registry, just like the nationality prefix before the registration.

The difference from the registration is important: the registration is on the fuselage in a form people can read, while the 24-bit address is the machine-readable counterpart on the radio. Both belong to the registration, but they are two separate values. How the visible registration is structured is explained in the guide Understanding aircraft registrations.

24 bitlength of the address, written as six hex characters
16,777,214usable addresses worldwide (2²⁴ minus two reserved values)
1address per aircraft – and only one aircraft per address

What the address is needed for

The 24-bit address came about with secondary radar Mode S. Older Mode A and C transponders send only a four-digit code and the altitude. Mode S, by contrast, can interrogate each aircraft individually – and for that every aircraft needs a unique address, much like a house number. The technical background on the modes is in the article Mode S transponders explained.

By now several systems rely on the same address:

  • Secondary radar Mode S: Air traffic control radar stations address individual aircraft and read out data such as altitude and identification.
  • ADS-B: With ADS-B the transponder broadcasts position, speed and callsign on its own. Each of these messages carries the 24-bit address as the sender.
  • Collision avoidance (ACAS/TCAS): Onboard systems detect other aircraft nearby and coordinate avoidance maneuvers via their addresses.
  • Data link: Data connections between aircraft and ground station, for example for clearances by text message, also use the address to deliver messages to the right aircraft. For this it is additionally entered in the flight plan.

For spotters ADS-B is the main thing. Every receiver – from the large flight tracking network to a homemade ADS-B receiver on your own roof – initially sees only the hex code. Only a database translates it into registration, type and operator. How this data comes about and why some services show more than others is explained in the guide Flight tracking with ADS-B for spotters.

How ICAO allocates the addresses

The rules are in Annex 10 to the Convention on International Civil Aviation, Volume III, Chapter 9. The principle has two stages:

  1. Allocation to states: ICAO assigns blocks of consecutive addresses to the states of registry. Each block is defined by a fixed pattern of the first 4, 6, 9, 12 or 14 bits. This gives five block sizes, from 1,048,576 down to 1,024 addresses.
  2. Assignment to aircraft: Within its block, the state assigns an address to each registered aircraft. In Germany the Federal Aviation Office (Luftfahrt-Bundesamt) is responsible for this as the registry authority.

Major aviation nations have large blocks, small states small ones. A state can only apply for additional addresses once at least 75 percent of its block has been assigned. For some states with small blocks and fast-growing hubs this is quite an issue, especially since apron vehicles with transponders also need addresses.

The rules for assignment

The ICAO annex sets out a few clear principles for individual addresses:

  • An address may be assigned to only one aircraft at a time.
  • Each aircraft gets only one address, no matter how many transponders or systems are on board.
  • The address is changed only in exceptional cases and never during a flight.
  • If an aircraft changes its state of registry, it gives up the old address and receives a new one from the new registry.
  • The address serves only for technical identification and is not meant to carry any further information.
  • The values made up of 24 zeros and 24 ones are not assigned to aircraft. Hence the number 16,777,214 instead of 16,777,216.

In addition, ICAO manages a dedicated block for temporary addresses. It is intended for cases where quick action is needed so that an aircraft does not fly with an invalid address. Once the state of registry has issued a regular address, the temporary one is supposed to be released again.

Recognizing the state of registry from the hex code

Because every state has a fixed block, you can often read the state of registry from the first two characters. The following table shows some blocks you often see at Central European airports, derived from Table 9-1 of ICAO Annex 10:

State Address range (hex) Block size Typical prefix on the fuselage
Germany 3C0000 – 3FFFFF 262,144 D-
Austria 440000 – 447FFF 32,768 OE-
Switzerland 4B0000 – 4B7FFF 32,768 HB-
France 380000 – 3BFFFF 262,144 F-
Italy 300000 – 33FFFF 262,144 I-
Spain 340000 – 37FFFF 262,144 EC-
Netherlands 480000 – 487FFF 32,768 PH-
United Kingdom 400000 – 43FFFF 262,144 G-
USA A00000 – AFFFFF 1,048,576 N
China 780000 – 7BFFFF 262,144 B-
Japan 840000 – 87FFFF 262,144 JA
ICAO, temporary addresses F00000 – F07FFF 32,768 –

The blocks follow the logic of the bits, not the logic of the nationality prefixes on the fuselage. That is why they are hard to remember at first glance. As a rule of thumb for everyday life at the fence, though, this is often enough: 3C to 3F is Germany, 44 is Austria, 4B is Switzerland, A is the USA. The matching nationality prefixes on the fuselage are explained in the article Aircraft nationality prefixes.

Block means state of registry, not airline

A code from the German block only says that the aircraft is on the German register. Whether it flies for an airline of the Lufthansa Group, a leisure airline or a private owner is not in the code. Conversely, a jet in a familiar livery may broadcast a code from a completely different block if, for example, it is registered with a foreign group subsidiary.

You can work out how big a block is for a given number of fixed bits here:

How many addresses does a block have?

Choose how many of the 24 bits are fixed for the state. The rest is available for individual aircraft.

Each free bit doubles the number of possible addresses. The two values of all zeros and all ones are globally reserved.

Hex code and registration: sometimes calculable, sometimes not

A common question: can the registration be calculated from the hex code? The answer depends on the registry.

USA: the mathematical exception

In the US, N-numbers and addresses are linked in a fixed, consecutive sequence. N1 corresponds to A00001, N1A corresponds to A00002, and at the end N99999 sits at ADF7C7. If you know the system, you can convert back and forth between the two values, and there are freely available converters for that. A historical example is NASA’s Boeing 747 carrier aircraft for the Space Shuttle with the registration N905NA: its address is AC82EC in hexadecimal, 53101354 in octal.

The flip side: when a US aircraft gets a new N-number, its address inevitably changes as well. More on the structure of US registrations is in the article US N-numbers explained.

Europe: database instead of formula

In Germany, Austria, Switzerland and most other states there is no publicly usable calculation rule between registration and address. The registry authority assigns the address, and the link is in its records. To match a code to a registration you therefore need:

  • the aircraft register of the state in question, provided it also publishes the address – how to query registers is shown in the guide Looking up the aircraft register,
  • the databases of flight tracking services, which continuously maintain hex codes and registrations,
  • or spotter databases and fleet lists, in which codes from sightings and reception data are compiled.

Every registration in your hangar

In Planetrack you post sightings with photo, registration, type, airline, airport and spot and collect them in your hangar – including a wish list for the registrations you are still missing. Planetrack is launching soon – join the waitlist and get early access.

Download Planetrack on the App Store Get Planetrack on Google Play

What happens on a re-registration?

For spotters the re-registration is the most exciting moment in an address’s life. Here the ICAO rule is clear: new state of registry, new address. An Airbus that moves from the German to the Maltese register gives up its code from the 3C to 3F range and afterwards broadcasts an address from the Maltese block. The old address becomes free and can later be assigned to another aircraft.

A few practical effects follow from this:

  • Same aircraft, two codes: In flight histories the same aircraft appears under different hex codes before and after the change. If you follow an aircraft’s history, you should therefore go by the serial number, which never changes. How that works is shown in the article Looking up an aircraft’s flight history.
  • Short database gaps: Right after the change, some services do not yet know the new address. On the map you then see only the hex code without a registration.
  • Recycled codes: Because released addresses can be reassigned, a code may belong to a completely different aircraft after some years. You should always save old logbook entries with a hex code together with registration and date.

If an aircraft stays in the same state and only gets a new livery or a new operator, it usually keeps its address. How re-registrations work and why they are so common is explained in the guide Aircraft re-registrations.

Hex code, squawk, callsign: three values, three jobs

On the flight tracker map, several identifiers sit side by side that are easy to mix up:

Value Example form Who sets it? How long does it apply?
Hex code (24-bit address) 3C4A21 the state’s registry authority as long as the aircraft is on the register
Registration D-AIMA the state’s registry authority as long as the aircraft is on the register
Squawk 1000, 7000 air traffic control or the crew a single flight or flight segment
Callsign DLH4AB the operator in the flight plan a single flight

The squawk consists of four digits from 0 to 7, so it is an octal code with 4,096 possibilities. The crew sets it in the cockpit on air traffic control’s instruction, and it changes constantly. Some codes have fixed meanings, for example for emergencies – more on this in the article on squawk codes 7500, 7600 and 7700. The callsign is the flight’s radio callsign, which the guide Callsign and flight number explains. Of all four values, the 24-bit address is the only one that the crew does not normally touch at all.

Using the hex code while spotting

In everyday life at the fence, the hex code is a tool for the cases where the registration alone does not help.

1. Clear up an illegible registration

The aircraft was too far away or the registration is blurred in the photo? Note the time, find the flight in a flight tracking service’s playback and read the hex code and registration there. More tricks are in the guide Identifying an illegible registration.

2. Search for a specific aircraft

Many live maps let you search by hex code. This helps especially with aircraft whose registration has just changed. How this works step by step is shown in the article Tracking an aircraft by registration.

3. Quickly place the origin

If a code shows up with no database entry, the block at least reveals the state of registry. An unknown code from the US block over Central Europe, for example, is a hint at a business jet or a ferry flight.

4. Evaluate your own reception data

If you receive ADS-B yourself, you initially see only codes in the raw data stream. Matching against databases turns them into registrations and types – and sometimes into an oddball you would otherwise have missed.

When the code does not match the aircraft

Occasionally something is off: an aircraft broadcasts a code that belongs to a different registration in the register, or even sends the value 000000. Common causes are an incorrectly programmed transponder, a freshly re-registered aircraft whose equipment has not been updated yet, or an outdated database. For your sightings, therefore: the registration you read on the fuselage takes priority. The hex code is a very good aid, but not proof.

Military, state and privacy

Military and state aircraft with Mode S transponders also have 24-bit addresses. But many flight tracking services do not show them, or only to a limited extent, and some aircraft broadcast no position data at all depending on their mission. Which ways there are nonetheless is described in the guide Tracking military aircraft.

In the US there are also two programs from the aviation authority FAA for owners who do not want to be tracked publicly. Through LADD, owners have the display of their data restricted at services that obtain data from the FAA. Under the Privacy ICAO Address (PIA) program, eligible owners receive a temporary, alternative address instead of the one entered in the register and fly with a third-party callsign. For you at the fence, that means: a US business jet may broadcast a code that matches its registration in no database. More on this traffic is in the article Spotting business jets.

Hexadecimal, octal, binary: the same number in three notations

The address is a number with 24 binary digits. That is impractical for humans, so it gets condensed:

  • Hexadecimal combines four bits each into one character from 0 to F. 24 bits give six characters – the notation common today on flight tracker maps.
  • Octal combines three bits each into a digit from 0 to 7. That makes eight digits. You still come across this form in some registers and older documents.
  • Binary is the raw form with 24 zeros and ones. In it you can best see which bits define the state block.

The NASA example N905NA shows that it is the same number: AC82EC in hexadecimal, 53101354 in octal, 11,305,708 in decimal. For spotters the hex form is enough. The only important thing is not to drop leading zeros and to note characters cleanly: the letters A to F are valid, letters like O or I do not occur in a hex code.

What to watch out for

  • Save code and registration together. Because addresses are reassigned after a re-registration, a hex code without registration and date becomes ambiguous over time.
  • Do not infer the airline from the block. The block names the state of registry, nothing more. Leasing and group subsidiaries in other countries are normal.
  • Read databases critically. Flight tracking services maintain their matches continuously, but are sometimes off, especially after re-registrations.
  • Do not confuse hex code with squawk. Four digits from 0 to 7 are a squawk, six hex characters are the address.
  • Respect privacy. If an owner has their data blocked, that is legitimate. Do not share details about private aircraft that are evidently not meant to be tracked publicly.

Can you place a hex code?

Check off what you know for sure – at the end you see whether you are ready for your next session with the live map.

  • I know that the hex code is the transponder’s 24-bit address.
  • I recognize codes from the German block by the beginnings 3C to 3F.
  • I know that the code changes when the state of registry changes.
  • I can tell hex code, squawk and callsign apart.
  • I know that only US registrations can be calculated directly from the code.
  • I always save codes together with registration and date.

If you want to systematically collect the registrations from your sightings, take a look at the guide Collecting registrations as a hobby. And at spots with a lot of international traffic like the Zeppelinheim viewing platform at Frankfurt Airport or the spotters’ hill at Vienna Airport, you can practice placing codes and states of registry right away.

Watch registrations, collect sightings

Planetrack tells you via sighting alert when a registration you are watching is on approach, and saves your sightings with all aircraft data in your hangar. Planetrack is launching soon – join the waitlist and get early access.

Download Planetrack on the App Store Get Planetrack on Google Play

Conclusion

The ICAO hex code is an aircraft’s technical identity: 24 bits that travel with every Mode S and ADS-B transmission and tell radar, collision avoidance systems and flight tracking services who is flying. ICAO distributes the addresses to the states in fixed blocks, which is why the start of the code reveals the state of registry. The address is tied to the registration through the registry, but can be calculated only in exceptions like the US. And because a change of state of registry always means a new address, the hex code is a good companion for re-registrations – but never a replacement for the registration on the fuselage.

In short

Six hex characters, one aircraft, one state of registry: 3C to 3F stands for Germany, 44 for Austria, 4B for Switzerland, A for the USA. Use the code to clear up illegible or freshly changed registrations, always save it together with registration and date, and when in doubt rely on what is written on the fuselage.

Summary

  • The 24-bit address is an aircraft’s technical identity for Mode S, ADS-B, collision avoidance systems and data link. Flight tracking services use it as a key to match signals to a registration.
  • Allocation is governed by Annex 10 to the Chicago Convention: ICAO assigns blocks to states, and the registry authorities assign individual addresses from them.
  • In the US the address follows mathematically from the N-number. In most other states there is no such relationship – there you need a database to connect hex code and registration.
  • For spotters the hex code is useful for identifying aircraft without a legible registration, tracing re-registrations and evaluating your own ADS-B data.

Frequently asked questions

What is an aircraft’s ICAO hex code?

The hex code is an aircraft’s ICAO 24-bit address, written as six hexadecimal characters like 3C4A21 or AC82EC. It is stored in the Mode S transponder and transmitted with every Mode S and ADS-B broadcast. Ground stations, other aircraft’s collision avoidance systems and flight tracker receivers use it to identify the aircraft unambiguously.

Can I read the country from the hex code?

Yes, at least the state of registry. ICAO has allocated a fixed address block to each state. If a code starts with 3C, 3D, 3E or 3F, the aircraft is registered in Germany. Codes between A00000 and AFFFFF belong to the US, 400000 to 43FFFF to the United Kingdom. The block says nothing about airline, location or owner.

Can I calculate the registration from the hex code?

Only in a few registries. In the US, N-numbers and addresses are linked in a fixed sequence: N1 corresponds to A00001, N99999 corresponds to ADF7C7. In Germany, Austria, Switzerland and most other states there is no such calculation rule. There you match the code using the aircraft register or a flight tracking service’s database.

Does the hex code change when an aircraft switches airlines?

Not automatically. What matters is the state of registry. If the aircraft stays in the same registry, it normally keeps its address, even with a new livery or a new operator. If it changes state, it has to give up the old address and receives a new one. In the US, every new N-number also means a new code, because the two are mathematically linked.

What is the difference between hex code and squawk?

The squawk is a four-digit code from the digits 0 to 7 that air traffic control assigns to a flight and that the crew sets in the cockpit. It changes from flight to flight. The 24-bit address, by contrast, is permanently stored in the transponder and belongs to the aircraft. So an aircraft has the same hex code for years but constantly different squawks.

Why does a flight tracker sometimes show only the hex code without a registration?

Because the service cannot match the code in its database. This happens with newly registered or freshly re-registered aircraft, with military and state aircraft, with temporary addresses or with incorrectly programmed transponders. With a bit of research in registers and spotter databases the gap can often be closed.

Do vehicles on the ground also have a 24-bit address?

Yes. Airport vehicles with transponders, for example for surface movement tracking, and certain fixed Mode S installations can also receive addresses. That is why vehicles that are not aircraft at all show up on the apron on some live maps.

PT

Planetrack editorial team

We build the Planetrack app and go spotting ourselves – on observation decks, under approach paths and at the fence. Every guide is based on our own experience and is updated regularly.

More articles in Registrations & tail numbers →

Read more in Registrations & tail numbers

Related airports & manufacturers

Airports, manufacturers, airline groups and alliances – who is behind them and what you should know as a spotter.

All airports & manufacturers →

Related spotting locations

Specific vantage points with the runway configuration, light times, coordinates and an honest take on whether the trip is worth it.

All spotting locations at a glance →

← Back to the blog