Skip to main content

This site is a preview: the TrackMyWings app is in private beta on Android, and directory pages show reference data, not live tracking.

Flight Tracking

IATA vs ICAO Codes: Why Airport Codes Don't Match Cities

TrackMyWings Team8 min read

IATA vs ICAO codes come down to this: an IATA code is the three-letter identifier used for booking, baggage tags and flight boards, and it was never designed to spell out the city it serves. That is the whole explanation for codes like ABE, MMU and DAR looking nothing like the place a traveller expects: the code was assigned to identify the airport in a global system, not to describe it in English.

What an IATA code actually is (and isn't)

The International Air Transport Association assigns a unique three-letter code to almost every commercial airport in the world (Wikipedia, "International Air Transport Association," captured 2026-09-23). These codes are what you see on a boarding pass, a baggage tag and every booking site's route search, and they exist so that a specific airport can be referenced unambiguously no matter what language a passenger or airline staff member speaks.

The three letters are drawn from a registry, not generated from the city or airport name by any fixed rule (Wikipedia, "IATA airport code," captured 2026-09-23). Some codes are obvious, because the airport authority chose a code that maps neatly onto the name: LHR for London Heathrow, JFK for New York's John F. Kennedy. Others are not, usually because the obvious three letters were already taken by an earlier airport, because the airport changed its name after the code was assigned, or because the code follows a national or historical convention a casual reader has no reason to know. Once a code is issued, it does not change just because the airport's name or ownership does, which is part of why some codes drift further from the current name over time.

ICAO codes: the other code, and why it looks different

Airports also carry a second, four-letter code from the International Civil Aviation Organization, mainly used in flight planning and by air traffic control rather than by passengers (Wikipedia, "ICAO airport code," captured 2026-09-23). ICAO codes follow a regional prefix system: airports in the contiguous United States generally start with K, Canada with C, and other regions have their own first letters or letter pairs. That is why an American airport's ICAO code often looks like its IATA code with a K stuck on the front, while an airport elsewhere in the world can have an ICAO code that shares no letters at all with its IATA code. Seeing both codes for the same airport, and noticing they follow different logic, is a common source of the "why doesn't this match" confusion in the first place.

Worked example: ABE is not obviously Allentown

ABE is the IATA code for the airport serving Allentown and Bethlehem in Pennsylvania, and on our own Allentown-to-Myrtle Beach route page the departure airport is listed simply as ABE. The three letters do carry a real link to "Allentown," which is one reason this code is a step easier to place than some. What is less obvious is that the airport's own official name is not "Allentown Airport" at all: it is Lehigh Valley International Airport, named for the metro region rather than either of the two cities it directly serves. So a traveller can search a route by the code, land on a page that says ABE, and still be looking for a city name that appears nowhere in the airport's actual signage. The ICAO code for the same airport is KABE, the expected K-prefix pattern for a US airport.

The route itself covers 834 kilometres (518 miles) to Myrtle Beach International Airport (IATA: MYR, ICAO: KMYR) on the South Carolina coast, a fairly ordinary domestic leisure-route distance, and MYR is one of the more legible codes in this piece, since it maps straight onto the city name.

Worked example: MMU and DAR, two different kinds of mismatch

Morristown Municipal Airport in New Jersey carries the code MMU, on our Morristown airport page. Here the letters sit close to the airport's own name, Morristown Municipal, rather than to a larger city nearby, which is a different pattern from ABE's city-linked letters. Cincinnati Northern Kentucky International Airport, on our CVG airport page, carries the code CVG, referencing Covington, Kentucky, the city on the Kentucky side of the river where the airport actually sits, even though most travellers know the airport by the larger city, Cincinnati, across the state line. The two airports sit 895 kilometres (556 miles) apart.

DAR is a different case again. It is the code for Julius Nyerere International Airport, serving Dar es Salaam, Tanzania, and it can be found through our Dar es Salaam airport page. Here the code lines up cleanly with the city, "DAR" for "Dar es Salaam," even though the airport's own official name references a person, Tanzania's first president, rather than the city at all. The ICAO code, HTDA, follows the African regional prefix pattern rather than the American K-prefix seen at ABE and MMU, which is a useful reminder that the "add a letter to the IATA code" shortcut only works reliably in a handful of regions.

Put the three together and the pattern becomes clear: a code can be city-derived (DAR), airport-name-derived (MMU), or neither cleanly (ABE, which nods at the city while the airport's real name has moved on to a regional identity). There is no single rule a traveller can apply to predict a code from a city name, or a city from a code, which is exactly why a code-to-city lookup is worth keeping bookmarked rather than memorised.

Why airports end up with codes like this

A few forces combine to produce mismatches like these. Airports are sometimes renamed for a person, a region or a sponsor well after their code was assigned, and changing the three-letter code afterward would break every existing booking system, timetable and piece of signage that already uses it, so the old code sticks. Some airports serve a metro area made up of more than one city and settle on a code that favours one of them, or a neutral regional name, over the others. And a few codes are simply constrained by what was still available in the registry at the time the airport applied, which can produce a code with no obvious link to anything about the airport at all. None of this is a flaw in the system; it is the ordinary residue of a naming registry that has been running, airport by airport, for the better part of a century.

How TrackMyWings helps

TrackMyWings™ is a live flight-tracking platform in development, India-first in go-to-market with worldwide coverage in its ambitions. A private beta shipped on 2026-08-24, Android only, on the Play internal testing track with a small group of named testers. Public launch has no fixed date; it depends on trade-mark clearance and on the app being good enough to earn the download. Our airport pages list both the IATA code and the official name side by side, for airports like Allentown/Bethlehem and Dar es Salaam, so the code-to-name gap this piece describes is one click away rather than something to memorise. Organising pages by the three-letter code, the way we do, is common practice among flight-tracking tools: byAir, a peer app, runs the same kind of per-airport-code page family on its own site (byairapp.com, captured 2026-09-09).

Questions people ask

What is the difference between an IATA code and an ICAO code? The IATA code is the three-letter code used for booking, tickets and baggage tags. The ICAO code is a four-letter code used mainly for flight planning and air traffic control, and it follows a regional prefix system that the IATA code does not.

Why does an airport's code not match its city name? Codes are assigned once from a registry and rarely change even after an airport is renamed, expands to serve a wider region, or turns out to share a metro area with a larger, better-known city.

Can an airport's IATA code and ICAO code look completely different? Yes. In the United States they usually match closely, since the ICAO code is often just the IATA code with a K in front. Outside a handful of regions with that pattern, the two codes can share no letters at all.

Does a three-letter code ever get reassigned to a different airport? It can happen, but it is rare precisely because a code being reused would create confusion with historical bookings, records and signage, so most codes stay attached to the airport they were originally issued to.

Is there one rule that predicts an airport's code from its city? No single rule. Some codes are city-derived, some are named after the airport's own official name instead, and some reflect a naming decision made once, long before the code needed to make sense to today's traveller.

Sources

  • Wikipedia, "IATA airport code," https://en.wikipedia.org/wiki/IATA_airport_code, captured 2026-09-23
  • Wikipedia, "ICAO airport code," https://en.wikipedia.org/wiki/ICAO_airport_code, captured 2026-09-23
  • Wikipedia, "International Air Transport Association," https://en.wikipedia.org/wiki/International_Air_Transport_Association, captured 2026-09-23
Share:

Get TrackMyWings Early Access

Real-time flight tracking, gate change alerts, and family sharing: launching soon.

More from the Blog

Explore TrackMyWings