What Airport Codes Actually Mean: A Traveler's Guide to IATA, ICAO, and the

What Airport Codes Actually Mean: A Traveler's Guide to IATA, ICAO, and the Three Letters That Decide Your Trip

What do LAX, ORD, and MCO have in common? They’re all airport codes that can lead to unexpected detours if you’re not careful. Dive into the fascinating world of airport codes, their historical origins, and how a simple oversight can change your travel plans in an instant. Don’t let a mix-up ruin your trip—learn the secrets behind the codes today!

Washington Post
Washington Post
12 min read

A friend of mine once flew to the wrong country. He had booked a flight to San José, the capital of Costa Rica, and ended up at San José International in California. The fare was suspiciously cheap, the layover was awkward, and he didn't notice anything was off until the safety announcement mentioned Silicon Valley. Two airports, two cities with the same name, two completely different three-letter codes. He had been looking at the city name. He should have been looking at the code.

This is the kind of mistake that happens more often than people admit. Airport codes are the silent language of air travel. They're printed on your boarding pass, stuck on your luggage tag, repeated by the gate agent, and embedded in every booking confirmation you've ever received. Most travelers glance at them without thinking. The ones who pay attention save themselves a lot of trouble.

This guide is for the second group, or for anyone who'd like to join them. We're going to walk through what these codes actually are, why they exist, where they come from, and how to use them so you never end up in the wrong San José.

Two systems, one airport

Every commercial airport in the world has at least two identifier codes attached to it. They look similar but they serve different audiences and they don't always agree.

The first is the IATA code, which is what you see on your ticket. It's three letters long, assigned by the International Air Transport Association, and designed for passenger-facing use. JFK. LHR. CDG. NRT. These are the codes you book with, the codes printed on your bag tag, the codes airline apps display when they tell you your gate has changed.

The second is the ICAO code, four letters long, issued by the International Civil Aviation Organization. This one is for the people who actually fly the planes and run the systems behind them. Pilots file flight plans with ICAO codes. Air traffic controllers route aircraft with them. Aviation databases, weather briefings, navigation charts, and operational paperwork all run on ICAO. As a passenger, you almost never see them. As a pilot, you almost never use anything else.

The two systems coexist because they were never meant to do the same job. IATA is about commerce. ICAO is about operations. Once you understand that split, the rest of the system stops feeling arbitrary.

You can dig deeper into how IATA standardizes airline industry communication on the official IATA website, where the association also documents the broader infrastructure of codes, settlement systems, and traffic data that keeps global aviation running.

How the three-letter code gets assigned (and why some are weird)

When you look at a code like LAX or DXB, you can usually guess the airport. Los Angeles. Dubai. Easy. But for every clean abbreviation there's another one that makes no sense at first glance, and tracing the logic back is where this stuff actually gets interesting.

In the early days of commercial aviation, airports borrowed identifiers from the National Weather Service, which used two-letter codes for U.S. cities. When air travel grew, two letters weren't enough. The industry tacked on a third letter, often an X, just to fill the slot. That's where Los Angeles got LAX. Phoenix got PHX. Portland got PDX. The X means nothing. It's a placeholder that got grandfathered in and never went away.

Other codes carry the residue of names that no longer exist. Chicago O'Hare's code is ORD because the airport was originally called Orchard Field. Orlando International is MCO because it used to be McCoy Air Force Base. New Orleans Louis Armstrong International is MSY because the field was once known as Moisant Stock Yards, named after a stunt pilot who died there in 1910. The codes outlived the names they came from. Travelers who spot them are essentially reading historical artifacts.

A few more deserve mention because they trip people up:

  • EWR for Newark Liberty, because the obvious code (NEW) was already taken by an airport in New Orleans, which has since been renamed.
  • YYZ for Toronto Pearson, because Canadian airport codes start with Y as a holdover from old railway telegraph conventions, and YZ was the local station identifier.
  • IAD for Washington Dulles, which was assigned in reverse to avoid confusion with DIA (Denver) or DCA (Washington Reagan).
  • MEX for Mexico City, which seems straightforward until you notice that most cities don't get to use their own country code.

These quirks are why two travelers booking flights to the same city can end up in different airports. If you fly to "Washington," you might mean DCA (Reagan), IAD (Dulles), or BWI (Baltimore-Washington, which is technically Maryland but counted as Washington-area for many search engines). The city name is fuzzy. The code is precise.

The geography hidden in ICAO codes

ICAO codes look like alphabet soup but they're more structured than IATA. The first letter (and sometimes the first two) tells you the region. The remaining letters narrow it down to the specific airport.

A few examples make the pattern clear:

  • K prefix is the contiguous United States. KJFK is JFK in New York. KLAX is Los Angeles.
  • C prefix is Canada. CYYZ is Toronto Pearson, CYUL is Montreal.
  • EG prefix is the United Kingdom. EGLL is London Heathrow, EGKK is London Gatwick, EGCC is Manchester.
  • LF prefix is France. LFPG is Paris Charles de Gaulle.
  • VT prefix is Thailand. VTBS is Bangkok Suvarnabhumi, VTSP is Phuket International.
  • LT prefix is Türkiye. LTFM is Istanbul Airport, LTBA was the old Atatürk Airport before it was decommissioned for commercial flights.
  • RJ prefix is Japan. RJTT is Tokyo Haneda, RJAA is Tokyo Narita.

Once you know the regional logic, ICAO codes become readable. You can look at a flight plan, see "VTBS to RJTT," and know immediately that it's a Bangkok-to-Tokyo Haneda route without consulting anything.

The system is maintained globally by the International Civil Aviation Organization, a UN specialized agency that has overseen civil aviation standards since 1944. ICAO publishes the master document that assigns these prefixes by country and region, and updates it as airports open, close, or get reclassified.

When codes change (and what happens when they do)

Airport codes feel permanent but they're not. Codes get retired when airports close. New codes get issued when airports open. Occasionally a code gets transferred when an airport is renamed or relocated.

Istanbul is a recent and useful example. For decades, anyone flying to Istanbul landed at Atatürk Airport, code IST, ICAO LTBA. In 2019, commercial operations shifted to a brand new facility much further from the city center. The new airport inherited the IATA code IST so passengers wouldn't have to relearn anything. Behind the scenes, however, the ICAO code changed to LTFM. Pilots, flight planners, and operational systems updated. Passengers never noticed. This is the system working as intended: passenger-facing codes stay stable for booking continuity, while operational codes track the actual physical infrastructure.

Berlin did something similar when Brandenburg Airport finally opened in 2020. Tegel and Schönefeld were both shuttered, and BER consolidated everything under a single new IATA code. ICAO followed with EDDB. The disruption to passengers was minimal because the codes carried the transition.

This kind of churn is why no traveler should rely on memory for codes they haven't used recently. The world's airport database is a moving target. Roughly two dozen new airports open every year, dozens more get expanded or relocated, and the underlying identifiers shift along with them.

Why this matters for booking and packing

The practical use of all this is straightforward. When you book a flight, do not trust the city name in the search bar. Trust the three letters next to the time. The booking engine is happy to sell you a ticket to the wrong airport if you don't notice the difference, and the airline will not refund you because you didn't read carefully.

A few habits that protect you:

Check the IATA code on your booking confirmation against the code printed on your boarding pass. They should match. If they don't, something has gone wrong, possibly a schedule change you missed.

When you have a layover, look up the connecting airport's IATA code separately. Some cities have multiple airports and the connecting flight might depart from a different one than where you arrive. Tokyo (NRT vs HND), London (LHR, LGW, STN, LCY, LTN), New York (JFK, LGA, EWR), and São Paulo (GRU vs CGH) are common traps.

Before international trips, verify your destination's full code. This is especially important for cities that share names. Birmingham, England (BHX) is not Birmingham, Alabama (BHM). Springfield exists in roughly fifteen U.S. states and several other countries. The code disambiguates.

Check ground transport options against the actual airport, not the city name. Many travelers book hotel transfers based on a generic city booking, only to find out the hotel sent a car to the wrong terminal because the booking didn't specify. A quick code check on a tool like the global airport database at abouts.co will tell you exactly which airport you're dealing with, including coordinates, elevation, time zone, current weather, and distance to nearby cities. That's the kind of detail that makes the difference between a smooth arrival and a frantic phone call from the wrong terminal.

A few small details that frequent flyers learn the hard way

Codes carry information beyond identification. If you pay attention, they'll tell you things the airline won't.

The bag tag attached to your suitcase shows the destination IATA code in large letters. If the agent prints "BKK" on a bag for someone flying to Phuket (HKT), the bag is going to the wrong city. This happens occasionally on multi-leg itineraries when a connection city gets confused with the final destination. A two-second glance at the tag while it's still in your hand can save you a day of waiting at baggage services.

Boarding passes for connecting flights show your final destination's code in smaller print near the flight information. If your itinerary involves a change of airline at a hub, that small code is the only thing on the pass that confirms your route is intact. Worth checking.

Some loyalty programs use IATA codes for award routing rules. If you're trying to book a stopover or open-jaw award, knowing whether your departure city counts as a single code or multiple (like the New York or London cluster) can affect the pricing. Frequent flyers who learn this earn substantially more value out of the same miles.

Pilots refer to airports by ICAO codes in conversation, even when talking with passengers. If you ever fly on a small charter or a flight where the captain is chatty over the intercom, you'll occasionally hear the four-letter version. It's not jargon. It's just the version they use professionally.

The takeaway

Air travel runs on a parallel set of codes that were never designed to be glamorous. They were designed to remove ambiguity. Once you understand that, the whole system makes sense, and you stop being one of the travelers who books San José and lands in California by mistake.

Three letters for booking. Four letters for flying. Pay attention to the first if you're a passenger. Pay attention to both if you're curious. And when something doesn't look right on your itinerary, check the code before you check anything else. The code is the thing that doesn't lie.

More from Washington Post

View all →

Similar Reads

Browse topics →

More in Travel

Browse all in Travel →

Discussion (0 comments)

0 comments

No comments yet. Be the first!