ICAO airport code

The ICAO (, ) airport code or location indicator is a four-letter code designating aerodromes around the world. These codes, as defined by the International Civil Aviation Organization and published in ICAO Document 7910: "Location Indicators", are used by air traffic control and airline operations such as flight planning.
ICAO codes are also used to identify other aviation facilities such as weather stations, international flight service stations or area control centres, whether or not they are located at airports. Flight information regions are also identified by a unique ICAO-code.
History.
The International Civil Aviation Organization was formed in 1947 under the auspices of the United Nations, and it established "flight information regions" ("FIR"s) for controlling air traffic and making airport identification simple and clear.
Code selections in North America were based on existing radio station identifiers. For example, radio stations in Canada were already starting with "C", so it seemed logical to begin Canadian airport identifiers with a C (Cxxx). The United States had many pre-existing airports with established mnemonic codes. Their ICAO codes were formed simply by prepending a K to the existing codes, as half the radio station identifiers in the US began with K (with the other half using the letter W, which is used in Southeast Asia). Most ICAO codes outside the US and Canada (except for some airports in Mexico) have a stronger geographical structure.
Most of the rest of the world was classified in a more planned top-down manner. Europe had too many locations for only one starting letter, so it was split into Exxx for northern Europe and Lxxx for southern Europe. The second letter was more specific: EGxx was the United Kingdom (G for Great Britain), EDxx was West Germany (D for Deutschland), ETxx was East Germany (the ETxx code was reassigned to military fields after the reunification), ECxx was Czechoslovakia (C for Československo; the code was dropped following the breakup and was split into two new ICAO codes: LKxx for the Czech Republic and LZxx for Slovakia), LExx was Spain (E for España), LAxx was Albania, LYxx was Socialist Yugoslavia (the codes were split into several republics when the country was broke up in the early 1990s; e.g. Croatia's new ICAO code LDxx (derived from D for Dalmatia) following that country's independence; thus LYxx retained the code for the republics of Serbia and Montenegro) and so on. France was designated LFxx, as the counterpart EFxx was unambiguously Finland (originally OFxx, as the more rigid geographical structure evolved over time; in the beginning, countries usually had "blocks" of codes; for example, Finland still has the country identifier OH- in its aircraft registrations). Thus Uxxx referred to the Soviet Union with the second letter denoting the specific region within it, and so forth. Following the fall of the Soviet Union, such as those, republics Estonia, Latvia and Lithuania created ICAO codes EExx, EVxx and EYxx, respectively, Moldova, another former Soviet republic, created a LUxx ICAO code inline with neighboring Romania (currently assigning the LRxx code), while the other republics retained the Uxxx code.
ICAO codes versus IATA codes.
ICAO codes are separate and different from IATA codes, which 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. ICAO codes are commonly seen by passengers and the general public on flight-tracking services such as FlightAware, but passengers will more often see the IATA codes, such as on their tickets and their luggage tags. 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. Historically, IATA codes were also used in flight plans and for other air traffic control purposes in certain jurisdictions. 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.
Unlike the IATA codes, the ICAO codes generally have a regional structure and are comprehensive. In general, the first letter is allocated by continent and represents a country or group of countries within that continent. The second letter generally represents a country within that region, and the remaining two are used to identify each airport. The exception to this rule is larger countries that have single-letter country codes, where the remaining three letters identify the airport. In either case, and unlike IATA codes, ICAO codes generally provide geographical context. For example, if one knows that the ICAO code for Heathrow is EGLL, then one can deduce that the airport EGGP is somewhere in the UK (it is Liverpool John Lennon Airport). On the other hand, knowing that the IATA code for Heathrow is LHR 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 made for political or administrative reasons. For example, the RAF Mount Pleasant air base in the Falkland Islands 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. Similarly Saint Pierre and Miquelon is controlled by France, and airports there are assigned LFxx as though they were in Europe. Further, in region L (Southern Europe), all available 2-letter prefixes have been exhausted and thus no additional countries can be added. Thus when Kosovo declared independence, there was no space in the Lxxx codes to accommodate it, so airports in Kosovo were assigned BKxx, grouping Kosovo with Greenland and Iceland.
The letters I and X are not currently used as the first letter of any ICAO identifier, and the letter J is only used in a ceremonial ICAO identifier granted to Jezero Crater on the planet Mars, JZRO. In Russia and the CIS, Latin letter X (or its Morse/Baudot Cyrillic equivalent Ь) is 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. Q is reserved for international radiocommunications and other non-geographical special uses (see Q code).
In the contiguous United States and Canada and for some airports in Mexico, most, but not all, airports have been assigned three-letter IATA codes. These are the same as their ICAO code, but without the leading K, C, or M.; e.g., YEG and CYEG both refer to Edmonton International Airport, Edmonton, Alberta; IAD and KIAD are used for Washington Dulles International Airport, Chantilly, Virginia; and MEX and MMEX were originally used for Mexico City International Airport, Mexico City, Distrito Federal (the latter code would be replaced with MMMX after the airport opened). These codes are not to be confused with radio or television call signs, even though both countries use four-letter call signs starting with those letters. However, because Alaska, Hawaii, and United States territories have their own 2-letter ICAO prefix (i.e. "PA" for Alaska, "PH" for Hawaii"), the situation there is similar to other smaller countries and the ICAO code of their airports is typically different from its corresponding 3-letter FAA/IATA identifier. For example, Kona International Airport (PHKO vs KOA) and Juneau International Airport (PAJN vs JNU). Notably, the ICAO code of the largest gateway to Hawaii, Daniel K. Inouye International Airport, also known by its former name, Honolulu International Airport, contains the IATA identifier PHNL (IATA: HNL), while Anchorage International Airport's ICAO code does the same: PANC (IATA: ANC). 
ZZZZ is a pseudo-code, used in flight plans for aerodromes with no ICAO code assigned.
A list of airports, sorted by ICAO code, is available below.
Pseudo ICAO-codes.
In small countries like Belgium or the Netherlands, almost all aerodromes have an ICAO code. For bigger 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. In the case of France, an amateur organisation, the FFPLUM ("Fédération Française des Planeurs Ultra Légers", the "French Federation of Ultralight Motorized Gliders"), was formally named the keeper of these codes. In Antarctica many aerodromes have pseudo ICAO-codes with "AT" and two digits, while others have proper codes from base owner countries such as "NZ" for New Zealand.
External links.
Related websites