Skip to content

The airport codes that make no sense

5 min readThe Orbit team
aviationtravel-culturegeography

Most airport codes are boring in the correct way. Amsterdam is AMS. Madrid is MAD. Singapore is SIN. You could guess them.

Then there is Chicago O'Hare, which is ORD, and Orlando, which is MCO, and every single airport in Canada, which begins with a Y for no reason anyone can immediately explain.

The three-letter codes are administered by IATA, and there are around nine thousand of them in active use. They are not an abbreviation scheme. They are a hundred years of sediment.

The rule that explains half of it: codes outlive things

An IATA code is attached to an airport, and it is deliberately hard to change, because changing one means changing every booking system, baggage tag, timetable and ticket that references it. So when the world moves, the code stays put.

ORD — Chicago O'Hare. The site was called Orchard Field, after the orchards it was built over, and it was an aircraft factory during the war. It got the code ORD from Orchard. It was renamed in 1949 after Edward O'Hare, a naval aviator. The name changed; the code did not, and several million people a year now fly through an airport named for a fighter pilot using a code that means "orchard".

MCO — Orlando. Formerly McCoy Air Force Base, named after a colonel who died in a crash there. The base closed. The code kept the colonel.

MSY — New Orleans. Moisant Stock Yards. It was built on a stockyard, on land where the aviator John Moisant had crashed and died.

BNA — Nashville. Berry Field, Nashville.

SDF — Louisville. Standiford Field.

IAD — Washington Dulles. This one was briefly DIA, which is what you would expect. It was reshuffled to IAD because DIA and DCA — Washington National, across the river — were being confused by people reading them quickly off a handwritten tag. The fix was to shuffle the letters rather than pick new ones.

Codes that outlived their cities

The same stubbornness applies when a city changes its name. The result is a small archive of former place names, still printed on every boarding pass:

CodeAirportWhat the code is short for
LEDSt PetersburgLeningrad
SGNHo Chi Minh CitySaigon
PEKBeijing CapitalPeking
CANGuangzhouCanton
BOMMumbaiBombay
CCUKolkataCalcutta
MAAChennaiMadras

Every one of these is a city that renamed itself and an airline industry that declined to follow. If you fly into St Petersburg, your bag goes to Leningrad.

The letters nobody could have

A good deal of the weirdness in North American codes comes from letters that were already spoken for when civil aviation got there.

  • N was reserved for the US Navy.
  • K and W were taken by broadcast radio station call signs — W east of the Mississippi, K west of it.
  • Q was largely spoken for by international radio codes.

Which is why Newark is not NEW. With N unavailable, it took the E, W and R out of Newark and became EWR. The airport is not hiding anything; it just couldn't have its own first letter.

Why Canada is all Ys

Toronto is YYZ. Vancouver is YVR. Montreal is YUL. Calgary is YYC. Every scheduled airport in the country begins with the same letter, which makes Canadian departure boards look like a typing error.

The usual explanation is that in the era when Canadian aerodromes were being given two-letter identifiers, the codes were prefixed with a letter indicating whether the location had a co-located radio station — Y for yes, and other letters for the cases where it didn't or the station was somewhere else. When the two-letter identifiers were extended to three, the prefix came along and never left.

That account is repeated everywhere and is genuinely difficult to verify in primary sources, so treat it as the standard explanation rather than a settled one. What is not in doubt is the outcome: Toronto's underlying identifier is YZ, and the Y in front of it is a piece of radio-era administration that outlived radio-era administration.

YYZ has had the odd afterlife. Rush, who are from Toronto, named a 1981 instrumental after it and built the opening rhythm out of the Morse code for Y–Y–Z, which is the only airport code with a time signature.

The X that means nothing at all

Los Angeles is LAX. Portland is PDX. Phoenix is PHX.

In the 1930s, US airports used two-letter identifiers inherited from the National Weather Service: Los Angeles was LA, Portland was PD, Phoenix was PH. When the system expanded to three letters to accommodate the growth in airports, the existing two-letter codes needed a third character, and a great many of them simply had an X bolted onto the end as a filler.

So the X in LAX means nothing. It is the typographic equivalent of a shrug, and it is now on the side of a building.

Codes that moved house

BKK belonged to Bangkok Don Mueang for decades. When Suvarnabhumi opened in 2006 and took over as the main international airport, it took BKK with it, and Don Mueang — the older airport, still very much operating — was left with DMK.

The code did not describe a piece of ground. It described whichever airport was doing the job.

Why any of this is useful

Mostly it isn't, which is part of the appeal. But there is one practical consequence: the code is the reliable identifier and the name is not.

City names change. Airports get renamed after politicians. Terminals move, airports move, and the marketing name on the website is often not the name in the timetable. The three letters are the thing that stays constant across forty years of tickets, which is exactly why a logbook should be built on them.

Orbit is. It ships the full IATA table — 8,801 airports — inside the app, and you can search it by code, by city or by airport name, offline, at 38,000 feet. Log a flight into LED and it knows you mean St Petersburg. Log one into ORD and it knows you mean Chicago, whatever happened to the orchards.


Related reading: counting countries: what actually counts and the best window seats in the world, by route.

Put your own flights on a globe.

Free for your first 15. Works offline, no account needed to start.

Download now