The Hidden Language of Airport Codes
When booking a flight online and asked to type in your point of origin and destination, you will be returned the full airport name along with a cryptic three-letter code. Savvy travelers will already know these codes off by heart and use them as shorthand when relaying their exploits (e.g. “I booked a flight to LAX”).
Airport codes are also cool ways to refer to your own city, a symbol of its place in a global network and a reminder that we are all connected to each other. They also evoke lasting memories of your favorite travel moments and inspire you to explore far-flung places.
To decode their meaning, it is helpful to know how these airport codes are assigned. Sometimes, the answer is obvious. In other cases, it takes some digging. But after a little learning, you’ll be talking about your upcoming trip from JFK to HKG via LHR like a pro!
Refer to the FAQ section below for the inside information.
Where do airport codes come from?
The airport code cabbage patch so to speak is the International Air Travel Association (IATA), a trade association for the world’s airlines. It was founded in Havana, Cuba in 1945 and is now headquartered in Montreal, Quebec, Canada. New airports submit an application to them for their unique codes. Their location identifier database ensures airlines around the world are on the same page when it comes to international traffic. Codes themselves date back to the 1930’s when they were administered at the state level, and the IATA inherited those already in place.
What is the difference between IATA and ICAO codes?
The International Civil Aviation Organization (ICAO) is a United Nations agency founded in 1947. Like the IATA, it is headquartered in Montreal. Among other things, it helped states set the rules and regulations pertaining to air navigation. They also assign 4-character location indicators to aerodromes to aid in air traffic control and flight planning. Based on their syntax (a top-down distribution by geography), these codes may resemble their IATA counterparts (e.g. CYYZ vs. YYZ for Toronto), or they may differ substantially (e.g. EGLL vs. LHR for London Heathrow). While not regularly encountered by the traveler, keen enthusiasts will spot them in various online flight tracking platforms.
ICAO location indicators are assigned to far more aerodromes than are IATA codes. The latter are typically given to those with some level of passenger service and are thus more meaningful to the general public. Hence, they are the ones published in airline timetables, used in ticketing, attached to reservations and printed on luggage tags for baggage routing.
And while we’re on the subject, in the U.S., the Federal Aviation Administration (FAA) also issues its own identifiers for aviation-related facilities to account for major and minor airfields. The naming scheme is co-ordinated with that of Transport Canada so as to avoid conflicts. Like ICAO codes, they are rarely faced by the commercial air traveler.
How are the codes chosen?
Often, the code will clearly reflect its location, either in applying a city’s first three letters (e.g. ATL for Atlanta, CLE for Cleveland, MIA for Miami) or combination of letters from the city’s name (e.g. CLT for Charlotte, HNL for Honolulu, PHL for Philadelphia).
Occasionally, the code will denote a larger area served by the facility (e.g. DFW for Dallas-Fort Worth, DTW for Detroit-Wayne County). Why not simply DAL and DET? Because those codes are still used by the old city airports, Love Field and Coleman A. Young Metropolitan Airport respectively, which remain in service today. The new airports superseded the old ones as the primary domestic and international hubs.
It isn't always that easy though. There are often other factors at play, many of which are outlined below.
How come there aren’t any U.S. airport codes beginning with ‘K’, ‘N’, ‘Q’ or ‘W’?
Airports broadcast their locations through radio transmissions emanating from non-directional beacons (NDBs). These radio signals work as navigational aids to guide aircraft along invisible highways through the sky. As a result, airport identifiers are incorporated into the same realm as other radio communications and are classified as such. For instance, ‘K’ and ‘W’ as first letters are reserved for radio and TV stations. That’s why call letters of U.S. radio and TV stations all begin, by-and-large, with ‘K’ (in the west) and ‘W’ (in the east). Similarly, ‘N’ was set aside for U.S. Navy airfields.
Therefore, some airports have needed some crafty workarounds to find codes that fit. You’ll see them in action when booking flights to Newark (EWR), Norfolk (ORF), Key West (EYW) or Wichita (ICT). Kansas City’s MCI comes from its original Mid-Continent International moniker, whereas MKC still applies to the city’s old downtown airport.
Since these letter restrictions apply only to the U.S., there are in fact airports around the world with ‘K’, ‘N’ and ‘W’ codes, including KUL (Kuala Lumpur), NRT (Tokyo Narita), and WAW (Warsaw).
Finally, ‘Q’ is reserved for international radio communications, so the restriction applies everywhere and not just in the U.S. Not many cities begin with the letter, but for the few that do, some minor tweaks are in order. Accordingly, a routing from Quetta, Pakistan to Quito, Ecuador takes you from UET to UIO.
What about the U.S. airport codes ending with an ‘X’?
If you’re thinking Los Angeles (LAX), Phoenix (PHX) and Portland (PDX), their airport codes derived from the two-letter weather station identifiers at each site. When it came time to expand the airport codes from two to three letters (increasing the possible combinations from 676 to 17,576), the simple solution was to add a placeholder letter in the form of an ‘X’.
As an aside, over 9,000 IATA codes have been assigned, so there is still room for growth.
Why do some airport codes seemingly have no relation to their cities?
There are several possibilities here, depending upon a range of sources.
Some airport codes stem from the person after whom the facility is named, like in Kahului, Maui (OGG – Bertram J. Hogg), New York City (LGA – Fiorello LaGuardia and JFK – John F. Kennedy), Spokane (GEG – Major Harold Geiger), Hartford (BDL – Lt. Eugene M. Bradley), Knoxville (TYS – Charles McGhee Tyson), Nashville (BNA – Col. Harry S. Berry), and Louisville (SDF – Dr. Elisha David Standiford). Of note, Bowman Field was Louisville’s first airport and still operates today as LOU. Orlando International Airport is a converted Air Force Base that had been named after Col. Michael Norman Wright McCoy and bears the code MCO.
Or the code reflects the airport site’s pre-construction life, as in Chicago (ORD – Orchard Field) and New Orleans (MSY – Moisant Stockyards).
It could also be indicative of the facility’s historical name, such as with CMH (Columbus Municipal Hangar), FAT (Fresno Air Terminal) and SMF (Sacramento Municipal Field).
Alternatively, the airport’s actual location may yield a clue. Cincinnati’s airport is situated across the Ohio River in Covington, Kentucky, hence CVG. Internationally, Jakarta’s CGK is located in the community of Cengkareng (the more user-friendly JKT was assigned to the now-closed Kemayoran Airport and now applies as Jakarta’s metro code). In a similar vein, Stockholm’s ARN comes from Arlanda—a reference to its site in the parish of Husby-Ärlinghundra.
And it could also be a matter of convenience. In the U.S., the FAA prohibits similar codes in close proximity to (wisely) avoid confusion. When Dulles International Airport opened outside Washington, D.C. in 1962, it was originally given the code DIA. However, in the days of handwritten baggage tags, the middle ‘I’ was sometimes interpreted as a ‘C’ and bags were sent to nearby National Airport (DCA). Therefore, DIA became IAD.
Likewise, when the old Houston International Airport (HOU) was joined by the new Houston Intercontinental Airport, the latter was given the differentiated code IAH.
Finally, sometimes it’s like a Scrabble game and you have to play the letters you’re dealt. When the airport in Malaga, Spain applied for its code, it ended up with the unusual-at-first-glance AGP. While there are some theories as to the meaning, the answer is quite simple: all the good letter combinations were already taken and of the remainder, AGP was the best. No word on if they scored triple points.
Why do all Canadian airport codes begin with ‘Y’?
Canadian airport codes have their roots in the old telegraph stations operated by the railways. They were assigned two-letter identifiers so as to be easily tapped in Morse code. As radio communications evolved, these stations added beacons and specialized in weather reporting. In the 1930’s, a third letter was added to the classification: ‘U’ if the station was co-located with a NDB, ‘W’ (meaning ‘without’) if it was not co-located with an airport, and most pertinently, ‘Y’ (meaning ‘yes’) if it was. ‘Z’ was also used in case the three-letter identifier could be confused with one in the U.S.
Many of the two-letter codes are obvious abbreviations of their city names, such as for Vancouver (VR), Winnipeg (WG) and Ottawa (OW). Hence YVR, YWG and YOW.
Some codes are not so evident though, like with Toronto and Montreal. Toronto had several small airfields within the city, but eventually the facility in nearby Malton grew into the city’s main airport. Malton’s two-letter identifier was YZ and so today’s Lester B. Pearson International Airport appears on your luggage tags as YYZ. When Montreal’s St. Hubert Airport (YHU) reached its capacity, a site on the West Island was chosen for a new airport. It was assigned the identifier for the nearby radio beacon in Kirkland: UL. Thus, the Montreal-Dorval International Airport (as it was then known) became YUL.
Today, radio beacons still broadcast their two-letter identifiers in Morse code to serve as navigational aids. If you want “All Morse All the Time”, then with the right radio equipment, you can tune into Victoria’s YJ (200 kHz), Quebec City’s QB (230 kHz) or Gander’s QX (280 kHz), to name a few.
Finally, not all Canadian airport codes begin with ‘Y’. There are some exceptions, mainly for minor airfields. They include ZBF (Bathurst, New Brunswick), UZM (Hope Bay, Nunavut) and SUR (Summer Beaver, Ontario).
Conversely, there are airports outside Canada around the world with ‘Y’ codes, such as YAO (Yaounde, Cameroon), YUM (Yuma, Arizona), YAS (Yasawa Island, Fiji) and among others, an assortment of airfields in China.
What if the city builds a new airport?
If airports run out of room for expansion, which happens when the surrounding area has been built up, then planners start from scratch at a new site. Often, the new airport will become the city’s primary hub while the old airport will support general aviation or offer some lesser amount of passenger service. In this circumstance, the old airport retains its original code while the new one is assigned its own. Examples above include Dallas (DAL, DFW) and Detroit (DET, DTW). In Canada, Montreal’s Mirabel (YMX) was built for international traffic while Dorval (YUL) would focus on domestic routes (seeing as they were 50km apart, it made connections rather inconvenient). Projected traffic never materialized, and Mirabel was eventually mothballed (with operations returning to Dorval). The terminal was ultimately razed in 2016.
In other cases, the old code moves to the new airport. In Thailand, Bangkok’s BKK code was transferred from Don Mueang Airport to the new Suvarnabhumi Airport in 2006. Don Mueang remains operational (the original plan was to shut it down) and now bears the code DMK.
When the new airport immediately takes over from the old one, then the code can go along with it. Denver’s new International Airport relieved Stapleton Airport in 1995—all operations were moved from the old site to the new, including the DEN airport code. Similar overnight moves have taken place in Athens (ATH), Hong Kong (HKG) and Munich (MUC).
Some switches take a little bit longer. Austin’s AUS code migrated from Robert Mueller Municipal Airport to Bergstrom International Airport in 1999, but there was a short transition period during which Bergstrom was assigned BSM until the old airport closed.
Can an airport have its code changed?
The short answer is, not so easily. In aviation, where minor mistakes can lead to catastrophic consequences, it is beneficial not to surprise people with unexpected changes. There have been revisions in the U.S., such as IDL to JFK (Idlewild to John F. Kennedy in New York following the president’s assassination) and BAL to BWI (Baltimore to Baltimore-Washington). But the folks in Sioux City, Iowa after years of trying have learned to accept that SUX doesn’t blow.
Changes are commonly associated with the integration of new airports, such as with Bangkok above, or Osaka, Japan. There, when Kansai Airport (KIX) was built in 1994 (on an artificial island no less), it took over from the existing Itami Airport as the city’s main gateway. As a result, Itami’s code changed from OSA (now Osaka’s metropolitan identifier) to ITM. Got that?
What if the city changes names?
In recent years, several countries have revised the English transliterations of their names, or changed names altogether. But the old airport codes remain and offer hints of how they were once known.
Starting in China, the airport codes reflect the old system of Chinese postal romanization. The cities are known today by their pinyin translations. Therefore, when searching flights to Beijing, Guangzhou and Qingdao, you will encounter their codes of PEK (Peking), CAN (Canton), and TAO (Tsingtao) respectively.
Certain Indian cities have renamed themselves in the decades since the end of British rule. Notable among them are Mumbai (BOM for Bombay), Kolkata (CCU for Calcutta) and Chennai (MAA for Madras).
There are a host of changes in Russia, the former Soviet Union and its satellites, as cities reverted to their original names while keeping their existing codes. They include Nizhniy Novgorod (GOJ for Gorky), St. Petersburg (LED for Leningrad), Bishkek (FRU for Frunze), and Podgorica (TGD for Titograd).
As Indonesia exited its Dutch colonial days, a new spelling system was introduced for the Indonesian language. Thus, Banda Atjeh became Banda Aceh, and Djajapura was changed to Jayapura. However, their airport codes of BTJ and DJJ remain.
Other interesting examples dotting the world include Yangon (RGN for Rangoon), Ho Chi Minh City (SGN for Saigon) and way up in Greenland, Nuuk (GOH for Godthab).
When two or more cities have the same name, how are the codes assigned?
Once in a while, a story appears in the news about the poor passengers who scored a great deal to fly to Australia and ended up instead in Nova Scotia, Canada. Why? Because they picked the wrong Sydney, failing to distinguish between SYD (Australia) and YQY (Canada).
Codes are presumably assigned on a first-come first-served basis, and when conflicts arise, airports opt for the next-best letter combination conforming to local convention—a single letter could make all the difference. Therefore, paying attention to the codes ensures you are selecting the actual destination you have in mind.
So be sure not to mistake Birmingham, Alabama (BHM) from its UK counterpart (BHX). Same goes for San Jose (SJC = California, SJO = Costa Rica), Portland (PDX = Oregon, PWM = Maine), Kingston (KIN = Jamaica, YGK = Ontario), and Hamilton (YHM = Ontario, HLZ = New Zealand).
For cities with multiple airports, how are they grouped together?
When planning a trip to New York City, you may want to search flights into EWR, LGA and JFK. That’s where metropolitan (or metro for short) codes come into play. They aggregate the major airports in the area so you can research all flight options.
For example, in your search, entering ‘NYC’ should give you an option along the lines of ‘New York City – All Airports’.
The same applies in the U.S. to Chicago (CHI for ORD, MDW), Washington, D.C. (WAS for DCA, IAD, BWI). Internationally, Toronto has YTO, London LON, Paris PAR, Moscow MOW and Tokyo TYO. If you do use the metro codes, then do pay attention to which specific airport comes up in your search—there’s no point booking a Gatwick hotel when flying into Heathrow!
Are airport codes unique to airports?
Interestingly enough, no. IATA codes are also assigned to heliports (e.g. MCM for Monaco) and even train stations. In Europe, some routings include both air and rail segments. For passengers to be ticketed all the way through to their destinations, it simply makes sense for the codes to be consistent. In London, look for QQK (King’s Cross), QQP (Paddington) and QQW (Waterloo). In Paris, you’ll find XGB (Gare Montparnasse) and XPG (Gare de Lyon). In the U.S., you can ride from ZYP (New York’s Penn Station) to ZWU (Washington’s Union Station). And in Canada, taking the train from Toronto’s Union Station to Montreal’s Gare Centrale involves a routing from YBZ to YMY.
Even bus and ferry terminals are eligible for three-letter codes provided they are integrated with intermodal air travel.
Finally, is there an airport with the code FAQ?
Yes. You have to go all the way to the remote mining areas of Papua New Guinea to touch down in tiny Frieda River Airport, a.k.a. FAQ.
© Tom R. Ratcliffe – 2017