Airport codes are three or four-letter codes used to uniquely identify airports, cities and airport locations around the world. The best-known are IATA codes, made up of three letters and used on tickets, boarding passes, baggage tags and booking systems. Alongside these are ICAO codes, made up of four letters and mainly used in flight operations, flight plans and air traffic control.
So, when you read FCO, MXP, CDG, LHR or NRT, you are not looking at a random abbreviation: you are reading a code designed to make communication in air transport clearer and more standardised.
Behind a simple airport code, there may be geography, history, former names, cities that have changed, airports that no longer exist and even a few linguistic curiosities. Some airport abbreviations are immediately understandable, while others preserve historical traces or seem far from intuitive until you discover where they come from.
With this context in mind, let’s explore what airport codes really mean, who assigns them, the difference between an IATA code and an ICAO code, and why understanding these codes is important, especially when planning a tailor-made charter flight.
What are airport codes?

Airport codes are identification codes used to recognise airports and locations within the international air transport system. They make communication faster, more precise and more standardised between airlines, airports, booking systems, logistics operators, air traffic controllers and passengers.
Think of a route shown as MXP-FCO: in just six letters, two airports, two cities, a route and an entire flight operation are identified.
Airport codes are useful because they prevent ambiguity. Many cities around the world have similar names, some locations have more than one airport and, in other cases, a single airport may serve an entire metropolitan area. Without shared codes, the risk of confusion would be very high.
| Element | Function |
|---|---|
| Airport name | Identifies the airport in a descriptive way |
| IATA code | Identifies the airport or city in commercial systems |
| ICAO code | Identifies the airport in aeronautical operations |
| City served | Indicates the relevant geographical area |
| Country | Places the airport within the international system |
What is interesting is that not all airport abbreviations convey the same type of information. Some derive directly from the city’s name, others from the official airport’s name, while others preserve historical traces of names that are no longer in use.
IATA codes: the airport codes you see on tickets and baggage tags

IATA codes are probably the most familiar airport codes for travellers. They consist of three letters and are assigned by the International Air Transport Association, the international association representing the air transport industry. IATA also provides official tools to search for the codes assigned to airports and airlines.
These are the codes you find:
- On your boarding pass
- On your airline ticket
- On baggage tags
- In booking engines
- In travel agency systems
- On departure and arrival boards
The airport’s IATA code is therefore mainly used in the commercial side of travel. It is what makes a destination immediately recognisable, both for operators and passengers.
Here are a few examples:
| IATA code | Airport | City |
|---|---|---|
| FCO | Rome Fiumicino | Rome |
| CIA | Rome Ciampino | Rome |
| MXP | Milan Malpensa | Milan |
| LIN | Milan Linate | Milan |
| BGY | Bergamo Orio al Serio | Bergamo/Milan |
| VCE | Venice Marco Polo | Venice |
| NAP | Naples Capodichino | Naples |
| CTA | Catania Fontanarossa | Catania |
In many cases, the IATA code is easy to interpret. NAP recalls Naples, VCE Venice, and CTA Catania. In other cases, however, the logic is less immediate: FCO comes from Fiumicino, while BGY identifies Bergamo, although the airport is often associated with the Milan area.
This is where airport abbreviations become more than simple short forms: they do not just indicate a place, but help distinguish airports, areas served and different travel systems.
ICAO codes: the airport codes used in flight operations

Alongside IATA codes, there are ICAO codes, which are less familiar to passengers but essential to the aviation operational side. They consist of four letters and are used in areas such as flight plans, air traffic control, aeronautical meteorology and technical documentation.
The ICAO, International Civil Aviation Organisation, publishes its location indicators in the official document Doc 7910 – Location Indicators, which is considered the reference for ICAO airport codes.
Unlike IATA codes, ICAO codes follow a more structured geographical logic. In Europe, for example, many codes begin with the letter “L”. For Italy, the prefix “LI” is used, followed by two additional letters identifying the specific airport.
| Airport | IATA code | ICAO code |
|---|---|---|
| Rome Fiumicino | FCO | LIRF |
| Rome Ciampino | CIA | LIRA |
| Milan Malpensa | MXP | LIMC |
| Milan Linate | LIN | LIML |
| Bergamo Orio al Serio | BGY | LIME |
| Venice Marco Polo | VCE | LIPZ |
| Naples Capodichino | NAP | LIRN |
| Catania Fontanarossa | CTA | LICC |
The airport ICAO code is therefore less visible to travellers, but it is essential for those who plan, authorise, monitor and manage flights. If the IATA code speaks to the passenger, the ICAO code speaks to the operational machinery of aviation.
Put simply: IATA is the language of visible travel; ICAO is the language of operational flight.
IATA code and ICAO code: what is the difference?

The difference between an IATA code and an ICAO code mainly concerns their function, format and field of use. Both identify airports and locations, but they do so for different audiences.
| Aspect | IATA code | ICAO code |
|---|---|---|
| Number of letters | 3 | 4 |
| Main use | Tickets, baggage, bookings, commercial systems | Flight plans, air traffic control, aeronautical operations |
| Target audience | Passengers, agencies, airlines, travel systems | Pilots, operators, air traffic controllers, and aviation authorities |
| Rome Fiumicino example | FCO | LIRF |
| Milan Malpensa example | MXP | LIMC |
| Logic | Più commerciale e comunicativa | Più tecnica e geografica |
| Visibility for passengers | High | Low |
A simple example is Rome Fiumicino: for passengers, it is FCO, while for aeronautical operations, it is LIRF. The same applies to Milan Malpensa, which is MXP in commercial systems and LIMC in operational contexts.
This distinction explains why the same airport can be identified in different ways depending on the context. If you are looking at your boarding pass, you will almost always read the IATA code. If, on the other hand, a flight plan is being prepared, the feasibility of a route is being checked, or an aeronautical operation is being coordinated, the ICAO code becomes the more precise reference.
How airport codes are created

Airport codes are not all created in the same way. Some are immediately understandable; others come from former names; others are the result of historical, geographical, or availability-related constraints.
In general, an airport code may derive from:
| Code’s origin | Example | Explanation |
|---|---|---|
| City name | NAP | Naples |
| Airport’s name | FCO | Fiumicino |
| Geographical area served | GRU | São Paulo Guarulhos, an airport serving the São Paulo area |
| Historical airport’s name | ORD | Chicago O’Hare, originally known as Orchard Field |
| Person’s name | CDG | Paris Charles de Gaulle |
| Adaptation for uniqueness | DXB | Dubai International, a code that has become highly recognisable, partly thanks to the “X” |
| Città with more than one airport | HND / NRT | Tokyo Haneda and Tokyo Narita, two different airports serving the same large urban area |
Many IATA codes are based on the first letters of the city or airport, but this correspondence is not always possible. Codes must be unique and cannot create ambiguity with other airports already registered. This is why, when a combination is already taken or when the airport’s history preserves an older name, the code may appear less intuitive.
This is the case with ORD, which today identifies Chicago O’Hare but derives from Orchard Field, the former name of the airport area. The same applies to HND and NRT, which help distinguish two airports serving the same urban area: Tokyo Haneda and Tokyo Narita.
An airport abbreviation, therefore, can be a geographical reference, a historical trace or a practical tool to avoid confusion.
Italian airport codes: useful examples to know

Italian airport codes are an excellent starting point for understanding how airport codes work in practice. Some are intuitive, while others require a little more interpretation.
| City / Area | Airport | IATA code | ICAO code |
|---|---|---|---|
| Rome | Fiumicino Leonardo da Vinci | FCO | LIRF |
| Rome | Ciampino | CIA | LIRA |
| Milan | Malpensa | MXP | LIMC |
| Milan | Linate | LIN | LIML |
| Bergamo | Orio al Serio | BGY | LIME |
| Venice | Marco Polo | VCE | LIPZ |
| Naples | Capodichino | NAP | LIRN |
| Catania | Fontanarossa | CTA | LICC |
| Palermo | Falcone Borsellino | PMO | LICJ |
| Bologna | Guglielmo Marconi | BLQ | LIPE |
| Turin | Caselle | TRN | LIMF |
| Bari | Karol Wojtyła | BRI | LIBD |
| Cagliari | Elmas | CAG | LIEE |
| Olbia | Costa Smeralda | OLB | LIEO |
Some codes are very clear, while others follow a less immediate logic. PMO identifies Palermo, BLQ Bologna, while MXP has almost become synonymous with Malpensa.
These codes are useful not only for frequent flyers, but also for those planning group travel, corporate events, sports team transfers or charter flights. Knowing how to distinguish between airports serving the same area can make a significant difference in planning.
Think of a city served by more than one airport: choosing the right airport is not just a geographical matter. It can affect transfer times, operational availability, ground services, costs and group management.
Milan is a very clear example: Malpensa, Linate and Bergamo are not identical alternatives. Distance from the city centre, operational availability, ground services and access times all vary. The same applies to Rome, where Fiumicino and Ciampino may meet different needs depending on the type of flight and the journey’s plan.
Airport codes around the world: stories and curiosities

Airport codes are created to be functional, but over time, they have also become a source of curiosity. Some are so well known that they almost identify a city. Others seem unusual until you discover the story behind them.
| Code | Airport | Curiosity |
|---|---|---|
| NRT | Tokyo Narita | Identifies one of Tokyo’s airports, although it does not contain the letters of the city |
| GRU | São Paulo Guarulhos | Refers to Guarulhos Airport, which serves São Paulo |
| JFK | New York John F. Kennedy | Named after the US president |
| EZE | CBuenos Aires Ezeiza | Comes from the Ezeiza area |
| LHR | London Heathrow | Refers to Heathrow, not directly to London |
| CDG | Paris Charles de Gaulle | Dedicated to Charles de Gaulle |
| KIX | Osaka Kansai | The X makes the code less intuitive: it identifies Kansai International Airport, built on an artificial island in Osaka Bay |
| AMS | Amsterdam Schiphol | Comes from Amsterdam |
| DXB | Dubai International | An iconic code associated with one of the world’s busiest hubs |
| ORD | Chicago O’Hare | Comes from the old name Orchard Field |
| LAX | Los Angeles | The X was added as codes evolved into three-letter formats |
| YYZ | Toronto Pearson | Part of the distinctive logic behind Canadian airport codes |
One of the most fascinating aspects is that not all airport abbreviations are designed to be “beautiful” or immediately understandable. First and foremost, they must be unique, recognisable and functional.
These examples clearly show why airport codes should not always be read as direct abbreviations of the city. Sometimes they indicate the name of the airport, sometimes an old place name, a nearby location or a technical choice needed to keep the code unique.
That is where the code becomes a story: a few letters capable of condensing geography, history and everyday use.
Berlin airport codes: when a code tells a city’s story

Berlin is a good example of how an airport code can also tell the city’s story. For decades, Berlin’s air traffic was distributed across airports with very different identities: Tempelhof, Tegel and Schönefeld.
Tempelhof, code THF, remains closely linked to the memory of the Berlin Airlift. Tegel, code TXL, was for many years one of the symbols of West Berlin’s air connections. Schönefeld, code SXF, long served the eastern side of the city. With the opening of Berlin Brandenburg, commercial traffic was gradually concentrated under the code BER.
| Aeroporto | Codice IATA | Stato attuale |
|---|---|---|
| Berlin Tempelhof | THF | Closed |
| Berlin Tegel | TXL | Closed to commercial traffic |
| Berlin Schönefeld | SXF | Integrated to the BER system |
| Berlin Brandenburg | BER | Main commercial airport |
In this case, the codes do not simply identify airports: they tell the story of a city moving from division to a reunited airport system.
Why airport codes matter in charter flights

In scheduled air travel, passengers almost always choose from airports already offered by an airline. In the world of charter flights, however, choosing the right airport can become an integral part of the travel strategy.
The difference between two airports serving the same area can affect ground transfers, slot availability, handling services, aircraft compatibility, privacy and operational costs. For a corporate group, a sports team or an incentive trip, landing at the airport closest to the final destination can simplify the entire programme.
For those planning a tailor-made flight, airport codes help assess very concrete aspects of the operation, such as:
- Departure airport, because choosing the most suitable airport can reduce ground transfer times and simplify the group’s arrival.
- Arrival airport, because landing closer to the final destination can make the whole journey smoother, especially for events, sports team transfers or group travel.
- Aircraft compatibility, because not every airport is suitable for every type of aircraft: runway length, procedures and infrastructure can all affect flight feasibility.
- Handling services, because reception, ground assistance, baggage management and passenger support can vary significantly from one airport to another.
- Slots and authorisations, because some airports require specific checks, operational availability and longer coordination times.
- Privacy and group management, because dedicated terminals, separate passenger flows and reserved access can improve the overall experience and make operations more discreet.
- Operational costs, because airport charges, handling, requested services and airport conditions can all affect the final quotation.
Think of Milan: Malpensa, Linate and Bergamo are not identical alternatives. Or Rome, where Fiumicino and Ciampino may meet different needs. The same applies to cities such as Paris, London, Istanbul or Tokyo, where the airport choice can change access times, available services and travel management.
Simply indicating a city, therefore, is not always enough. It is necessary to understand which airport best meets the needs of the flight, the group and the final destination. Each airport has its own characteristics, different availability and a specific impact on the overall experience.
This applies to large cities served by multiple airports, but also to many destinations used for incentive travel, sports team transfers, charters for Tour Operators and private flights.
That is why, in tailor-made planning, choosing the airport is much more than a technical detail. It is a decision that can influence punctuality, comfort, operational smoothness and the perceived quality of the journey.
At Flyness, this means turning a code into a concrete assessment: which airport best serves the flight’s objective? Which one simplifies transfers? Which one ensures the best group management? Which one makes the journey more linear from start to finish?
An airport code is short. The assessment behind it is anything but.
From airport codes to choosing the right airport

Airport codes are small, essential and apparently simple. Yet they contain a whole world of geography, history, operations and precision.
Knowing the difference between IATA codes and ICAO codes helps you better understand the language of air travel: on one side, what passengers see; on the other, what allows the aeronautical system to operate with order and safety.
In charter flights, this knowledge becomes even more concrete. Choosing the right airport means optimising transfers, simplifying group management, assessing operational feasibility and creating a smoother travel experience.
Would you like to plan a tailor-made charter flight starting from the airport best suited to your needs? Contact the Flyness team.

