The assignment of these codes is governed by IATA Resolution 763, and it is administered by IATA headquarters in Montreal. The codes are published semiannually 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. Many railway administrations have their own list of codes for their stations, such as the list of Amtrak station codes.
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.