An IATA airport code , also known as an IATA location identifier , IATA station code or simply a location identifier ,  is a three-letter code designating many airports around the world, defined by the International Air Transport Association (IATA). The characters prominently displayed on baggage tags attached at airport check-in desks are an example of a way these codes are used.
The assignment of these codes is governed by IATA Resolution 763, and it is administered by IATA headquarters in Montreal . The codes are published biannually in the IATA Airline Coding Directory. 
IATA also provides codes for railway stations and for airport handling entities. A list of airports sorted by IATA code is available. A list of railway station codes , shared in agreements between airlines and rail lines such as Amtrak , SNCF French Rail , and Deutsche Bahn , is available. There is also a separate list of Amtrak station codes , three-character codes used by Amtrak for its railway stations in the United States and Canada .
- See also: List of airports by ICAO code
History and conventions
Airport codes arose out of the convenience that it brought pilots for location identification in the 1930s. Initially, pilots in the United States used the two-letter code from the National Weather Service (NWS) for identifying cities. This system became unmanageable for cities and towns without an NWS identifier, thus a three-letter system of airport codes was implemented. This system allowed for 17,576 permutations, assuming all letters can be used in conjunction with each other. 
Generally speaking, airport codes are named after the first three letters of the city in which it is located— ATL for Atlanta , SIN for Singapore , ASU for Asunción , MEX for Mexico City , IST for Istanbul ; or a combination of the letters in its name, EWR for Newark , GDL for Guadalajara , JNB for Johannesburg , HKG for Hong Kong , SLC for Salt Lake City and WAW for Warsaw . Some airports in the United States retained their NWS codes and simply appended an X at the end, such as LAX for Los Angeles , PDX for Portland , and PHX for Phoenix . 
For many reasons, some airport codes do not fit the normal scheme described above. Some airports, for example, cross several municipalities or regions, and mix the letters around, giving rise to DFW for Dallas–Fort Worth , DTW for Detroit–Wayne County , LBA for Leeds Bradford (Airport) , MSP for Minneapolis–Saint Paul , and RDU for Raleigh–Durham .
Canada originally used two letters for identification of a weather reporting station in the 1930s. Additionally, preceding the two-letter code, was placed a Y (meaning "yes") where the reporting station was co-located with an airport, a W (meaning "without") where the reporting station was not co-located with an airport, and a U where the reporting station was co-located with an NDB . An X was used if the last two letters of the code had already been taken by another Canadian ident, and a Z was used if the locator could be confused with a U.S. three letter ident.
In large metropolitan areas, airport codes are often named after the airport itself instead of the city it serves, while another code is reserved which refers to the city itself. For instance:
- Beijing (BJS) – Capital (PEK) and Nanyuan (NAY)
- Berlin (BER) – Berlin Tegel Airport (TXL) and Berlin Schönefeld Airport (SXF), both of which may be replaced by Berlin Brandenburg Airport (BER) in the future
- Bucharest (BUH) – Otopeni (OTP) is named after the town of Otopeni which the airport is located, while the city also has another airport inside the city limits, Baneasa (BBU).
- Buenos Aires (BUE) – Ezeiza (EZE) is named after the suburb in Ezeiza Partido which the airport is located, while the city also has another airport in city proper, Aeroparque Jorge Newbery (AEP).
- Chicago (CHI) – O'Hare (ORD), named after Or chard Fiel d , the airport's former name which took it, and Midway (MDW)
- Jakarta (JKT) – Soekarno-Hatta (CGK) is named after C en gk areng, the district in which the airport is located , while the city also has another airport, Halim Perdanakusuma (HLP). JKT had referred to the city's former airport, Kemayoran Airport which is now closed.
- London (LON) – Heathrow (LHR), Gatwick (LGW), London City (LCY),  Stansted (STN), Luton (LTN) and Southend (SEN)
- Milan (MIL) – Malpensa (MXP), Linate (LIN) and Bergamo-Orio al Serio (BGY)
- Montreal (YMQ) – Trudeau (YUL), Mirabel (YMX), and Saint-Hubert (YHU)
- Moscow (MOW) – Sheremetyevo (SVO), Domodedovo (DME), Vnukovo (VKO)
- New York City (NYC) – John F. Kennedy (JFK, formerly Idlewild (IDL)), La Guardia (LGA), and Newark Liberty (EWR)
- Osaka (OSA) – Kansai (KIX) and Itami (ITM, formerly OSA)
- Paris (PAR) – Orly (ORY), Charles de Gaulle (CDG), Paris–Le Bourget Airport (LBG) and Beauvais–Tillé Airport (BVA)
- Rio de Janeiro (RIO) – Galeão (GIG) and Santos Dumont (SDU)
- Rome (ROM) – Fiumicino (FCO) and Ciampino (CIA)
- São Paulo (SAO) – Congonhas (CGH), Guarulhos (GRU) and Campinas (VCP)
- Sapporo (SPK) – Chitose (CTS) and Okadama (OKD)
- Seoul (SEL) – Incheon (ICN) and Gimpo (GMP, formerly SEL)
- Stockholm (STO) – Arlanda (ARN), Bromma (BMA), Nyköping-Skavsta (NYO) and Västerås (VST)
- Tokyo (TYO) – Haneda (HND) and Narita (NRT)
- Toronto (YTO) – Pearson (YYZ), Bishop (YTZ) and Buttonville (YKZ)
- Washington, D.C. (WAS) – Dulles (IAD), Reagan-National (DCA), and Baltimore-Washington (BWI)
Or using a code for the city in one of the major airport and then assign another code to another airport:
- Bangkok (BKK) – Suvarnabhumi (BKK) and Don Mueang (DMK)
- Dubai (DXB) – International (DXB) and Al Maktoum (DWC)
- Johannesburg (JNB) – O.R. Tambo (formerly Jan Smuts) (JNB) and Lanseria (HLA)
- Kuala Lumpur (KUL) – Sepang (KUL) and Subang (SZB)
- Medellín (MDE) – José María Córdova (MDE) and Olaya Herrera (EOH)
- Nagoya (NGO) – Centrair (NGO) and Komaki (NKM)
- Shanghai (SHA) – Pudong (PVG) and Hongqiao (SHA)
- Taipei (TPE) – Taoyuan (TPE) and Songshan (TSA)
- Tehran (THR) – Imam Khomeini (IKA) and Mehrabad (THR)
When different cities with the same name each have an airport, the airports need to be assigned different codes. For example,
- Birmingham–Shuttlesworth International Airport (BHM) is in Birmingham, Alabama , United States and Birmingham Airport (BHX) is in Birmingham , England, United Kingdom.
- Norman Y. Mineta San Jose International Airport (SJC) is in San Jose, California , United States and Juan Santamaría International Airport (SJO) is in San José, Costa Rica.
- Portland International Jetport (PWM) is in Portland, Maine , while Portland International Airport (PDX) is in Portland, Oregon .
Sometimes, a new airport is built, replacing the old one, leaving the city's new "major" airport code to no longer correspond with the city's name. The original airport in Nashville, Tennessee was built in 1936 as part of the Works Progress Administration and called Berry Field with the designation, BNA. A new facility known as Nashville International Airport was built in 1987 but still uses BNA. This is in conjunction to rules aimed to avoid confusion that seem to apply in the United States, which state that "the first and second letters or second and third letters of an identifier may not be duplicated with less than 200 nautical miles separation."  Thus, Washington D.C.-area's three airports all have radically different codes: IAD for Washington-Dulles , DCA for Reagan National (District of Columbia Airport), and BWI for Baltimore (Baltimore–Washington International, formerly BAL).  Since HOU is used for William P. Hobby Airport , the new Houston-Intercontinental became IAH.  The code BKK was originally assigned to Bangkok-Don Mueang and was later transferred to Suvarnabhumi Airport , while the former adopted DMK. Shanghai-Hongqiao retained the code SHA, while the newer Shanghai-Pudong adopted PVG. The opposite is true for Berlin , the airport Berlin-Tegel uses the code TXL, while its smaller counterpart Berlin-Schönefeld uses SXF; the new Berlin Brandenburg Airport is going to have the code BER. Hamburg (HAM) and Hannover (HAJ) are less than 100 NM apart and still use the same first and middle letter, indicating that this rule might be followed only locally.
Since the US Navy reserved "N" codes and the Federal Communications Commission has reserved rights for "W" and "K" , certain U.S. cities which begin with these letters had to adopt "irregular" airport codes: EWR for Newark, ORF for Norfolk, Virginia , EYW for Key West, Florida , and APC for Napa, California .  This "rule" does not apply outside the United States: Karachi is KHI, Warsaw is WAW, Nagoya is NGO. In addition, since "Q" was used for international communications, cities with "Q" beginning their name also had to find alternate codes, as in the case of Qiqihar (NDG), Quetta (UET) and Quito (UIO).
IATA codes should not be confused with the FAA identifiers of US airports. Most FAA identifiers agree with the corresponding IATA codes, but some do not, such as Saipan whose FAA identifier is GSN and its IATA code is SPN, and some coincide with IATA codes of non-US airports.
Many cities retain historical names in their airport codes, despite the fact that their official name or its official spelling or transliteration is now different:
- in Bangladesh : DAC for Dhaka (formerly Dacca )
- in India : BOM for Mumbai (formerly Bombay ), CCU for Kolkata (formerly Calcutta ), and MAA for Chennai (formerly Madras );
- in China : PEK for Beijing (formerly Peking), TAO for Qingdao (formerly Tsingtao), and CAN for Guangzhou (formerly Canton). The older IATA codes follow Chinese postal romanization , introduced in 1906, officially abolished in 1964 and in use well into the 1980s, while gradually superseded by Pinyin .
- in Indonesia : TKG for Bandar Lampung (formerly Tanjung Karang), UPG for Makassar (formerly Ujung Pandang). In addition, when the Enhanced Indonesian Spelling System was introduced in 1972, a few older IATA codes retained the previous spelling: BTJ for Banda Aceh (formerly Banda Atjeh), DJJ for Jayapura (formerly Djajapura), JOG for Yogyakarta (formerly Jogjakarta).
- in Russia : LED for St. Petersburg (formerly Leningrad), GOJ for Nizhny Novgorod (formerly Gorky), SVX for Yekaterinburg (formerly Sverdlovsk), KUF for Samara (formerly Kuybyshev), OGZ for Vladikavkaz (formerly Ordzhonikidze) and others;
- in Kazakhstan : TSE for Astana (formerly Tselinograd), SCO for Aktau (formerly Shevchenko), GUW for Atyrau (formerly Guryev), DMB for Taraz (formerly Dzhambyl), PLX for Semey (formerly Semipalatinsk);
- in Ukraine : VSG for Luhansk (formerly Voroshilovgrad); KGO for Kropyvnytskyi (formerly Kirovograd); LWO for Lviv (formerly Lwów while part of Poland until 1939, and still called Lvov in Russian)
- in Turkmenistan : KRW for Türkmenbaşy (formerly Krasnovodsk); CRZ for Türkmenabat (formerly Chardzhev);
- in Vietnam : SGN for Ho Chi Minh City (formerly Saigon);
- in Armenia : LWN for Gyumri (formerly Leninakan);
- in Kyrgyzstan : FRU for Bishkek (formerly Frunze);
- in Tajikistan : LBD for Khujand (formerly Leninabad);
- in Moldova : KIV for Chișinău (formerly Kishinev);
- in Montenegro : TGD for Podgorica (formerly Titograd);
- in Canada : YFB for Iqaluit (formerly Frobisher Bay).
Some airport codes are based on previous names associated with a present airport, such as Chicago's O'Hare , which is assigned ORD, based on its old name of Orchard Field, before it was expanded and renamed O'Hare in the mid-1950s. Similarly, Orlando International Airport uses MCO, based on the old McCoy Air Force Base, which was converted to joint civilian/military use and renamed Orlando Jetport at McCoy in the early 1960s and finally Orlando International in the early 1980s. Other airport codes are similarly not immediately obvious in origin, and each have their own peculiarities. Nashville uses BNA , Knoxville uses TYS , and Kahului (the main gateway into Maui ) uses OGG , while Spokane International Airport goes by GEG. Most of these are named after individuals.  In Asia, codes that do not correspond with their city's names include Niigata 's KIJ , Nanchang 's KHN , Pyongyang 's FNJ, and Kobe 's UKB .
Some airports are identified even in colloquial speech by their airport code. The most notable examples are LAX and JFK.
Most large airports in Canada have codes that begin with the letter "Y", although not all "Y" codes are Canadian (for example, YUM for Yuma, Arizona) and not all Canadian airports start with the letter "Y" (for example ZBF for Bathurst, New Brunswick). Many Canadian airports have a code that starts with W, X or Z, but none of these are major airports. When the Canadian transcontinental railways were built, each station was assigned its own two letter Morse code. VR was Vancouver, TZ Toronto, QB Quebec, WG Winnipeg, SJ St. Johns, YC Calgary, OW Ottawa, EG Edmonton, etc. When the Canadian government established airports, it used the existing railway codes for them as well. If the airport had a weather station, authorities added a "Y" to the front of the code, meaning "Yes" to indicate it had a weather station, or some other letter to indicate it did not. When international codes were created in cooperation with the United States, because "Y" was seldom used in the US, Canada simply used the weather station codes for its airports, changing the "Y" to a "Z" if it conflicted with an airport code already in use. The result is that most major Canadian airport codes start with "Y" followed by two letters in the city's name: YOW for Ottawa , YWG for Winnipeg , YYC for Calgary , and YVR for Vancouver , whereas other Canadian airports append the two letter code of the radio beacons that were the closest to the actual airport, such as YQX in Gander and YXS in Prince George .
Four of the ten provincial capital airports in Canada have ended up with codes beginning with YY, including YYZ for Toronto, Ontario, YYJ for Victoria, British Columbia, YYT for St. John's, Newfoundland, and YYG for Charlottetown, Prince Edward Island. Canada's largest airport is YYZ for Toronto-Pearson (YTZ was used for Toronto City Airport, so YYZ is the station code for a village called Malton, which is where Toronto Pearson International Airport is actually located). YUL is used for Montreal-Trudeau (UL was the ID code for beacon in the city of Kirkland, now the location of Montreal-Trudeau). While these codes make it difficult for the public to associate them with a particular Canadian city, some codes have become popular in usage despite their cryptic nature, particularly at the largest airports. Some airports have started using their IATA codes as marketing brands. Calgary International Airport has begun using its airport code YYC as a marketing brand and name for the airport authority web site (yyc.com),  while Vancouver International Airport advertises as YVR (yvr.com).
Numerous New Zealand airports use codes which contain a letter Z, to distinguish them from similar airport names in other countries. Examples include HLZ for Hamilton , ZQN for Queenstown , and WSZ for Westport .
It is also noteworthy that there are several airports with scheduled service that have not been assigned ICAO codes that do have IATA codes. For example, several airports in Alaska that have scheduled commercial service, such as Stebbins Airport or Nanwalek Airport . There are also airports with scheduled service for which there are ICAO codes but not IATA codes, such as Nkhotakota Airport/Tangole Airport/ Dwanga Airport in Malawi or Chōfu Airport in Tokyo, Japan. Thus, neither system completely includes all airports with scheduled service.