ICAO codes are separate and different from IATA codes, the latter of which have three letters and are generally used for airline timetables, reservations, and baggage tags. For example, the IATA code for London's Heathrow Airport is LHR and its ICAO code is EGLL. IATA codes are commonly seen by passengers and the general public on flight-tracking services such as FlightAware.
In general IATA codes are usually derived from the name of the airport or the city it serves, while ICAO codes are distributed by region and country. Far more aerodromes (in the broad sense) have ICAO codes than IATA codes, which are sometimes assigned to railway stations as well. The selection of ICAO codes is partly delegated to authorities in each country, while IATA codes, which have no geographic structure, must be decided centrally by IATA.
Structure
The first one or two letters of the ICAO code indicate the country; the remaining letters identify the airport. ICAO codes are used partly for geographical context. For example, the ICAO code for Heathrow International Airport in London, is EGLL, with its first letters reflecting that it is based in the United Kingdom. On the other hand, IATA codes do not provide geographic reference. The LHR for Heathrow does not enable one to deduce the location of the airport LHV with any greater certainty; it is William T. Piper Memorial Airport in Lock Haven, Pennsylvania in the United States.
There are a few exceptions to the regional structure of the ICAO code that have been historically for political or administrative reasons. RAF Mount Pleasant air base in the Falkland Islands, for instance, is assigned the ICAO code EGYP as though it were in the United Kingdom, but nearby civilian Port Stanley Airport is assigned SFAL, consistent with South America. Saint Pierre and Miquelon is controlled by France, and airports there are assigned LFxx as though they were in Europe. Kosovo is assigned the code BKxx grouping it with Greenland and Iceland rather than its geographical neighbors which have Lxxx (described below). Jerusalem International Airport was assigned both LLJR (its Israeli persona) as well as OJJR (its Jordanian persona), but the airport itself fell into disuse.
In the contiguous United States and Canada, many airports have ICAO codes that are simply copies of their three-letter IATA codes, with the geographical prefix added on (e.g., YEG and CYEG both refer to Edmonton International Airport, while IAD and KIAD both refer to Washington Dulles International Airport). This similarity does not extend to Alaska (PAxx), Hawaii (PHxx), or U.S. territories. Kahului Airport on Maui, for instance, has an IATA code of OGG and an ICAO code of PHOG.
ICAO airport codes do not begin with I or J or X or Q, though the Jezero Crater on Mars is assigned the special ICAO code JZRO.[1] Codes beginning with I (Ixx and Ixxx) are often used for navigational aids such as radio beacons, while the Q code is reserved for international radiocommunications and non-geographical special use.
In Russia, Latin letter X, or its Morse/Baudot Cyrillic equivalent Ь, are used to designate government, military, and experimental aviation airfields in internal airfield codes similar in structure and purpose to ICAO codes but not used internationally.[2] ZZZZ is a pseudo-code, used in flight plans for aerodromes with no ICAO code assigned.
ICAO codes are sometimes updated. Johannesburg Airport in Johannesburg, South Africa, for instance, was formerly known as Jan Smuts International Airport, with code FAJS. When the airport was renamed O. R. Tambo International Airport, its ICAO code was updated to FAOR.
Some airports have two ICAO codes, usually when an airport is shared by civilian and military users. Frankfurt Airport in Frankfurt, Germany, for instance, has been assigned ICAO code EDDF while Rhein-Main Air Base was assigned ICAO code EDAF until its closure. Sion Airport in Switzerland has code LSGS while its military facilities have the ICAO code LSMS. Brussels Airport in Brussels, Belgium, has the ICAO code EBBR for its civilian facilities, and Melsbroek Air Base has been assigned ICAO code EBMB, even though the two airports share runways and ground and air control facilities.
Pseudo ICAO-codes
In small countries like Belgium or the Netherlands, almost all aerodromes have an ICAO code. For larger countries like the UK or Germany this is not feasible, given the limited number of letter codes. Some countries have addressed this issue by introducing a scheme of sub-ICAO aerodrome codes; France, for example, assigns pseudo ICAO codes in the style LFddnn, where dd indicates the department while nn is a sequential counter. The French Federation of Ultralight Motorized Gliders was formally named the keeper of these codes. Aerodrome de Torreilles in France, for instance, has code LF6651.[3] In Antarctica many aerodromes have pseudo ICAO-codes with AT and two digits, while others have proper codes from countries performing air control such as NZ for New Zealand.