Flight Logic

Links marked * may earn us a commission at no extra cost to you. We do not provide financial advice. How we make money.

Learn aviation · Decoding your flight

Airport codes explained: why Heathrow is LHR and Toronto is YYZ

By Yuki Tanaka Updated 30 June 2026 7 min read
Quick Answer

Airports carry two codes: a three-letter IATA code used by passengers, tickets and departure boards (LHR, JFK, CDG), and a four-letter ICAO code used by pilots and air traffic control (EGLL, KJFK, LFPG). IATA codes usually echo the city or airport name, but weather-station history, naming conflicts and plain oddity explain famous exceptions like YYZ, ORD and MSY.

Two systems, two jobs

The code on your boarding pass and luggage tag is an IATA code — three letters assigned by the International Air Transport Association for commercial use: reservations, tickets, timetables and departure boards. LHR is London Heathrow, CDG is Paris Charles de Gaulle, JFK is New York's Kennedy airport.

The code on your boarding pass and luggage tag is an IATA code — three letters assigned by the International Air Transport Association for commercial use: reservations, tickets, timetables and departure boards. LHR is London Heathrow, CDG is Paris Charles de Gaulle, JFK is New York's Kennedy airport.

Pilots, dispatchers and air traffic control use ICAO codes — four letters assigned by the International Civil Aviation Organization with a geographic logic baked in. The first one or two letters identify the region: EG is the United Kingdom (so Heathrow is EGLL), K is the continental United States (JFK becomes KJFK), L covers southern Europe (CDG is LFPG). Where IATA codes are for selling seats, ICAO codes are for flying aeroplanes.

The sensible ones — and the rule that broke Canada

Most IATA codes are simply the city or airport name compressed: LON/LHR for London Heathrow, AMS for Amsterdam, SIN for Singapore, DXB for Dubai. When the obvious code was already taken, airports took the next-best contraction — which is how you get GVA for Geneva and HKG for Hong Kong.

Most IATA codes are simply the city or airport name compressed: LON/LHR for London Heathrow, AMS for Amsterdam, SIN for Singapore, DXB for Dubai. When the obvious code was already taken, airports took the next-best contraction — which is how you get GVA for Geneva and HKG for Hong Kong.

Canada is the great systematic exception: virtually every Canadian airport code begins with Y. The leading theory, supported by the historical record, is that early Canadian airport identifiers were two-letter weather or railway telegraph codes, and a prefix letter indicated whether the location had a weather station — Y for yes. When three-letter codes were standardised, Canada kept the pattern: YUL (Montreal), YVR (Vancouver), and YYZ, whose "YZ" was the railway telegraph code for Malton, the village beside what became Toronto Pearson.

Famous oddballs

ORD, Chicago O'Hare, commemorates Orchard Field — the airport's original name before it was renamed for war hero Edward "Butch" O'Hare. MSY, New Orleans, stands for Moisant Stock Yards, the land the airport was built on, named for aviation pioneer John Moisant. Neither has any connection to the modern airport name, which is exactly why they're beloved trivia.

ORD, Chicago O'Hare, commemorates Orchard Field — the airport's original name before it was renamed for war hero Edward "Butch" O'Hare. MSY, New Orleans, stands for Moisant Stock Yards, the land the airport was built on, named for aviation pioneer John Moisant. Neither has any connection to the modern airport name, which is exactly why they're beloved trivia.

Some codes dodge conflicts: when a city's obvious code was taken, alternatives emerged — which is part of why London City is LCY and why secondary airports often carry less intuitive codes than the city's main field. Others preserve ghosts of old names: BOM (Mumbai, formerly Bombay), PEK (Beijing, formerly Peking), LED (St Petersburg's old code referencing Leningrad, now on a new identifier).

Codes in the wild

A few practical notes. Cities with several airports often have a metropolitan code as well — LON covers all of London's airports, NYC all of New York's — which matters when searching flights: "London to New York" on LON–NYC searches Heathrow, Gatwick, Stansted, City, Luton and Southend against JFK, Newark and LaGuardia at once.

A few practical notes. Cities with several airports often have a metropolitan code as well — LON covers all of London's airports, NYC all of New York's — which matters when searching flights: "London to New York" on LON–NYC searches Heathrow, Gatwick, Stansted, City, Luton and Southend against JFK, Newark and LaGuardia at once.

And codes genuinely matter on travel day. Every year passengers fly to the wrong Sydney (Australia vs. Nova Scotia, YQY), the wrong San Jose (California SJC vs. Costa Rica SJO) or the wrong Birmingham (BHX vs. BHM, Alabama). Thirty seconds checking the three letters against your intended destination is among the cheapest insurance in travel.

Frequently asked questions

Why is Toronto Pearson called YYZ?

Almost all Canadian airport codes start with Y, inherited from an era when a leading Y marked a location with a weather station. The "YZ" part was the railway telegraph code for Malton, the community where Toronto's airport was built. The combination stuck — and became famous worldwide as the title of an instrumental by the rock band Rush.

What is the difference between IATA and ICAO airport codes?

IATA codes are the three-letter commercial identifiers on tickets and departure boards (LHR), assigned for passenger-facing use. ICAO codes are four-letter operational identifiers used by pilots and air traffic control (EGLL), with regional prefixes — EG for the UK, K for the continental US, L for southern Europe. The same airport has one of each.

Why do some airport codes not match the city name?

Usually history or collision. The code may preserve an old airport or city name (ORD for Chicago O'Hare's original Orchard Field; BOM for Mumbai's former name Bombay), the obvious code may already have been assigned elsewhere, or the code descends from weather-station or telegraph identifiers — as with Canada's Y-prefixed codes like YYZ and YVR.

What does EGLL mean?

EGLL is the ICAO code for London Heathrow: E for northern Europe, G for Great Britain, and LL for London Heathrow itself. Pilots, flight plans and air traffic control use EGLL where your boarding pass uses LHR. Other UK examples follow the same EG pattern — EGKK is Gatwick, EGCC is Manchester.

Written by Yuki Tanaka

Editor, Japan & Trip Reports

Yuki is based in Tokyo and covers Japanese carriers, domestic rail-and-air routing, and long-form trip reports. Her reviews of ANA and JAL premium cabins are among FlightLogic's most cited.

98+Reviews
540K+Miles Flown
27Countries
6 yrsCovering Travel