I usually have a couple of these kinds of evergreen posts ready to go in case I’m not able to finish a more newsy post in time, so, here we are…. I’ll have the currently-unfinished post ready for Monday.
Anyone who has traveled knows that airports are assigned codes to identify them in the global aviation system, but there are actually three different kinds of codes, and you’ll find them all used in different ways. For those who work in the industry this may seem obvious, but for others, consider this a semi-useful primer.
The airport codes that most people know are those under the International Air Transport Association (IATA) system. Those are the 3 letter codes that sometimes make sense and other times… well, it takes a little more digging to understand the meaning. The airport codes are often so ingrained in the local lexicon that they effectively replace the airport’s name. Think of places like LAX. Those who live in the area never refer to the airport as anything else.
That’s not to say that airport codes always take over in local language. In some cases, cities ignore the codes and take on their own jargon. Look at Kansas City. The IATA airport code may be MCI, but if you ask any local, it is KCI.
IATA codes are pretty commonly known, but there are two other kinds of codes. First is the FAA code. These are the codes assigned by the government for US airports, and they are almost always the same as the IATA code… but not always.
The first outlier that always come to mind for me is Phoenix-Mesa Gateway airport which is served almost exclusively by Allegiant. It has an IATA code of AZA but its FAA code is IWA. But for the most part in other cities, these tend to match.
While these IATA codes are pretty popular and well known outside of aviation circles, the same can’t be said for the ICAO code. ICAO is the International Civil Aviation Organization, the agency that’s part of the United Nations which focuses on aviation.
You may hear someone call it LAX all day long, but chances are if you don’t work in the operation, you haven’t heard anyone call it KLAX. That’s probably even true if you work at an airline and aren’t in the operation. But in the operational world, these four-letter ICAO codes rule the day.
ICAO codes are great in that they are highly structured and give a great deal of geographical information based on the letters being used. They are always four letters instead of three.
Each geographic region is assigned a first letter. In some places this aligns with a specific country. Canada, for example, starts with C. The Kontinental US starts with K (obviously). This makes it easy for the US to simply use the FAA code after the K for most airports. (Yes, that means Phoenix-Mesa Gateway is KIWA and not KAZA.)
Other areas have the first letter as the main geographic region and then the second letter is the country. For example, E is northern Europe and L is southern Europe. EG is Great Britain which falls in northern Europe while France is LF since it apparently falls in the southern region. Here’s a map that shows the details:

These are all set up by ICAO, but then the two letters that end the code are assigned by the locals.
The French have generally done a good job. When you see LFPG, that’s southern Europe, France, Paris, de Gaulle. LeBourget is LFPB and Orly is LFPO. Not all French airports are perfect fits — Marseille is LFML — but so be it.
The Germans, to the surprise of nobody, have quite an organized system. ED (D is for Deutschland) is the identifier that starts civilian airports. The biggest airports then have another D in the third position, presumably for uh, Double Deutschland? Then the last position is the city. Berlin is EDDB, Frankfurt is EDDF, Hamburg is EDDH, Cologne is EDDK… wait, wait? Don’t worry, that city is spelled Köln in German. There’s also EDDM for Munich and so on.
The British haven’t gone with as sensible a system. Instead they’ve just assigned the biggest airports with the same repeating two last letters after EG. Belfast is EGAA, Birmingham EGBB, Manchester EGCC, Cardiff EGFF, Gatwick EGKK, Heathrow EGLL, and Stansted EGSS. There doesn’t seem to be much rhyme or reason.
The codes rarely spell out anything easy to remember, though Amsterdam as EHAM is a pretty easy one for pork lovers. (And yes, I guess it’s H for Holland instead of N for Netherlands.)
Africa has a remarkable number of prefixes, with G being western West Africa, D being eastern West Africa, H being East Africa, and F being central and southern Africa. South Africa starts with FA, and it seems like a real missed opportunity to assign the country’s least favorite airport the currently-vacant code FART. Ngala Airfield, however, has a pretty killer one… FANG. Gabon has a winner with FOOL. That’s Libreville. While Uganda has HUNK for Nakasongola.
Meanwhile, Mexico and Central America along with parts of the Caribbean start with M while South America is S.
There are definitely some quirks out there. Hawaiʻi and Alaska both being in the Pacific region start with P instead of the US’s K. And in those regions, they can’t use the FAA code everywhere, because the second letter is the first letter of the state, H and A respectively. For Honolulu, that means it keeps its FAA code as PHNL. But Kona is PHKO and Līhuʻe is PHLI. Kahului? That’s another pork lover’s favorite as PHOG.
Interestingly enough, Alaska has a similar system where the largest airport’s FAA code fits the bill nicely. Anchorage is PANC, but Juneau is PAJN, and Barrow is PABR, which always makes me think of Pabst Blue Ribbon.
Having four letters means that there are a lot more possible combinations, but unlike other airport codes, numbers can’t be used. The ICAO code is usually reserved more for airports that have a place in international aviation, so the smallest airports may not have one at all.
Some letters are off limits, or at least, mostly off limits. As a fun quirk, there are no codes beginning with J… except for one. Good ole’ JZRO is Jezero Crater on Mars. Who said the UN doesn’t have a sense of humor?