IATA vs ICAO Airport Codes: What Is the Difference and Which Should You Use?

By the Airport Data team | Updated October 2026 | 5 minute read

I learned this distinction the embarrassing way. Years ago I was building a little flight-tracking side project and assumed the 4-letter code was just the 3-letter code with a K slapped on the front. It worked for JFK, LAX, and ORD, so I shipped it. Then a user searched Honolulu and my app confidently told them the code was KHNL. It is PHNL. Hawaii does not play by the K rule, and my string concatenation did not know that. Lesson learned: never derive one code from the other. Look it up.

The 30-second version

FeatureIATA codeICAO code
Length3 letters (JFK)4 letters (KJFK)
Assigned byInternational Air Transport AssociationInternational Civil Aviation Organization (a UN agency)
Primary useTicketing, baggage, booking systemsFlight planning, air traffic control, weather reports
Who sees itTravelers, travel agents, booking sitesPilots, controllers, dispatchers
StructureNo geographic structure; memorable labelsFirst letters encode region and country

Why two systems exist

They solve different problems. IATA codes are commercial shorthand: short, pronounceable-ish labels for humans moving through airports. ICAO codes are operational identifiers in a global grid where the first one or two letters pin down the region. K means the contiguous United States. EG means the United Kingdom (Heathrow is EGLL). Y means Australia (Sydney is YSSY), RJ means Japan, LF means France.

The practical difference is uniqueness. ICAO codes are globally unique by construction, which is exactly what you want when a controller hands off a flight plan. IATA codes are unique in practice but carry no structure, and they are not even limited to airports: IATA assigns 3-letter identifiers to rail stations and ferry terminals involved in intermodal travel. New York's Penn Station is ZYP. Your bag tag and a train station can share a namespace, which tells you everything about which system was designed for computers and which for people.

The trap I fell into: in the Lower 48, most ICAO codes really are the IATA code with a K prefix, which makes string manipulation tempting and wrong. Alaska uses PA, PF, PO, and PP prefixes. Hawaii uses PH. US territories use other prefix groups. Outside the US there is no relationship at all: London Heathrow is LHR and EGLL. If you are storing airport identifiers in a database, use ICAO as the primary key and treat IATA as a display convenience.

Which one should you use?

It depends on who you are. If you are a traveler, live in IATA-land: it is what is on your ticket, your bag tag, and every booking site. If you are a pilot, developer, or aviation nerd, ICAO is your system: it is what flight trackers, METAR weather reports, and air traffic control use.

One more wrinkle worth knowing: far more airfields have ICAO codes than IATA codes. IATA only bothers with airports that matter commercially, which is why thousands of small strips have a 4-letter ICAO indicator (or the ZZZZ "no code" procedure) and no 3-letter code at all. Going the other direction is rarer but real: some small Alaskan airports with scheduled service have an IATA code for ticketing and no ICAO code, and you will see them in our database with the ICAO field blank.

A few myths worth retiring

"Airport codes never change." They are deliberately stable, but changes happen, usually for geopolitical reasons. Berlin Schonefeld kept its IATA code SXF through German reunification but changed its ICAO code when control passed from East to West Germany.

"A renamed city must get a new code." No. Mumbai is still BOM, Chennai is still MAA, St. Petersburg is still LED. The code is infrastructure, not branding.

"Every US airport's ICAO code starts with K." Only the contiguous states. This one cost me a bug report, so I will keep repeating it.

Look up both codes for any US airport

Search the free US airport codes database

679 US airports with scheduled airline service, each with its IATA code, ICAO code (where one exists), city, and state. Free CSV download, data from OurAirports in the public domain.

Related reading: How Are Airport Codes Assigned? The Stories Behind ORD, MCO, and the Weird Ones

Sources: Navan, "What is an Airport Code? IATA and ICAO Guide"; Skylink API, "ICAO vs IATA Codes: The Difference Explained"; Wikivoyage, "Airport codes"; Aviatopia, "ICAO vs IATA Airport Codes." Verified October 2026.