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
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.
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:
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:
- Frankfurt: FRA
- Munich: MUC
- Düsseldorf: DUS
- Hamburg: HAM
- Berlin Brandenburg: BER
- Leipzig/Halle: LEJ
- Hanover: HAJ
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.
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?
- 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.
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.
Read more in Airlines & alliances
- Air Berlin: the rise and bankruptcy of Germany’s second-largest airline
- Fleet planning: how airlines manage orders, options, delivery slots and retirement
- Major airline bankruptcies in Europe: from Swissair to Alitalia
- Airline callsigns and their history: Speedbird, Shamrock, Dynasty and more
- Multi-brand strategies: why airline groups create subsidiaries and platforms
- AOC and operating license: what legally makes an airline an airline
Related airports & manufacturers
Airports, manufacturers, airline groups and alliances – who is behind them and what you should know as a spotter.
Frankfurt Airport
Germany’s largest airport and Lufthansa’s home hub: four runways, two passenger terminals and a traffic mix from regional jets to widebody freighters.
AirportMunich Airport
Germany’s second-largest airport and Lufthansa’s second hub: two parallel 4,000-meter runways in the Erdinger Moos, a Terminal 2 just for Lufthansa and Star Alliance – and, with the visitors’ park, one of the most convenient spotting places in the country.
AirportZurich Airport
Switzerland’s largest airport has three runways in three directions, an operating concept that changes with the time of day and the weather, and an official network of spotting points around the fence. If you know the concepts, you almost always stand in the right place in Zurich.
AllianceStar Alliance
The aviation alliance founded in 1997 around Lufthansa, United and Air Canada – headquartered in Frankfurt am Main and with its own special alliance livery.
Related spotting locations
Specific vantage points with the runway configuration, light times, coordinates and an honest take on whether the trip is worth it.
Zeppelinheim viewing platform at Frankfurt Airport
The classic among Frankfurt’s spotting spots: from the platform at the motorway bridge near Zeppelinheim, most landings in a west wind glide in onto the south runway – free, public and a quick S-Bahn ride from Frankfurt Hauptbahnhof.
Spotting hillMunich Airport visitors’ hill (Besucherhügel)
The best-known vantage point at Lufthansa’s Munich hub: from the visitors’ hill in the Besucherpark you look out over the airport grounds from above – with its own S-Bahn stop right next door.
Observation deckObservation Deck B at Zurich Airport
On the roof of Dock B you stand in the middle of the action at Switzerland’s largest airport: SWISS long-haul, taxiing traffic right below you and heavy takeoffs on the longest runway. Probably Switzerland’s best-known legal spotting place – with security screening, admission and clear rules.
You might also like
Callsign vs. flight number: what’s the difference?
Your ticket says LH 1, the live map shows DLH1, and on the radio you hear “Lufthansa One.” How flight numbers and callsigns relate, why some callsigns carry letters and what that means for your search at the spot.
Registrations & tail numbersAircraft registrations explained: how to read any tail number
Country prefix, hyphen, registration mark: what an aircraft registration reveals, how the German D scheme works and why the registration matters more to spotters than the flight number.
Spot planning: wind, light & runwaysReading METAR and TAF: aviation weather decoded for plane spotters
One line of abbreviations tells you which runway is in use, whether haze will ruin your photos and when a thunderstorm is coming. Here is how to read METAR and TAF group by group – with examples and a spotter’s translation.



