IATA vs ICAO Airport Codes
By The Flight Tracker Team · September 3, 2026
Three letters is an IATA code: LHR, JFK, DXB. Four letters is an ICAO code: EGLL, KJFK, OMDB. They point at the same airport. IATA codes are for passengers and bookings; ICAO codes are for pilots, controllers, and flight plans.
If you are checking a flight, the three-letter code is the one you want.
The two systems side by side
| IATA | ICAO | |
|---|---|---|
| Issued by | International Air Transport Association (an airline trade body) | International Civil Aviation Organization (a United Nations agency) |
| Length | 3 letters | 4 letters |
| Used for | Tickets, bag tags, boarding passes, departure boards, booking sites | Flight plans, air traffic control, charts, official documents |
| Structured? | Barely — largely historical and arbitrary | Yes — the first letter or two encode a region |
| How many | Roughly 11,000 assigned | Considerably more, including airfields with no commercial service |
The important structural difference: ICAO codes are geographic and IATA codes are not.
An ICAO code begins with a region prefix. E is northern Europe, K is the contiguous United States, O is much of the Middle East, Y is Australia, Z is China, V covers South and Southeast Asia. So an aviation professional reading EGPH already knows it is in the UK before knowing which airport it is.
IATA codes carry no such logic. ORD is Chicago O’Hare because the site was once called Orchard Field. YYZ is Toronto because of a historical Canadian radio-station convention. There is no pattern to learn, only a list.
Worked examples
| Airport | IATA | ICAO | Notes |
|---|---|---|---|
| London Heathrow | LHR | EGLL | EG = United Kingdom |
| New York JFK | JFK | KJFK | US codes are often just K + the IATA code |
| Los Angeles | LAX | KLAX | The X was padding when 2-letter codes became 3 |
| Dubai | DXB | OMDB | OM = United Arab Emirates |
| Delhi | DEL | VIDP | No visual relationship at all |
| Tokyo Haneda | HND | RJTT | RJ = Japan |
| Frankfurt | FRA | EDDF | ED = Germany |
| Sydney | SYD | YSSY | Y = Australia |
| Toronto Pearson | YYZ | CYYZ | C = Canada |
Note the two patterns worth remembering: in the United States the ICAO code is usually K plus the IATA code, and in Canada it is usually C plus the IATA code. Everywhere else, assume no relationship — DEL and VIDP is the normal case, not the exception.
Airlines have both kinds of code too
The same split applies to carriers, which is why a flight number can look different in different places.
- IATA airline codes are two characters:
BA,AA,EK,6E. This is what appears on your ticket, so your flight number isBA212. - ICAO airline codes are three letters:
BAW,AAL,UAE,IGO. These are used in flight plans and are what you hear as a callsign —BAW212is spoken as “Speedbird 212”.
So the same flight is BA212 to you and BAW212 to a controller. If you ever see a four-character-looking flight identifier that does not match your ticket, this is usually why. For the practical side of using the number you were given, see how to check flight status by flight number.
Why your boarding pass shows one and a flight plan the other
It comes down to what each system needs to be good at.
Passenger systems need brevity and uniqueness across commercial destinations. Three characters fit on a bag tag, print on a small ticket stub, and read clearly on a departure board at a distance. There are only a few thousand airports with scheduled service, so three letters is enough, and IATA has assigned them incrementally since the 1930s — which is why they are inconsistent.
Operational systems need a global, unambiguous, structured namespace. Air traffic control has to reference every airfield in the world, including grass strips, military bases, and heliports that no airline serves. Three letters cannot cover that, and a code with no geographic logic would be a safety problem in a flight plan. Four characters with a region prefix solve both.
There is also a hard collision problem. IATA codes are unique among themselves and ICAO codes are unique among themselves, but the two sets overlap in confusing ways. YYZ is IATA for Toronto and part of ICAO CYYZ. Mixing the systems in one field is a genuine hazard, which is why operational documents use ICAO exclusively.
Where you will see each one
IATA (three letters): your booking confirmation, boarding pass, bag tag, the departure board, the search box on any booking site, and the route line on a status card.
ICAO (four letters): flight plans, aeronautical charts, official notices to airmen, air traffic control documents, and the airport detail pages of tools built for enthusiasts.
Flight Tracker shows both codes on each airport page, alongside timezone, coordinates, elevation, and contact details, across 4,000+ airports. If you are searching for an airport and the three-letter code is not working, try the four-letter one — or the airport’s name, which is often the fastest route in.
And if a code lookup is standing between you and a decision about a real journey, confirm the airport and terminal with your airline. Large cities have several airports, and LGW is not LHR.
Check your flight
Flight Tracker looks up status, gate, terminal, and baggage by flight number or route. Free on Android.
Get Flight Tracker