IATA and ICAO codes explained: decoding airports, airlines and aircraft types

Three letters on the boarding pass, four on the flight tracker: why airports, airlines and aircraft types each have two codes, how they are built and how to read them confidently while spotting.

Planetrack editorial teamPublished: October 15, 202613 min read

Key takeaways

  • Two systems, two purposes: The travel and airline world uses IATA codes for tickets, baggage and schedules. Air traffic control, weather services and flight planning use ICAO codes.
  • Airports: three versus four letters: Frankfurt is FRA at IATA and EDDF at ICAO. The first letters of the ICAO code reveal region and country.
  • Airlines: two versus three characters: Lufthansa is LH at IATA and DLH at ICAO; on the radio it identifies itself with the callsign LUFTHANSA.
  • Aircraft types also have two codes: The Boeing 777-300ER is 77W at IATA and B77W at ICAO – flight trackers mostly show the ICAO variant.
  • Codes outlive names: Many abbreviations come from former place names, fields or weather stations and were never updated – which is why they don’t always match today’s name.
Contents
  1. 1.IATA and ICAO: the short answer
  2. 2.IATA airport codes: three letters for the travel world
  3. 3.ICAO airport codes: four letters with a system
  4. 4.Airline codes: LH, DLH and the radio callsign
  5. 5.Aircraft types: 77W, B77W and the rest
  6. 6.Where you run into which code while spotting
  7. 7.Typical mix-ups
  8. 8.Conclusion

The baggage tag says FRA, the flight tracker says EDDF. The Lufthansa aircraft is LH on the display board and DLH on the live map. And the jet at the fence is sometimes a 77W, sometimes a B77W. Anyone who deals with aircraft constantly stumbles over two parallel code worlds. This guide shows you what separates IATA and ICAO codes, how they are built and where you run into which one while spotting – so you can immediately place airports, airlines and aircraft types in any app and any report.

Every sighting assigned cleanly

In Planetrack, you post sightings with aircraft type, registration, airline, airport and spot – so your hangar collection stays unambiguous and searchable. Planetrack is launching soon – join the waitlist and get early access.

Download Planetrack on the App Store Get Planetrack on Google Play

IATA and ICAO: the short answer

Behind the two abbreviations are two different organizations with different tasks. IATA (International Air Transport Association) is the worldwide association of airlines. Its codes are meant for the commercial side of aviation: ticket sales, baggage sorting, schedules, display boards. ICAO (International Civil Aviation Organization) is a specialized agency of the United Nations. Its codes serve flight operations: air traffic control, flight planning, weather reports, navigation.

The result is three pairs of codes that you run into again and again:

3 / 4Letters for airports at IATA / ICAO (FRA / EDDF)
2 / 3Characters for airlines at IATA / ICAO (LH / DLH)
3 / up to 4Characters for aircraft types at IATA / ICAO (77W / B77W)

Rule of thumb: everything you see as a passenger is usually IATA. Everything that controllers, pilots and weather services use is usually ICAO. Flight trackers and spotter apps mix both – which is why it pays to know both systems.

Area IATA ICAO Where you see it
Airport 3 letters, e.g. MUC 4 letters, e.g. EDDM IATA on boarding pass and baggage, ICAO in METAR and flight plan
Airline 2 characters, e.g. LX 3 letters, e.g. SWR IATA in the flight number, ICAO in the callsign
Aircraft type 3 characters, e.g. 359 up to 4 characters, e.g. A359 IATA in the airline’s schedule, ICAO on trackers

IATA airport codes: three letters for the travel world

IATA assigns its airport codes through its headquarters in Montreal under an association-internal resolution. Every code consists of three letters and is unique worldwide. A few examples from Germany:

Many codes are obvious, some seem puzzling. The reason: a code, once assigned, is rarely changed. It often stays even when the name of the airport or even the city changes. Chicago O’Hare is ORD because the site used to be called Orchard Field. You still fly to Ho Chi Minh City under SGN – after the old name Saigon. And Los Angeles became LAX because, when the codes were switched to three letters, an X was added as a filler to the older identifier LA.

A special case are Canadian airports, almost all of which begin with Y: Toronto YYZ, Vancouver YVR, Montreal YUL. The Y comes from an old identifier system for weather and radio stations in which it marked a site with an airfield.

City codes for metropolises with several airports

For cities with several airports, there are also metropolitan codes. LON combines the London airports, including Heathrow (LHR), Gatwick (LGW) and Stansted (STN). PAR stands for Paris with Charles de Gaulle (CDG) and Orly (ORY), NYC for New York with JFK, LaGuardia (LGA) and Newark (EWR). In booking systems, this lets you search for all airports of a city at the same time.

Berlin shows how this shifts over time: the former airports Tegel (TXL) and Tempelhof (THF) are closed, and Schönefeld (SXF) has been absorbed into the new airport. Today Berlin’s traffic runs under BER, the code of Berlin Brandenburg Airport.

One airport, three IATA codes

EuroAirport Basel-Mulhouse-Freiburg lies on French soil but has a Swiss and a French sector. It therefore carries several IATA codes: BSL, MLH and EAP. The ICAO code, on the other hand, is just one: LFSB – with the French prefix LF.

ICAO airport codes: four letters with a system

ICAO location indicators are built differently. They are published in ICAO Document 7910 (Location Indicators), and the individual states are involved in choosing the codes. Four letters, and the first ones tell you the region:

  • First letter: Large region. E stands for Northern and Central Europe, L for Southern Europe and parts of the Mediterranean, K for the USA excluding Alaska and Hawaii, C for Canada, Y for Australia, Z for China, among others.
  • Second letter: In Europe usually the country. ED stands for civil airfields in Germany, ET for military ones. LS is Switzerland, LO Austria, EH the Netherlands, EG the United Kingdom, LF France.
  • Third and fourth letters: The individual airfield. For the big German commercial airports, the code almost always begins with EDD.
Airport IATA ICAO
Frankfurt FRA EDDF
Munich MUC EDDM
Düsseldorf DUS EDDL
Hamburg HAM EDDH
Berlin Brandenburg BER EDDB
Cologne/Bonn CGN EDDK
Stuttgart STR EDDS
Leipzig/Halle LEJ EDDP
Hanover HAJ EDDV
Nuremberg NUE EDDN
Zurich ZRH LSZH
Vienna VIE LOWW
Amsterdam Schiphol AMS EHAM
London Heathrow LHR EGLL
Paris Charles de Gaulle CDG LFPG

In the USA and Canada, the system is particularly convenient: there the ICAO code often simply results from the IATA code with a region letter in front. JFK becomes KJFK, LAX becomes KLAX, YYZ becomes CYYZ. In Europe this trick doesn’t work – FRA and EDDF have nothing to do with each other.

The ICAO code matters to you mainly for weather reports. METAR and TAF are always retrieved with the four-letter location indicator. If you want to check in the morning whether it will be windy in Munich, you search for EDDM, not MUC. How to read the reports is explained in the guide Reading METAR and TAF.

Wind, weather and runways at a glance

Planetrack shows you weather, wind and active runways for every airport – without you having to work through abbreviations and raw data. Planetrack is launching soon – join the waitlist and get early access.

Download Planetrack on the App Store Get Planetrack on Google Play

Airline codes: LH, DLH and the radio callsign

Airlines also carry two codes. The IATA code has two characters – letters, digits or a mix – and forms the start of every flight number as it appears on tickets and display boards. The ICAO code consists of three letters and is tied to a radio callsign (telephony designator) with which the crew identifies itself on the radio. The ICAO designators are listed in ICAO Document 8585. ICAO introduced the three-letter system in the 1980s, while IATA stuck with its two-character codes.

Airline IATA ICAO Radio callsign
Lufthansa LH DLH LUFTHANSA
Eurowings EW EWG EUROWINGS
Condor DE CFG CONDOR
SWISS LX SWR SWISS
Austrian Airlines OS AUA AUSTRIAN
Emirates EK UAE EMIRATES
Ryanair FR RYR RYANAIR

For some airlines, the radio callsign has a history of its own. British Airways identifies itself as SPEEDBIRD, a legacy of its predecessor BOAC. For you at the radio scanner, that means: not every callsign sounds like the airline name. What the law says about listening in is in the article Listening to aviation radio: the legal situation.

Why IATA codes don’t always fit

Two-character codes are scarce. IATA therefore reassigns codes after a waiting period once an airline ceases operations, and it knows so-called controlled duplicates: two airlines whose route networks practically don’t overlap share the same code. On top of that, codes are usually kept when names change. That is why they often don’t match today’s name – Finnair, for example, flies under AY, Icelandair under FI. ICAO codes, on the other hand, are unique, which makes them more reliable for air traffic control and data analysis.

Flight number and callsign are connected

The departure board says LH 400, on the flight tracker you see DLH400. That is not a contradiction: flight trackers show the callsign that the transponder transmits, and it begins with the airline’s ICAO code. However, the flight identifier in the callsign isn’t always identical to the commercial flight number – some airlines use alphanumeric identifiers to avoid confusion on the radio. The details are explained in the article Callsign and flight number: the difference. With codeshare flights, several IATA flight numbers are also added for the same flight, for example within the Star Alliance – the callsign always stays that of the operating airline.

And the three-digit number on the ticket?

Besides the two-character code, every IATA airline has a three-digit numeric code, the so-called accounting or prefix code. It forms the first three digits of the ticket number. For United Airlines, for example, it is 016. For spotters it hardly matters, but it explains the string of numbers on your booking confirmation.

Aircraft types: 77W, B77W and the rest

At the fence it gets especially exciting for spotters, because aircraft types also have two codes. The ICAO type designator has two to four characters and is in ICAO Document 8643 (Aircraft Type Designators). It is used by air traffic control and in flight planning. The IATA type code has three characters, comes from airline scheduling and distinguishes types more by commercial features such as role or version.

Aircraft type IATA ICAO
Airbus A320neo 32N A20N
Airbus A321neo 32Q A21N
Airbus A350-900 359 A359
Airbus A350-1000 351 A35K
Airbus A380-800 388 A388
Airbus A220-300 223 BCS3
Boeing 737-800 738 B738
Boeing 737 MAX 8 7M8 B38M
Boeing 777-300ER 77W B77W
Boeing 787-9 789 B789
Boeing 747-8 74H (passenger) / 74N (freighter) B748
Embraer E190 E90 E190
Dash 8-400 DH4 DH8D
Bombardier CRJ900 CR9 CRJ9

A few patterns stand out. For Boeing, ICAO puts a B in front (B738, B789), for Airbus an A (A359, A388). Some codes are relics, though: the A220-300 runs at ICAO as BCS3, because it was developed as the Bombardier CSeries CS300. And on the 747-8 you see the different logic: IATA separates the passenger and freighter versions, ICAO doesn’t – its designators don’t distinguish between passenger or cargo use of the same type.

For you, that means: if a tracker shows “A20N,” you know an A320neo is coming and not a classic A320. How to tell the two apart at the fence even without a code is shown in the guides Identifying aircraft types for beginners and Telling Airbus and Boeing apart.

A type code is not a registration

B738 only tells you which type is flying – not which aircraft. A sighting only becomes unambiguous with the registration, such as D-AIMA or HB-JNA. How registrations are built is explained in Understanding aircraft registrations and Country prefixes of aircraft.

Where you run into which code while spotting

In everyday use, you constantly switch between both systems. This overview helps with sorting them:

1. Flight schedule and arrivals board

IATA codes are used here: airport (MUC), flight number (LH 2010) and sometimes the IATA type code. Good for seeing what is coming today.

2. Flight tracker and live map

Mostly ICAO: callsign (DLH2010), type designator (A20N) and often the ICAO airport code. Many apps show both side by side.

3. Weather and runway direction in use

METAR and TAF always run via the ICAO code. With EDDF you find Frankfurt’s wind – and thus the runway direction in use.

4. Radio and ADS-B

On the radio you hear the callsign (LUFTHANSA 2010); the ADS-B signal carries the ICAO callsign. More in the guide Flight tracking with ADS-B.

5. Your logbook

Here you decide for yourself. All that matters is to use one system consistently, so that sightings can be filtered cleanly later.

A made-up but typical example: you’re standing at the Zeppelinheim viewing platform and see “UAE45 – A388 – OMDB → EDDF” on the tracker. Translated, that means: Emirates (UAE), an Airbus A380-800 (A388), en route from Dubai (ICAO OMDB, IATA DXB) to Frankfurt (EDDF, FRA). If you can read the codes, you don’t need three clicks to know whether the wait is worth it.

Typical mix-ups

  • Mixing up airport and airline codes: LH is Lufthansa, LHR is Heathrow. Two characters usually mean airline, three mean airport – at ICAO accordingly three for airline, four for airport.
  • Treating the ICAO type code as the model name: A320 is the classic A320, A20N the A320neo. If you log both as “A320,” you lose information.
  • Guessing codes from the name: Hanover is HAJ, not HAN. Nuremberg is NUE, Leipzig/Halle LEJ. When in doubt, look it up instead of guessing.
  • Assuming ICAO and IATA are related: In North America often yes (KJFK/JFK), in Europe practically never (EDDM/MUC).
  • Equating flight number and callsign: The flight identifier in the callsign can differ from the flight number sold. For searching on the live map, the callsign is more reliable.

Can you read the codes confidently?

Check off what you know without looking it up – at the end you’ll see where you stand.

  • I know that EDDF and FRA are the same airport.
  • I can tell from ED, LS and LO whether an airport is in Germany, Switzerland or Austria.
  • I know that DLH on the tracker means Lufthansa.
  • I can tell A20N and A320 apart.
  • I know that 77W and B77W mean the same type.
  • I look up weather reports with the ICAO code.

Type, airline or registration in your sights

With sighting alerts, Planetrack notifies you when a registration, an aircraft type, an airline or a special livery you’re watching heads for your airport. Planetrack is launching soon – join the waitlist and get early access.

Download Planetrack on the App Store Get Planetrack on Google Play

Conclusion

IATA and ICAO codes aren’t competing systems but two tools for different jobs. IATA serves the travel world with short, memorable codes: three letters for airports, two characters for airlines, three for aircraft types. ICAO serves flight operations with systematic, unambiguous designators: four letters for airports with a regional prefix, three for airlines together with a radio callsign and up to four for aircraft types. If you can read both, you find flights faster, understand weather reports and document sightings unambiguously. A good way in: learn the codes of your home airport and of the five airlines you see there most often – the rest comes with every spotting day. If you’re just starting out, the guide Plane spotting for beginners also helps.

In short

IATA is for tickets, baggage and schedules, ICAO for air traffic control, weather and trackers. Airports: FRA versus EDDF. Airlines: LH versus DLH. Types: 77W versus B77W. Remember the prefixes ED, LS and LO, use the ICAO code for weather and additionally note the registration for every sighting – then it is unambiguous.

Summary

  • IATA assigns three-letter airport codes and two-character airline codes for commercial traffic; ICAO assigns four-letter location indicators and three-letter airline designators for flight operations.
  • ICAO airport codes are built regionally: E stands for Northern Europe, L for Southern Europe, ED for civil airfields in Germany, LS for Switzerland, LO for Austria.
  • For aircraft types, there are IATA codes from airline scheduling and ICAO type designators from Document 8643, which show up in flight plans and on trackers.
  • If you can read both systems, you find flights faster on the live map, understand METAR reports and document sightings unambiguously.

Frequently asked questions

What is the difference between an IATA and an ICAO code?

IATA codes come from the airline association IATA and serve commercial traffic: tickets, baggage tags, display boards and schedules. ICAO codes come from the UN aviation organization ICAO and are used in operations: by air traffic control, weather services and in flight plans for traffic control. Airports have three (IATA) or four (ICAO) letters, airlines two or three characters.

What are the IATA and ICAO codes for Frankfurt?

Frankfurt Airport has the IATA code FRA and the ICAO code EDDF. FRA is on your baggage tag; EDDF is in weather reports and on many flight trackers.

Why do German airport codes begin with ED?

The ICAO code is built regionally. The first letter stands for a large region – E for Northern Europe – and the second for the country. ED marks civil airfields in Germany, while military airfields carry the prefix ET. The big commercial airports almost all start with EDD, such as EDDM for Munich or EDDH for Hamburg.

What does DLH mean on the flight tracker?

DLH is the ICAO code of Lufthansa. Flight trackers often show the callsign from the transponder, which is made up of the ICAO airline code and a flight identifier. Flight LH 400 becomes DLH400 there, for example. On the radio, DLH is pronounced LUFTHANSA.

Why is Los Angeles LAX?

The airport used to have the two-letter identifier LA. When the codes were switched to three letters, an X was added that has no meaning of its own.

Why do Canadian airports begin with Y?

That goes back to an old identifier system for weather and radio stations in which a Y indicated that an airfield was located at the site. The following letters often come from old radio or railway identifiers. That’s why Toronto is YYZ, Vancouver YVR and Montreal YUL.

What is the difference between 77W and B77W?

Both refer to the Boeing 777-300ER. 77W is the IATA type code, as it appears in schedules and booking systems. B77W is the ICAO type designator from Document 8643, which appears in air traffic control flight plans and on most flight trackers.

Can an IATA code be reassigned?

Yes. IATA airline codes become free again after an airline ceases operations and can later go to another airline. There are also so-called controlled duplicates, in which two airlines with clearly separate networks share a code. ICAO airline codes, on the other hand, are unique.

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 Airlines & alliances →

Read more in Airlines & alliances

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