CloudLog EASA FAA Digital Pilot Logbook

Airport Codes Around the World: ICAO, IATA, and What to Do Without One

You’re planning a cross-country to England and pencil in “EGSY” from an old chart — only to later discover that today, this identifier belongs to something entirely different than it did twenty years ago. Or you’re logging a flight to a small glider strip in the Black Forest and realize there’s no official code at all, just a place name. Then there’s the airline booking confirmation showing “FRA” for Frankfurt, while your aeronautical chart shows “EDDF.” Three situations, one common thread: assume there’s just “one” airport code, and you’ll trip over it sooner or later. In reality, two entirely separate systems run in parallel worldwide, each following a logic that’s traceable but not always intuitive — and both deliberately leave gaps at the edges.

Two Systems, One Source of Confusion: ICAO and IATA

The first misconception pilots run into: that ICAO and IATA codes are just two spellings of the same thing. They aren’t. These are two independent systems, run by different organizations, serving different purposes, with different reach.

ICAO Location Indicators: the operational code

The four-letter ICAO codes — officially “location indicators” — exist for operational flight purposes: air traffic control, flight planning, aeronautical charts. They don’t just cover airports; they also identify other navigationally relevant points such as flight information regions (FIR/UIR). ICAO maintains them in Doc 7910, which is reissued in updated editions at regular intervals. If you work with identifiers in the cockpit or during flight planning, this is the system you’re using.

IATA Codes: the commercial code

The three-letter IATA codes serve a different purpose entirely: ticketing, baggage handling, departure boards, booking systems. They’re governed by IATA Resolution 763 and administered from IATA headquarters in Montreal. Unlike ICAO indicators, there’s no automatic assignment process — an IATA code is issued only on request, typically once a location is served by scheduled or charter airline traffic, or needs to be published for intermodal transport (e.g., a rail connection). The airport operator proposes a combination, and IATA checks it for worldwide uniqueness before approving it.

That has a practical consequence for GA pilots: many airports carry both codes (Frankfurt: EDDF/FRA), but smaller fields without scheduled service often have only an ICAO code — no IATA code exists, simply because none was ever requested. That’s not a database gap; it’s the system working as designed. ICAO Doc 7910 itself only lists IATA codes “where available.”

Historically, two-letter codes stopped being sufficient by the late 1940s as aviation grew, prompting the move to a three-letter system with over 17,000 possible combinations. The four-letter ICAO system emerged separately in the late 1950s — the two developed independently and were never designed to align with one another.

How the Letters Are Assigned: the Prefix System

ICAO codes aren’t handed out arbitrarily; they follow a global prefix scheme. The first letter (in a few regions, the first two) identifies the broad region, after which national aviation authorities propose the remaining letters for specific locations, which ICAO then approves while screening for collisions.

A selection of the key regional prefixes:

  • E — Northern Europe (including Germany, the UK, the Netherlands, Scandinavia, the Baltic states)
  • L — Southern Europe and the eastern Mediterranean (including Austria, Switzerland, France, Italy, Spain, Greece, Turkey)
  • K — continental United States
  • C — Canada
  • Y — Australia
  • R — East Asia (Japan, Taiwan, South Korea)
  • V — South and Southeast Asia (India, Thailand, Vietnam)
  • U — successor states of the former Soviet Union (excluding the Baltics)

A closer look at DACH

For day-to-day flight planning in Central Europe, the local prefixes matter more than the world map:

  • Germany uses the prefix ED for civil airfields. Military airfields historically carry the prefix ET — originally assigned to East German military aviation, and retained for military use across reunified Germany. West German military fields switched from ED to ET in the mid-1990s: EDUO became ETUO, EDAR became ETAR. The third and fourth letters follow a historically grown, broadly regional pattern — EDD… for the major international airports, for instance — rather than one consistent rule.
  • Austria starts every identifier with LO (both civil and military), for example LOWW for Vienna-Schwechat.
  • Switzerland starts every identifier with LS, for example LSZH for Zurich.

The exact allocation practice for the third and fourth letters in Germany sits with DFS and the LBA and is documented in detail only in the AIP Germany — for everyday flight preparation, knowing the country prefix and checking a current chart or app is usually enough.

When Codes Change: Stability Is the Principle, Not a Guarantee

Both ICAO and IATA officially aim to keep identifiers as stable as possible. ICAO puts it plainly: changes to assigned location indicators should be made “only after due consideration” — stability takes precedence. IATA goes further, treating an assigned three-letter code as effectively permanent; changes occur almost exclusively for safety reasons. In practice, that means a code change is always the exception, never the rule — but it does happen, for a handful of recurring reasons.

Renaming an existing airport. A classic historical example is New York’s Idlewild Airport, whose IATA code changed from IDL to the JFK still in use today when the airport was renamed in honor of John F. Kennedy in 1963; the ICAO code is KJFK. Cases like this illustrate an important point: a new name doesn’t automatically trigger a new code — it’s a separate, deliberate decision by the responsible authorities, often phased in over time so that charts, flight-planning systems, and booking platforms can be updated in sync.

Code succession at replacement airports. When an airport is replaced by a newly built one, the new site sometimes inherits the old code while the original site is recoded. When Bangkok’s scheduled traffic moved to the new Suvarnabhumi Airport in 2006, though, only the IATA code travelled: BKK went to the new field, Don Mueang kept its ICAO code VTBD and picked up the new IATA code DMK, and Suvarnabhumi was issued the new ICAO code VTBS. Hong Kong went the other way — Chek Lap Kok took over both VHHH and HKG from the closed Kai Tak Airport in 1998.

Reuse after closure. A code doesn’t necessarily disappear forever once an airfield closes. The ICAO code “EGSY,” once assigned to Sheffield City Airport in South Yorkshire (closed in 2008), later passed to MOD St Athan in Wales — evidence that codes can, in principle, be recycled after closure, and not necessarily anywhere near the original site.

Status changes between civil and military use. Germany’s ED/ET example shows that a prefix change is possible when a site’s use changes, while the underlying identifier itself remains stable afterward — the stability principle applies to the code itself, not necessarily to the prefix in front of it.

The practical takeaway: if you’re working from older charts, saved waypoints, or historical logbook entries, verify an unfamiliar or surprising identifier against the current AIP or an up-to-date database rather than trusting memory alone.

When an Airfield Has No Code at All

Not every airfield carries an ICAO identifier — and that’s normal, not an exception. Small private, glider, and microlight fields without instrument-flight or scheduled-service relevance frequently have no official code whatsoever. One documented example is the Kirchzarten-Oberried gliding site in Baden-Württemberg, an active field operated by the Breisgauverein für Segelflug with neither an ICAO nor an IATA code.

For flight planning purposes, there’s an international placeholder for exactly this situation: ZZZZ, a generic stand-in for “no identifier assigned,” not tied to any specific location. Some countries have built their own workarounds on top of that. France assigns pseudo-codes to small, non-ICAO-coded airfields using a scheme of “LF” plus a department abbreviation and a running number; Antarctica uses “AT” plus two digits for its stations.

In German club practice, it has become common to log flights to such fields simply as “ED–” (the country prefix with no further letters), paired with an obligation to state the full airfield name in a free-text field. The recurring, practical reason cited in club circles: customs inspections tend to flag logbook entries where the departure airfield isn’t unambiguously identifiable. Worth noting: this is lived club practice, not a uniformly codified regulatory rule — when in doubt, check your own club’s or association’s guidance. No direct Austrian or Swiss equivalent to this specific practice is documented; the working assumption is that a full place name in free text serves the same purpose wherever no code exists.

Common Mistakes and Misconceptions

  • Treating ICAO and IATA codes as interchangeable. The two systems are independent; an airport may carry one, both, or — rare for larger fields — in principle neither. The reverse case is common too: plenty of smaller US fields have an IATA or FAA identifier but no ICAO location indicator.
  • Assuming every airfield must have an ICAO code. Small glider and microlight strips in particular often don’t — that’s how the system is designed, not a data error.
  • Treating codes as permanent and unchangeable. Renaming, replacement construction, closure, and status changes can all trigger a change, even if rarely.
  • Mistaking the “ED–” workaround for an official code. It’s lived club practice for unambiguous documentation, not an identifier issued by ICAO or a national authority.
  • Reading prefixes as pure country codes. They actually represent broad regions and areas of responsibility that don’t always line up neatly with national borders.

Conclusion

ICAO and IATA codes solve two different problems: unambiguous, operational identification of a location for air traffic control and flight planning on one side, commercial identification for ticketing and baggage on the other. Understanding both systems — and the logic behind how they’re assigned — explains why some airports carry two codes, others only one, and why small fields can operate perfectly well with none at all. Changes are rare but real, and anyone working from older material does well to double-check an unusual code rather than assume it will hold forever.

In the Places & Airfields area, cloudlog.aero relies on exactly this distinction: airfields are tracked with their official ICAO identifiers where they exist, and remain just as cleanly documentable when a field has none. That removes precisely the kind of uncertainty that shows up in the cockpit or when logging a flight after the fact — when a code is missing, has changed, or simply isn’t known.

Sources

This article is provided for general information and reflects the sources consulted at the time of publication. It does not constitute legal advice or an authoritative statement by an aviation authority. The applicable laws, regulations, and the current guidance and decisions of the competent aviation authorities always take precedence.