Where Airport Codes Come From in the First Place

In the early days of commercial aviation, pilots used two-letter codes to identify destinations based on abbreviations the National Weather Service used, such as NY for New York and LA for Los Angeles. The aviation industry quickly outgrew the number of possible two-letter combinations, so IATA eventually came up with three-letter codes to solve this problem.
The primary rule was to reflect the location name. When a new airport requests a code, IATA prioritizes combinations that match the city or airport name. The codes reflect the specific moment in aviation history when each airport entered the global system.
MCO: Orlando’s Code Belongs to a Military Base That No Longer Exists

Orlando International Airport uses the IATA code MCO because it was originally named after McCoy Air Force Base, which occupied the site until 1975. The facility opened in 1942 as Pinecastle Army Airfield, created to support pilot training in World War II.
When the base transitioned to civilian use, the existing identifier MCO was retained for continuity in air traffic systems. Even after the military left, airlines and regulators kept the code to prevent disruptions in scheduling, ticketing, and navigation databases.
The base was closed at the end of the war in 1975 and later sold, for the sum of $1, to the City of Orlando. Sections of McCoy Air Force Base are now used for both Orlando International Airport and Orlando Executive Airport. Once assigned, airport codes are typically permanent to avoid disruption in global systems, with exceptions occurring only under extreme circumstances such as complete relocation or political change.
ORD: Chicago O’Hare’s Ghost Town Neighbor

In the 1940s, Orchard Place was a small community just west of Chicago and the site of a military airport. The airfield was also a manufacturing facility for Douglas Aircraft, and Orchard Place Airport was given the code ORD.
In 1949, the airport was renamed after WWII pilot and Medal of Honor recipient Edward Henry “Butch” O’Hare. However, no one bothered changing O’Hare’s original designation, leaving it with ORD. Today, ORD is one of the busiest airports in the world, yet its code still quietly honors a farming community that has long since disappeared.
PEK: Beijing’s Code Reflects a Name the West Used to Use

PEK represents Beijing Capital International Airport, though the origin is not obvious to most travelers. Beijing was originally spelled “Peking” when translated into English, but after the establishment of the People’s Republic of China in 1949, the government adopted a different transliteration method for all place names using the Latin alphabet.
In Chinese, Peking did not actually change its name. Instead, a new way to translate Chinese turned “Peking” into “Beijing.” The airport code simply never caught up with the updated spelling, and it remains a quiet artifact of that linguistic shift.
SGN: Ho Chi Minh City Still Flies Under Saigon’s Name

Ho Chi Minh City goes by SGN, after Saigon, the city’s former name. Tan Son Nhat International Airport, with the IATA code SGN, serves Ho Chi Minh City, the most populous city in Vietnam. The city was renamed after the fall of Saigon in 1975, but the airport code never followed.
These codes are usually holdovers from former city names, often colonial ones. SGN is a particularly vivid example because the political history behind the name change is so significant, yet the old name still appears on boarding passes every single day.
BOM: Mumbai Still Carries Bombay in the Sky

Mumbai was named Bombay during the British reign in India, and since the first airport opened during that time, it adopted BOM as its code, one it holds today. The city officially changed its name to Mumbai in 1995, but the aviation system kept BOM firmly in place.
Many of these name changes are related to different ways of non-Roman names being translated into English, like most of the Indian ones: Bombay and Mumbai, Madras and Chennai, Calcutta and Kolkata. Each of those cities carries a different linguistic history, and each airport code preserves a layer of it.
YUL: Why Canadian Airport Codes Start with Y

Montreal’s main airport is YUL, following the Canadian convention where “Y” prefixes designate airports, combined with the city’s historical code. Canadian airport codes originate from their weather reporting station designations. The Y prefix was simply the letter available to distinguish Canadian stations from American ones in the original two-letter weather system.
Many Canadians know that YYC refers to Calgary and that YVR is Vancouver, even without knowing the history behind those codes. The system feels intuitive to locals now, even though it was built on a meteorological convention rather than any deliberate aviation logic.
The 200-Nautical-Mile Rule Nobody Talks About

To avoid confusion, IATA does not want any airport within 200 nautical miles of another airport sharing the same code. This rule alone pushes many airports away from their obvious three-letter abbreviation, because a closer city already claimed it.
When the obvious three-letter abbreviation is already taken, airports receive codes drawn from alternative spellings, historical names, or the airport’s own name rather than the city. There are only 17,576 possible three-letter combinations in the alphabet, so the pressure to get creative is very real.
MSY: New Orleans and a Stock Yard Nobody Remembers

New Orleans’ airport code MSY got its code from the Moisant Stock Yards. The land where the airport now sits was once used for livestock trading, and the initials of that facility stuck when the airfield was developed. Few passengers queuing for their Mardi Gras flights have any idea they’re referencing a cattle yard from the early twentieth century.
This is actually one of the more charming quirks of the IATA system. Three letters on a boarding pass represent an entire system built over decades, shaped by history, military bases, naming conventions, and geography rules that prevent airports from sharing confusingly similar codes.
When Mismatched Codes Cause Real Travel Problems

Common sources of confusion include cities with multiple airports, where searching “London” returns results for six airports, as well as airports whose codes don’t match the current city name and airports that share similar codes. The confusion is not just trivia. It has practical consequences for travelers booking flights.
People somewhat routinely book tickets to Sydney, Canada, with the code YQY, while trying to travel to Sydney, Australia, which uses SYD. A connection that requires traveling from JFK to EWR can result in missed flights if passengers are unaware of the airport change. Knowing what those three letters actually mean is more useful than most travelers realize.
The Quiet Logic Behind the Apparent Chaos

It’s tempting to look at codes like MCO, ORD, and SGN and assume the system is broken. It isn’t. These codes sometimes seem arbitrary, but they aren’t. They reflect the specific moment in aviation history when each airport entered the global system.
The codes that confuse travelers almost always have one of two explanations: a historical name or a rule that blocked the obvious choice. Once you know the backstory, each one starts to feel less like a mistake and more like a small preserved piece of the past.
Final Thoughts

Every boarding pass is, in a quiet way, a history document. The three letters next to your departure city might honor a military base that closed decades ago, preserve the name of a colonial power that no longer governs that land, or reference a farming community swallowed up by urban growth. None of it is accidental.
Each code reflects the specific moment in aviation history when each airport entered the global system. That moment gets locked in, sometimes forever. The world changes, cities rename themselves, empires fall, and military bases become theme park gateways. The codes, quietly, remember all of it.
AI Disclaimer: This article was created with the assistance of AI tools and reviewed by a human editor.