Somewhere over the Atlantic tonight, a pilot will report position to Shanwick Oceanic and describe a destination called EGLL. The 300 passengers behind the cockpit door have never heard of EGLL. Their boarding passes say LHR, their bags are tagged LHR, and the airport itself says Heathrow in letters two stories tall. All three names point to the same 12 square kilometers of west London. Aviation runs on this strange bilingualism: every airport on Earth carries at least two codes, issued by two different organizations, for two different audiences, and the systems only occasionally agree with each other.

Once you learn to read both alphabets, airport codes stop being random trivia and become a compressed history of aviation, full of dead railroads, vanished orchards and Cold War geography.

Two systems, two jobs

The three-letter codes belong to IATA, the International Air Transport Association, which is the airlines' trade body. IATA codes are commercial plumbing: they drive ticketing, reservations, baggage sorting and the departure boards. There are only 17,576 possible three-letter combinations, and tens of thousands of location codes have been assigned over the decades, so the system is crowded and full of historical leftovers. IATA publishes and licenses these identifiers through its official airline and location coding directory.

The four-letter codes belong to ICAO, the International Civil Aviation Organization, a United Nations agency. ICAO codes are operational plumbing: flight plans, air traffic control, weather reports and navigation databases. They are published in ICAO Document 7910, Location Indicators, and unlike IATA codes they are systematic. The first letter identifies a region of the world, the second usually a country, and the remaining letters the specific airport. Four letters give ICAO more than 450,000 combinations, enough to cover every airstrip, heliport and weather station with room to spare.

An IATA code is a brand; an ICAO code is an address. One sells you the ticket, the other lands the plane.

Where the three-letter codes came from

In the 1930s, American airlines borrowed the two-letter station codes of the National Weather Service and the railroads. When traffic outgrew two letters, many cities simply added an X: Los Angeles' LA became LAX, Portland's PD became PDX, Phoenix's PH became PHX. Nothing about the X means anything. It was padding, and it stuck for ninety years.

Other codes fossilized older names. Chicago O'Hare is ORD because the site was once Orchard Field; the airport was renamed in 1949 for naval aviator Butch O'Hare, but millions of bag tags already said ORD. Orlando is MCO after McCoy Air Force Base. New Orleans is MSY, from the Moisant Stock Yards, named for a stunt pilot who crashed there in 1910. Canada's airports almost all begin with Y, a relic of a coding scheme for radio and weather stations, which is why Toronto is the famously opaque YYZ and Vancouver YVR.

A few rules keep order. In the United States, the Navy long held codes beginning with N, which is why Newark is EWR rather than NEW. The Federal Communications Commission's claim on K and W call letters historically steered airports away from some combinations too. And some codes are simply marketing prizes: when a city lands a memorable one, like FUN for Funafuti in Tuvalu, it puts it on souvenirs.

Did you know?

Sioux City, Iowa spent years asking regulators to change its unfortunate IATA code, SUX. After being offered replacements it liked even less, the city gave up and embraced it. The airport now sells merchandise reading Fly SUX, proof that in aviation, notoriety beats anonymity.

The ICAO grid: A map hidden in four letters

ICAO codes reward pattern-spotting. The first letter carves the world into regions: K is the contiguous United States, C is Canada, E is northern Europe, L is southern Europe, R is parts of East Asia, O is much of the Middle East, Y is Australia, S is South America, F is southern Africa. The second letter usually narrows to a country: EG is the United Kingdom, ED is Germany, LF is France, RJ is Japan, OM is the United Arab Emirates.

That is why American codes look like someone just stapled a K onto the IATA code: Atlanta's ATL becomes KATL, and JFK becomes KJFK. The United States had mature two- and three-letter identifiers before the international system arrived, so the K prefix was grafted on top. Most of the world went the other way and built four-letter codes with no relation to the commercial ones. Heathrow is EGLL: E for northern Europe, G for Great Britain, LL for the London airfield itself. Dubai is OMDB, Haneda is RJTT, Sydney is YSSY.

AirportIATAICAOHow the ICAO code decodes
Atlanta Hartsfield-JacksonATLKATLK (contiguous USA) + ATL
London HeathrowLHREGLLE (N. Europe) + G (UK) + LL
Dubai InternationalDXBOMDBO (Mid-East region) + M (UAE) + DB
Tokyo HanedaHNDRJTTR (E. Asia) + J (Japan) + TT (Tokyo)
Sydney Kingsford SmithSYDYSSYY (Australia) + SSY
Toronto PearsonYYZCYYZC (Canada) + YYZ
Frankfurt am MainFRAEDDFE + D (Germany) + DF

The system has quirks of its own. Germany's civil airports use EDDx for the majors, a pattern left over from postwar reorganization. Antarctica shares letters with neighboring regions. And when countries change, codes follow: Johannesburg's identifier moved from FAJS to FAOR when the airport was renamed O.R. Tambo International, forcing a global update of navigation databases.

When codes confuse: Near-misses of the alphabet

Two parallel systems create real-world traps. Travelers have famously booked flights to Sydney, Nova Scotia instead of Sydney, Australia, and to Grenada in the Caribbean (GND) when they meant Granada in Spain (GRX). Melbourne, Florida (MLB) receives a steady trickle of passengers who wanted Melbourne, Australia (MEL). Airlines and booking sites now add country flags and full city names precisely because three letters carry no context.

Pilots face subtler versions of the same problem. A flight plan filed for the wrong four-letter code can send an aircraft to the wrong continent in the computer long before anyone notices in the cockpit; crews cross-check ICAO codes against city names and coordinates for exactly this reason. The stakes explain why ICAO codes are managed centrally by a UN agency rather than left to national habit, a discipline described in the organization's own overview of its standards work.

There is also a third code family many people mistake for these two. The FAA assigns its own identifiers to thousands of small US airfields that lack IATA codes entirely, listed in the FAA's aeronautical information services. A grass strip in Kansas may have an FAA identifier and an ICAO code but no IATA code, because no airline will ever sell a ticket there.

Reading codes on a flight tracker

Flight tracking is where the two alphabets visibly collide, and knowing both makes you dramatically faster at it. Airline websites and airport boards speak IATA: DL 295 from ATL to HND. Air traffic control and the data feeding tracking sites speak ICAO: DAL295 from KATL to RJTT. The same translation applies to airline names, which is why the callsign on your screen rarely matches the ticket, a puzzle we untangle in our guide to flight numbers versus callsigns. Aircraft carry their own 24-bit ICAO identity too, explained in our piece on Mode S and ICAO addresses.

On Flight-Tracker.net we index every field by its familiar IATA code, so Atlanta lives at /airports/atl, Heathrow at /airports/lhr, Dubai at /airports/dxb and Haneda at /airports/hnd, with the ICAO code displayed alongside. Browse the full airport directory and you can watch the regional prefixes snap into focus as you scroll: every K a piece of America, every EG a corner of Britain. Once the grid clicks, you can place an unfamiliar airport on the globe from its code alone, before you even look it up, and our tour of how airports actually operate shows you what all that coded infrastructure is doing on the ground. The codes even shape rankings talk: when analysts discuss the world's busiest hubs, ATL, DXB and HND function as shorthand no full city name can match.

Key takeaways

  • Every significant airport has two codes: a three-letter IATA code for tickets and baggage, and a four-letter ICAO code for pilots and controllers.
  • IATA codes are historical accidents; ICAO codes are systematic, with the first letters encoding region and country.
  • US airports usually just add K to their IATA code (ATL becomes KATL); most of the world uses unrelated pairs like LHR and EGLL.
  • Odd codes preserve lost history: ORD was Orchard Field, MSY a stockyard, and Canada's Y prefix a radio-station relic.
  • Lookalike codes cause real booking mistakes, from Sydney to Sydney and Granada to Grenada.
  • Flight trackers translate constantly between the two systems; learning both makes the map far easier to read.

Frequently asked questions

Why do US airport codes start with K in flight plans?

The contiguous United States was assigned the ICAO prefix K, and existing American three-letter identifiers were simply appended to it. That is why ATL becomes KATL and JFK becomes KJFK. Alaska and Hawaii use the Pacific prefix P instead, so Honolulu is PHNL.

Do airports ever change their codes?

Rarely, because the ripple effects run through every reservation system and navigation database on Earth. It does happen: Johannesburg moved from FAJS to FAOR after a renaming, and new airports receive fresh codes while the old field's code is often retired with it.

What is the difference between an IATA code and an FAA identifier?

IATA codes exist for commercial aviation, so only airports with airline interest tend to have them. The FAA assigns its own three- or four-character identifiers to every US landing facility, including thousands of small strips that will never see a scheduled flight.

Why is Toronto YYZ?

Canada built its codes around a Y prefix inherited from weather and radio station identifiers, then attached two letters tied to the station or city. The results are cryptic but consistent: YYZ is Toronto Pearson, YVR is Vancouver, YUL is Montreal.

Which code should I use to search on a flight tracker?

Either usually works, but the three-letter IATA code is the everyday standard for airport pages and route searches, while callsigns and flight-plan data lean on ICAO codes. Our airport pages accept the IATA form, like /airports/hnd for Haneda.

Two alphabets, one planet. The next time your bag tag says one thing and the pilot says another, you will know they are both right.