Finding airport codes has gotten complicated with all the search tools flying around. There are apps, websites, browser extensions, government databases — and somehow half of them give you slightly different information depending on whether you’re looking at IATA or ICAO or FAA identifiers. I spent an embarrassing amount of time confused about this before I figured out a system that actually works. Let me save you the trouble.
The Three-Letter Codes on Your Boarding Pass
Probably should have led with this, because IATA codes are the ones most people encounter every single day without realizing there’s a whole system behind them. When you book a flight, check Google Flights, or look at your luggage tag, you’re using IATA codes. Three letters. LAX for Los Angeles, JFK for New York’s Kennedy airport, LHR for London Heathrow, NRT for Tokyo Narita.
These codes show up on boarding passes, flight displays, and every airline reservation system on the planet. There are roughly 11,000 IATA codes assigned worldwide, though thousands more airports exist without commercial service and never get an IATA designation.
IATA codes follow loose patterns but they’re not what I’d call standardized. Many come from city names — CHI for Chicago’s general area, DEN for Denver. Some come from old airport names — ORD for Chicago O’Hare, which used to be called Orchard Field. Others seem random until you learn the history. YYZ for Toronto came from a nearby radio beacon. The Y tells you it’s Canadian. The YZ was just what was available at the time.
The Four-Letter Codes Pilots Actually Use
ICAO codes are the ones that matter for actual aviation operations. Four letters. Pilots file flight plans with them, air traffic controllers use them, and weather reports (METARs and TAFs) are identified by them. The system follows strict geographic logic, which is part of what makes it appealing once you understand it.
The first letter tells you the region of the world:
- K — Continental United States (KLAX, KJFK, KORD)
- C — Canada (CYYZ for Toronto, CYVR for Vancouver)
- E — Northern Europe (EGLL for London Heathrow, EHAM for Amsterdam)
- L — Southern Europe (LFPG for Paris Charles de Gaulle)
- R — Asian Pacific (RJTT for Tokyo Haneda)
- Z — China (ZBAA for Beijing Capital)
The second letter usually narrows it down to the country. The last two letters identify the specific airport. It’s hierarchical and logical in a way that IATA codes aren’t, which is why pilots and aviation professionals prefer it.
Why the Two Systems Don’t Always Match
IATA and ICAO developed independently for different purposes. IATA prioritizes what’s convenient for commercial travelers. ICAO prioritizes systematic global organization for aviation professionals. This creates some memorable mismatches that threw me off when I first started paying attention.
Montreal: IATA is YUL, ICAO is CYUL. The Y signals Canada in IATA’s system, and ICAO adds C for the Canadian region on top of that.
Chicago O’Hare: IATA is ORD from Orchard Field. ICAO is KORD — just the K prefix for continental US tacked on the front.
Beijing: IATA is PEK, from Peking, the old romanization of the city name. ICAO is ZBAA — Z for China, B for Beijing region, AA for the main airport. Completely different logic.
How I Actually Look Up Codes Now
For IATA codes: Honestly, just Google it. Search “[city name] airport code” and you’ll get the answer instantly. Booking sites like Google Flights, Kayak, and Expedia also accept city names and show you the corresponding code. This is the easiest one.
For ICAO codes: Aviation-specific sites are your best bet. AirNav.com has thorough US airport data. SkyVector.com covers airports globally and includes charts, which is handy if you’re into that sort of thing. The FAA’s Airport/Facility Directory lists every US airport with both code types.
For converting between the two: Wikipedia’s airport articles consistently show both codes, which I use more often than I’d like to admit. The Great Circle Mapper at gcmap.com accepts either system and displays both. Super useful when you’re trying to cross-reference.
Special Situations Worth Knowing
Airports with no IATA code: Small general aviation airports don’t have commercial service, so they don’t get IATA codes. They’ll have ICAO codes or FAA identifiers, but no three-letter booking code. Catalina Airport in California, for instance, has the ICAO code KAVX but no IATA designation because no airlines fly there on a schedule.
Cities with multiple airports: This is where code knowledge really pays off. New York has JFK, LGA, and EWR. London has five — LHR, LGW, STN, LTN, and LCY. Tokyo has NRT and HND. Booking the wrong one is a mistake you only make once. Ask me how I know.
Using Codes to Find Cheaper Flights
This is where it gets practical. Google Flights lets you search “London” and pulls up all five airports. But on other booking sites, knowing the individual codes lets you compare prices across specific airports.
Flying into Oakland (OAK) instead of San Francisco (SFO) often saves real money. Same goes for Burbank (BUR) versus LAX, or Baltimore (BWI) versus Washington Dulles (IAD). The savings can be significant — I’ve seen $100+ differences on the same route depending on which airport I choose.
Some booking engines also accept metro area codes: WAS for all Washington D.C. airports, NYC for all New York airports, CHI for all Chicago airports. That’s a trick I wish I’d learned years earlier.
Codes Worth Memorizing
You don’t need to memorize hundreds of codes. Start with three categories:
Your home airport and any alternatives nearby. For me, that’s three codes I use constantly.
Major hubs you connect through. For domestic US travel, that’s usually some combination of ATL, DFW, ORD, and DEN. For transatlantic, LHR, AMS, FRA, and CDG come up a lot.
Destinations you visit regularly. Whatever your usual spots are, lock those codes in and you’ll stop second-guessing yourself when booking.
Pilots end up memorizing hundreds of codes as part of their training, but for the rest of us, knowing a dozen or so is plenty. The system might look like random letters at first, but it’s actually a global shorthand that connects every flight booking, every baggage tag, and every pilot’s flight plan. Once you get the logic behind it, looking up any airport code takes seconds — not the confused Googling session I used to go through.
Quick Reference: Codes People Mix Up
US Hubs: ATL (Atlanta), ORD (Chicago — not Orlando), DFW (Dallas), DEN (Denver), LAX (Los Angeles), JFK (New York), SFO (San Francisco), SEA (Seattle), MIA (Miami)
International: LHR (London Heathrow), CDG (Paris), FRA (Frankfurt), AMS (Amsterdam), DXB (Dubai), SIN (Singapore), HKG (Hong Kong), NRT (Tokyo Narita), SYD (Sydney)
Commonly confused: ORD is Chicago, not Orlando. MCO is Orlando. SAN is San Diego. SJC is San Jose. SAT is San Antonio. I’ve seen all of these mixed up in the wild, and I’ve done it myself at least once.
That’s what makes airport codes endearing once you start paying attention. Every three-letter combination has a reason behind it, even when that reason is buried in seventy years of aviation history. The more you learn, the faster the lookups get — and eventually you stop needing to look them up at all.