The Quiet Genius of ICAO Airport Codes


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:

Brhaspati at the English Wikipedia, CC BY-SA 3.0, via Wikimedia Commons

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?

Get Cranky in Your Inbox!

The airline industry moves fast. Sign up and get every Cranky post in your inbox for free.

46 comments on “The Quiet Genius of ICAO Airport Codes

  1. Interesting, I wondered about the four letter codes & why they existed. Can you explain the two letter airline codes as well? Some are obvious like UA & AA, but there are some wild ones out there like B6, G4 & WN.

    1. SEAN – Those are selected by the airlines. It’s just a matter of what’s left over by the time they get started.

  2. I live in Manchester UK.Our connection with Madrid and theirs with us always puts a smile on my face………..MAD-MAN…………MAN-MAD
    And you have a great one in the US.Reno-Vegas…………..FAT-LAS

    1. FAT is Fresno, the Cleveland of the West. If you’re looking for a guaranteed complimentary upgrade with even low level status, that’s your town. Really missed opportunity for a FAT-BOI routing.

      1. SUX is another good one, Sioux Gateway Airport in Sioux City, Iowa. After fighting the FAA on that for a while, they decided to just embrace it, to the point that they sell merch with the airport code on it.

        The airport codes for Charlotte (CLT) and Pensacola (PNS) can also be included to make potentially very juvenile (and NSFW, if said aloud) routings, but that’s as far as I’ll go with that.

        1. There will probably never be nonstop service between Helsinki and New Haven, but flying HVN-HEL would be be fun.

      2. Cleveland? C’mon, that’s harsh. I lived there for HS and college, and we never set a river on fire. Or unleash the low-key horror of Dennis Kucinich on the world.

        Another good one would be if there were flights from St. Pete/Clearwater to Fresno: PIE-FAT.

        1. I used to support Dennis Kucinich, until I realized socialism didn’t work. I do respect his honesty and willingness to take stands, even when they are the wrong stands.
          Cleveland has gotten better over the years I’ve heard.

      3. Guaranteed upgrade? Have you been to FAT recently? At least on UA and AA connections through DEN or DFW you’ll be lucky if you’re number 29 on the upgrade list as a Silver (UA) or Gold (AA).

        I’ve always felt it’s a missed opportunity to call our bus system Fresno Area Rapid Transit (FART) instead of Fresno Area Express (FAX). I feel more of us would take the bus if we could say “I’ll fart right over!”

        1. Definitely a missed naming opportunity – even back when it was just “Fresno Transit” we used to say “FART” would be a better alternative.

          And while there may be no guaranteed upgrades, at least there are no Brazilias to SFO or LAX for connections there any more (although I admit I miss the little guys, flew them several times on FAT-LAX and SFO-ACV back in the day.)

            1. Okay, I could never ride that without giggling.

              The system in Sarasota County, Florida is “SCAT”. They messed up the marketing by not making the buses brown.

        2. The transit agency that serves KCVG is TANK, Transit Authority of Northern Kentucky. Sadly they’re not equipped with Gatling guns to launch whirled peas at people who won’t let a bus back into traffic.

  3. Thanks, Cranky.

    A few days ago I was asked a question by a (non-avgeek) friend in Kansas City, who was trying to figure out why MCI didn’t have the airport code of KCI, as that’s what the locals refer to it. Best I could come up with was that the 4-letter international airport codes in the US start with a K, maybe as a result of the conventions for early radio callsigns [not sure how true that is, my memory may be off], so there aren’t many (any?) 3-letter airport codes that also start with a K in the US.

    Your explanation is much better and more thorough. (Quick aside: Digging further, I see that MCI was probably originally chosen because the airport used to be called “Mid Continent International Airport”.)

    I assume you also have another “evergreen” post lined up on tail numbers, and the prefixes and suffixes (often 2 letters relating to the airline, for commercial aircraft). Sometimes those can be a bit (ahem) “interesting” and when viewed from the prespective of those who speak other languages; there is/was German-registered plane with a registration ending in ” -CKS” that would be obscene in English.

    1. I once went on a business trip to visit Sprint headquarters in Overland Park, Kansas. Massive campus, in a suburb of Kansas City. And I wondered if it annoyed Sprint employees to fly in/out of an airport named the same as a major competitor.

      1. Haha, yes. Similarly, I always like how NYC’s airport (JFK) is named for Boston’s native son.

        Also, as mentioned in the post, the ICAO airport code for Heathrow is EGLL, which I would pronounce as “Eagle”… Just a coincidence, but not very British sounding.

        1. There was a British airline named British Eagle, flew from 1949 to 1968, was known as Cunard Eagle for a while. They heavily used Bristol Brittanias later in life, I saw advertising posters on display at IWM Duxford (their Brittania is in Monarch livery, though.) I always liked the look of the Brittania, too bad it didn’t get to market sooner before it was overtaken by the pure jets.

    2. My understanding is that K and W were reserved for the FCC for radio call signs, while N was reserved for the Navy. Those restrictions don’t appear to apply to AK/HI.

  4. I’ve always wondered how tiny Concord-Padgett ended up with the grandiose “USA” code. Does anyone know?

  5. Surprisingly, the Bahamas have a pretty well organized system too. The first letter is the northern Caribbean (M), the next is the country (Y), and the last two is the island it’s on, followed by the actual airport. So MYNN is Nassau (on the island of New Providence). MYAM is Marsh Harbor (on Abaco island) and so forth.

  6. Leave it to imperialist earthlings to assert jurisdiction over Mars’ airport naming conventions.

  7. The FAA also governs PG (Guam+CNMI), PT (Palau+FSM), PK (RMI), PW (just Wake), PM (just Midway), TJ (PR), TI (VI), NS (shared with Ind Samoa).

    NI is assigned to NZ-affiliated Niue, and its sole airport’s IATA code is IUE, and ICAO code? NIUE.

          1. Would ZLV be something like the NYC for the greater NY area even though there’s only one main airport in Vegas?

            1. Dan – Those aren’t official codes, but anyone can make up a code to use for metro areas. I seem to recall QLA and QSF being used previously by someone. But there is no other airport with commercial service in Las Vegas. I don’t know

  8. Hi. Z is the indentifier for air route traffic control centers – and there is not a”Las Vegas Center”. ZLA – Los Angeles, ZME – Memphis, ZMA – Miami etc etc.

    1. You wouldn’t happen to be Mel Bakersfeld’s son, would you? (Mel was the GM of Lincoln Int’l Airport–aka MSP–in the early ’70s.)

  9. Canadian airports with a radio and or weather station at their location had a ‘Y’ in their code i.e. CYVR – Vancouver.
    This is a very interesting article

  10. The one that always made little sense to me was BQK for Brunswick, Georgia. There is no Q in the name. Delta Connection has flown from BQK to ATL for years.

  11. If I remember correctly, thee British ones are based on how they were set up reporting to each other as military bases.

    Stansted has only become a major airport in the last 30 years but it was prominent as a military field. So EGSS is Stansted-Stansted then Norwich is EGSH for Stansted-Horsham St Faiths.
    Belfast reflects Aldergrove as the military base so Belfast City is Aldergrove Aldergrove. Heathrow obviously London London.

  12. You also have some anomalys between airport codes in Canada

    Kangirsuk is IATA YKG and ICAO CYAS

    The neighbouring community of Kangiqsuaq (Wakeham Bay) took the ICAO CYKG

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Cranky Flier