FreeToGenerate.com

Twenty languages have two official three-letter codes. Here is which one to send.

Shown 487 / 487

Click any code to copy it

Language639-1639-2/B639-2/TUse this
Afaraa
Abkhazianab
Achinesenoneace
Acolinoneach
Adangmenoneada
Adyghe; Adygeinoneady
Afro-Asiatic languagesnoneafa
Afrihilinoneafh
Afrikaansaf
Ainunoneain
Akanak
Akkadiannoneakk
Albaniansq
Aleutnoneale
Algonquian languagesnonealg
Southern Altainonealt
Amharicam
English, Old (ca.450-1100)noneang
Angikanoneanp
Apache languagesnoneapa
Arabicar
Official Aramaic (700-300 BCE); Imperial Aramaic (700-300 BCE)nonearc
Aragonesean
Armenianhy
Mapudungun; Mapuchenonearn
Arapahononearp
Artificial languagesnoneart
Arawaknonearw
Assameseas
Asturian; Bable; Leonese; Asturleonesenoneast
Athapascan languagesnoneath
Australian languagesnoneaus
Avaricav
Avestanae
Awadhinoneawa
Aymaraay
Azerbaijaniaz
Banda languagesnonebad
Bamileke languagesnonebai
Bashkirba
Baluchinonebal
Bambarabm
Balinesenoneban
Basqueeu
Basanonebas
Baltic languagesnonebat
Beja; Bedawiyetnonebej
Belarusianbe
Bembanonebem
Bengalibn
Berber languagesnoneber
Bhojpurinonebho
Bihari languagesnonebih
Bikolnonebik
Bini; Edononebin
Bislamabi
Siksikanonebla
Bantu languagesnonebnt
Bosnianbs
Brajnonebra
Bretonbr
Batak languagesnonebtk
Buriatnonebua
Buginesenonebug
Bulgarianbg
Burmesemy
Blin; Bilinnonebyn
Caddononecad
Central American Indian languagesnonecai
Galibi Caribnonecar
Catalan; Valencianca
Caucasian languagesnonecau
Cebuanononeceb
Celtic languagesnonecel
Chamorroch
Chibchanonechb
Chechence
Chagatainonechg
Chinesezh
Chuukesenonechk
Marinonechm
Chinook jargonnonechn
Choctawnonecho
Chipewyan; Dene Sulinenonechp
Cherokeenonechr
Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavoniccu
Chuvashcv
Cheyennenonechy
Chamic languagesnonecmc
Montenegrinnonecnr
Copticnonecop
Cornishkw
Corsicanco
Creoles and pidgins, English basednonecpe
Creoles and pidgins, French-basednonecpf
Creoles and pidgins, Portuguese-basednonecpp
Creecr
Crimean Tatar; Crimean Turkishnonecrh
Creoles and pidginsnonecrp
Kashubiannonecsb
Cushitic languagesnonecus
Czechcs
Dakotanonedak
Danishda
Dargwanonedar
Land Dayak languagesnoneday
Delawarenonedel
Slave (Athapascan)noneden
Tlicho; Dogribnonedgr
Dinkanonedin
Divehi; Dhivehi; Maldiviandv
Dogrinonedoi
Dravidian languagesnonedra
Lower Sorbiannonedsb
Dualanonedua
Dutch, Middle (ca.1050-1350)nonedum
Dutch; Flemishnl
Dyulanonedyu
Dzongkhadz
Efiknoneefi
Egyptian (Ancient)noneegy
Ekajuknoneeka
Elamitenoneelx
Englishen
English, Middle (1100-1500)noneenm
Esperantoeo
Estonianet
Eweee
Ewondononeewo
Fangnonefan
Faroesefo
Fantinonefat
Fijianfj
Filipino; Pilipinononefil
Finnishfi
Finno-Ugrian languagesnonefiu
Fonnonefon
Frenchfr
French, Middle (ca.1400-1600)nonefrm
French, Old (842-ca.1400)nonefro
Northern Frisiannonefrr
Eastern Frisiannonefrs
Western Frisianfy
Fulahff
Friuliannonefur
Ganonegaa
Gayononegay
Gbayanonegba
Germanic languagesnonegem
Georgianka
Germande
Geeznonegez
Gilbertesenonegil
Gaelic; Scottish Gaelicgd
Irishga
Galiciangl
Manxgv
German, Middle High (ca.1050-1500)nonegmh
German, Old High (ca.750-1050)nonegoh
Gondinonegon
Gorontalononegor
Gothicnonegot
Grebononegrb
Greek, Ancient (to 1453)nonegrc
Modern Greek (1453-)el
Guaranign
Swiss German; Alemannic; Alsatiannonegsw
Gujaratigu
Gwich'innonegwi
Haidanonehai
Haitian; Haitian Creoleht
Hausaha
Hawaiiannonehaw
Hebrewhe
Hererohz
Hiligaynonnonehil
Himachali languages; Western Pahari languagesnonehim
Hindihi
Hittitenonehit
Hmong; Mongnonehmn
Hiri Motuho
Croatianhr
Upper Sorbiannonehsb
Hungarianhu
Hupanonehup
Ibannoneiba
Igboig
Icelandicis
Idoio
Sichuan Yi; Nuosuii
Ijo languagesnoneijo
Inuktitutiu
Interlingue; Occidentalie
Ilokononeilo
Interlingua (International Auxiliary Language Association)ia
Indic languagesnoneinc
Indonesianid
Indo-European languagesnoneine
Ingushnoneinh
Inupiaqik
Iranian languagesnoneira
Iroquoian languagesnoneiro
Italianit
Javanesejv
Lojbannonejbo
Japaneseja
Judeo-Persiannonejpr
Judeo-Arabicnonejrb
Kara-Kalpaknonekaa
Kabylenonekab
Kachin; Jingphononekac
Kalaallisut; Greenlandickl
Kambanonekam
Kannadakn
Karen languagesnonekar
Kashmiriks
Kanurikr
Kawinonekaw
Kazakhkk
Kabardiannonekbd
Khasinonekha
Khoisan languagesnonekhi
Central Khmerkm
Khotanese; Sakannonekho
Kikuyu; Gikuyuki
Kinyarwandarw
Kirghiz; Kyrgyzky
Kimbundunonekmb
Konkaninonekok
Komikv
Kongokg
Koreanko
Kosraeannonekos
Kpellenonekpe
Karachay-Balkarnonekrc
Kareliannonekrl
Kru languagesnonekro
Kurukhnonekru
Kuanyama; Kwanyamakj
Kumyknonekum
Kurdishku
Kutenainonekut
Ladinononelad
Lahndanonelah
Lambanonelam
Laolo
Latinla
Latvianlv
Lezghiannonelez
Limburgan; Limburger; Limburgishli
Lingalaln
Lithuanianlt
Mongononelol
Lozinoneloz
Luxembourgish; Letzeburgeschlb
Luba-Luluanonelua
Luba-Katangalu
Gandalg
Luisenononelui
Lundanonelun
Luo (Kenya and Tanzania)noneluo
Lushainonelus
Macedonianmk
Maduresenonemad
Magahinonemag
Marshallesemh
Maithilinonemai
Makasarnonemak
Malayalamml
Mandingononeman
Maorimi
Austronesian languagesnonemap
Marathimr
Masainonemas
Malayms
Mokshanonemdf
Mandarnonemdr
Mendenonemen
Irish, Middle (900-1200)nonemga
Mi'kmaq; Micmacnonemic
Minangkabaunonemin
Uncoded languagesnonemis
Mon-Khmer languagesnonemkh
Malagasymg
Maltesemt
Manchunonemnc
Manipurinonemni
Manobo languagesnonemno
Mohawknonemoh
Mongolianmn
Mossinonemos
Multiple languagesnonemul
Munda languagesnonemun
Creeknonemus
Mirandesenonemwl
Marwarinonemwr
Mayan languagesnonemyn
Erzyanonemyv
Nahuatl languagesnonenah
North American Indian languagesnonenai
Neapolitannonenap
Nauruna
Navajo; Navahonv
South Ndebelenr
North Ndebelend
Ndongang
Low German; Low Saxon; German, Low; Saxon, Lownonends
Nepaline
Nepal Bhasa; Newar; Newarinonenew
Niasnonenia
Niger-Kordofanian languagesnonenic
Niueannoneniu
Norwegian Nynorsknn
Norwegian Bokmålnb
Nogainonenog
Norse, Oldnonenon
Norwegianno
N'Kononenqo
Pedi; Sepedi; Northern Sothononenso
Nubian languagesnonenub
Classical Newari; Old Newari; Classical Nepal Bhasanonenwc
Chichewa; Chewa; Nyanjany
Nyamwezinonenym
Nyankolenonenyn
Nyorononenyo
Nzimanonenzi
Occitan (post 1500)oc
Ojibwaoj
Oriyaor
Oromoom
Osagenoneosa
Ossetian; Osseticos
Turkish, Ottoman (1500-1928)noneota
Otomian languagesnoneoto
Papuan languagesnonepaa
Pangasinannonepag
Pahlavinonepal
Pampanga; Kapampangannonepam
Panjabi; Punjabipa
Papiamentononepap
Palauannonepau
Persian, Old (ca.600-400 B.C.)nonepeo
Persianfa
Philippine languagesnonephi
Phoeniciannonephn
Palipi
Polishpl
Pohnpeiannonepon
Portuguesept
Prakrit languagesnonepra
Provençal, Old (to 1500); Occitan, Old (to 1500)nonepro
Pushto; Pashtops
Reserved for local useA range, not a language — 520 codes reserved for private use.none
Quechuaqu
Rajasthaninoneraj
Rapanuinonerap
Rarotongan; Cook Islands Maorinonerar
Romance languagesnoneroa
Romanshrm
Romanynonerom
Romanian; Moldavian; Moldovanro
Rundirn
Aromanian; Arumanian; Macedo-Romaniannonerup
Russianru
Sandawenonesad
Sangosg
Yakutnonesah
South American Indian languagesnonesai
Salishan languagesnonesal
Samaritan Aramaicnonesam
Sanskritsa
Sasaknonesas
Santalinonesat
Siciliannonescn
Scotsnonesco
Selkupnonesel
Semitic languagesnonesem
Irish, Old (to 900)nonesga
Sign Languagesnonesgn
Shannoneshn
Sidamononesid
Sinhala; Sinhalesesi
Siouan languagesnonesio
Sino-Tibetan languagesnonesit
Slavic languagesnonesla
Slovaksk
Sloveniansl
Southern Saminonesma
Northern Samise
Sami languagesnonesmi
Lule Saminonesmj
Inari Saminonesmn
Samoansm
Skolt Saminonesms
Shonasn
Sindhisd
Soninkenonesnk
Sogdiannonesog
Somaliso
Songhai languagesnoneson
Sotho, Southernst
Spanish; Castilianes
Sardiniansc
Sranan Tongononesrn
Serbiansr
Serernonesrr
Nilo-Saharan languagesnonessa
Swatiss
Sukumanonesuk
Sundanesesu
Susunonesus
Sumeriannonesux
Swahilisw
Swedishsv
Classical Syriacnonesyc
Syriacnonesyr
Tahitianty
Tai languagesnonetai
Tamilta
Tatartt
Telugute
Timnenonetem
Terenononeter
Tetumnonetet
Tajiktg
Tagalogtl
Thaith
Tibetanbo
Tigrenonetig
Tigrinyati
Tivnonetiv
Tokelaunonetkl
Klingon; tlhIngan-Holnonetlh
Tlingitnonetli
Tamasheknonetmh
Tonga (Nyasa)nonetog
Tonga (Tonga Islands)to
Tok Pisinnonetpi
Tsimshiannonetsi
Tswanatn
Tsongats
Turkmentk
Tumbukanonetum
Tupi languagesnonetup
Turkishtr
Altaic languagesnonetut
Tuvalunonetvl
Twitw
Tuviniannonetyv
Udmurtnoneudm
Ugariticnoneuga
Uighur; Uyghurug
Ukrainianuk
Umbundunoneumb
Undeterminednoneund
Urduur
Uzbekuz
Vainonevai
Vendave
Vietnamesevi
Volapükvo
Voticnonevot
Wakashan languagesnonewak
Wolaitta; Wolayttanonewal
Waraynonewar
Washononewas
Welshcy
Sorbian languagesnonewen
Walloonwa
Wolofwo
Kalmyk; Oiratnonexal
Xhosaxh
Yaononeyao
Yapesenoneyap
Yiddishyi
Yorubayo
Yupik languagesnoneypk
Zapotecnonezap
Blissymbols; Blissymbolics; Blissnonezbl
Zenaganonezen
Standard Moroccan Tamazightnonezgh
Zhuang; Chuangza
Zande languagesnoneznd
Zuluzu
Zuninonezun
No linguistic content; Not applicablenonezxx
Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazakinonezza

The twenty languages with two codes

For these, ISO 639-2 defines two different three-letter codes. Both are official and current.

  • Albanian

    alb from the English name

    sqi from the language’s own name

    What to actually send: sq

  • Armenian

    arm from the English name

    hye from the language’s own name

    What to actually send: hy

  • Basque

    baq from the English name

    eus from the language’s own name

    What to actually send: eu

  • Burmese

    bur from the English name

    mya from the language’s own name

    What to actually send: my

  • Chinese

    chi from the English name

    zho from the language’s own name

    What to actually send: zh

  • Czech

    cze from the English name

    ces from the language’s own name

    What to actually send: cs

  • Dutch; Flemish

    dut from the English name

    nld from the language’s own name

    What to actually send: nl

  • French

    fre from the English name

    fra from the language’s own name

    What to actually send: fr

  • Georgian

    geo from the English name

    kat from the language’s own name

    What to actually send: ka

  • German

    ger from the English name

    deu from the language’s own name

    What to actually send: de

  • Modern Greek (1453-)

    gre from the English name

    ell from the language’s own name

    What to actually send: el

  • Icelandic

    ice from the English name

    isl from the language’s own name

    What to actually send: is

  • Macedonian

    mac from the English name

    mkd from the language’s own name

    What to actually send: mk

  • Maori

    mao from the English name

    mri from the language’s own name

    What to actually send: mi

  • Malay

    may from the English name

    msa from the language’s own name

    What to actually send: ms

  • Persian

    per from the English name

    fas from the language’s own name

    What to actually send: fa

  • Romanian; Moldavian; Moldovan

    rum from the English name

    ron from the language’s own name

    What to actually send: ro

  • Slovak

    slo from the English name

    slk from the language’s own name

    What to actually send: sk

  • Tibetan

    tib from the English name

    bod from the language’s own name

    What to actually send: bo

  • Welsh

    wel from the English name

    cym from the language’s own name

    What to actually send: cy

Languages with no two-letter code

Most languages have no ISO 639-1 code at all, so the three-letter code is the only identifier they have. A two-character column cannot store them.

303 / 486

Also available in: Español · Português · Français · العربية

Language Codes

The complete ISO 639 list with all three code forms, and a straight answer to which one belongs in your markup.

What are ISO language codes?

A language code is the short identifier you put in an HTML lang attribute, a filename, an Accept-Language header or a database column. There are three forms of it. ISO 639-1 is the familiar two-letter code — en, de, fr. ISO 639-2 is three letters, and it covers far more languages. ISO 639-3 goes further still, to roughly seven thousand.

This page lists ISO 639-2 in full, straight from the Library of Congress, which is the registration authority for the standard. That is 487 rows: 486 languages plus one entry that is not a language at all, which the table flags. Each row shows its two-letter code where one exists, both of its three-letter codes, and which one you should actually use.

That last column exists because of something the standard does that catches people out: for twenty languages there are two different three-letter codes, both official, both current. Neither is a typo or a legacy alias.

How to use this page

  1. Search by name or by any of the three codes. Typing “de”, “ger”, “deu” or “German” all land on the same row, and so does the name in your own language. Exact code matches rank first, which matters because “is” is Icelandic’s code and also a substring of dozens of language names.
  2. Tick the filter to see only the ambiguous twenty. Those are the languages where the two three-letter codes differ. The list below the table shows each pair side by side with the reason they differ.
  3. Read the “use this” column and copy from it. It gives the two-letter code when one exists and the terminological three-letter code otherwise — which is what BCP 47 requires, and therefore what belongs in HTML, HTTP and anything a browser reads.

Why twenty languages have two codes

ISO 639-2 assigns codes on two different principles and, for twenty languages, they disagree. The bibliographic code follows the language’s English name: German is ger, French is fre, Chinese is chi, Dutch is dut, Welsh is wel. The terminological code follows what speakers call the language themselves: Deutsch gives deu, français gives fra, Zhōngwén gives zho, Nederlands gives nld, Cymraeg gives cym.

The bibliographic codes exist because library catalogues were built on them long before anyone needed a language tag for a web page, and changing them would have broken every card index in the world. The terminological codes exist because naming a language after what its speakers call it is the better principle. Both survived, so both are current, and which one is “correct” depends on whether you are cataloguing a book or labelling a document.

The full twenty are Albanian, Armenian, Basque, Burmese, Chinese, Czech, Dutch, French, Georgian, German, Greek, Icelandic, Macedonian, Malay, Maori, Persian, Romanian, Slovak, Tibetan and Welsh. Every other language in the standard — 466 of them — has one three-letter code and no ambiguity at all.

There is a pattern worth noticing, and it is not a coincidence: every one of the twenty is a language whose English name differs sharply from its endonym. Nobody had to choose between two codes for Japanese, because jpn works either way.

Which one should you actually use?

For the web, neither. Use the two-letter code, and this is not a preference — it is what the specification says. BCP 47, the standard behind the HTML lang attribute, the Accept-Language header and every browser language API, requires the shortest available subtag. Where a language has an ISO 639-1 code, that code is the only correct tag and the three-letter forms are simply wrong in that context.

That resolves the ambiguity completely, and the reason is a property rather than a coincidence: all twenty of the languages with two three-letter codes also have a two-letter code. We check that rather than assert it, because a single exception would break the rule. So the web never has to choose between ger and deu — it uses de, and both three-letter spellings canonicalise to exactly that, which we also verify.

The ambiguity only reaches you when you work in three-letter codes: MARC records, some subtitle formats, older terminology databases, anything modelled on library practice. There the convention is usually bibliographic, and the safe move is to say in your schema which of the two you mean rather than assuming your reader shares your default.

Honest limits

Most languages have no two-letter code. Only 183 of the 486 do; the other 303 have three letters and nothing shorter. Cebuano, spoken by more than twenty million people, is ceb and has no ISO 639-1 form. So a database column of char(2) cannot store most of the world’s languages, and a language picker built from the two-letter list is quietly excluding the majority of them.

One row in the file is not a language. The entry qaa-qtz is a range, standing for 520 codes reserved for private use — anyone can use them internally for a language the standard does not cover, and none of them will ever be assigned. The table shows it as one row and labels it, rather than pretending it is a language or dropping it silently.

The localized names come from Unicode CLDR, which does not have a name for every entry. The collective codes such as “Bantu languages” and many ancient and constructed languages have no CLDR name in any language, so those rows fall back to the English name from the registration authority. Around 419 of the 486 are named in each language, and the exact figure differs slightly between them — which is what a genuine gap in the data looks like, as opposed to a lookup that is failing.

Finally, this is ISO 639-2 and not 639-3. The larger standard covers roughly seven thousand languages, including nearly every one that has ever been documented, and it is maintained separately by SIL International. If a language you need is missing here, that is where to look.

Why is it free?

Because it is a table and a search box. The whole list is in the page you have already loaded, the search runs in your browser, and nothing you type is sent anywhere.

So there is no account, no sign-up and nothing held back. The generator that builds this from the Library of Congress list and Unicode CLDR is in the repository beside the page, along with the 2,011-assertion test suite that checks the codes, the twenty ambiguous pairs and the BCP 47 property — including the negative controls that stop those tests passing for the wrong reason.