Language Codes Table

–click a code to copy it
CodeLanguageISO 639-2ISO 639-3Native nameScope
abAbkhazianabkabkАҧсуаIndividual
aaAfaraaraarQafar afIndividual
afAfrikaansafrafrAfrikaansIndividual
akAkanakaakaÁkánMacrolanguage
sqAlbaniansqi / albsqiShqipMacrolanguage
amAmharicamhamhአማርኛ (Amarəñña)Individual
arArabicaraaraاَلْعَرَبِيَّةُ (al-ʿarabiyyah)Macrolanguage
anAragoneseargargAragonésIndividual
hyArmenianhye / armhyeՀայերեն (Hayeren)Individual
asAssameseasmasmঅসমীয়া (Ôxômiya)Individual
avAvaricavaavaАварIndividual
aeAvestanaveave''Upastawakaēna''Individual
ayAymaraaymaymAymaraMacrolanguage
azAzerbaijaniazeazeAzərbaycanMacrolanguage
bmBambarabambamبَمَنَنكَنIndividual
baBashkirbakbakБашҡорт телеIndividual
euBasqueeus / baqeusEuskara/EuskeraIndividual
beBelarusianbelbelБеларуская мова (Biełaruskaja mova)Individual
bnBengalibenbenবাংলা (Bāŋlā)Individual
biBislamabisbisBislamaIndividual
bsBosnianbosbosБосански (Bosanski)Individual
brBretonbrebreBrezhonegIndividual
bgBulgarianbulbulБългарски (Bulgarski)Individual
myBurmesemya / burmyaမြန်မာစာ (Mrãmācā)Individual
caCatalancatcatCatalàIndividual
chChamorrochachaFinu' ChamoruIndividual
ceChechenchecheНохчийн моттIndividual
nyChichewanyanyaChichewaIndividual
zhChinesezho / chizho中文Macrolanguage
cuChurch SlavonicchuchuСлаве́нскїй ѧ҆зы́къIndividual
cvChuvashchvchvЧӑвашла (Çăvaşla)Individual
kwCornishcorcorKernowekIndividual
coCorsicancoscosCorsuIndividual
crCreecrecreᓀᐦᐃᔭᐁᐧᐃᐧᐣ (Nehiyawewin)Macrolanguage
hrCroatianhrvhrvHrvatskiIndividual
csCzechces / czecesČeštinaIndividual
daDanishdandanDanskIndividual
dvDivehidivdivދިވެހި (Dhivehi)Individual
nlDutchnld / dutnldNederlandsIndividual
dzDzongkhadzodzoརྫོང་ཁ་ (Dzongkha)Individual
enEnglishengengEnglishIndividual
eoEsperantoepoepoEsperantoIndividual
etEstonianestestEesti keelMacrolanguage
eeEweeweeweÈʋegbeIndividual
foFaroesefaofaoFøroysktIndividual
fjFijianfijfijNa Vosa VakavitiIndividual
fiFinnishfinfinSuomiIndividual
frFrenchfra / frefraFrançaisIndividual
fyWestern FrisianfryfryFryskIndividual
ffFulahfulful𞤊𞤵𞤤𞤬𞤵𞤤𞤣𞤫Macrolanguage
gdGaelicglaglaGàidhligIndividual
glGalicianglgglgGalegoIndividual
lgGandaluglugLugandaIndividual
kaGeorgiankat / geokatქართული (k'art'uli)Individual
deGermandeu / gerdeuDeutschIndividual
elGreekell / greellΝέαIndividual
klKalaallisutkalkalKalaallisutIndividual
gnGuaranigrngrnAvañe'ẽMacrolanguage
guGujaratigujgujગુજરાતી (Gujarātī)Individual
htHaitianhathatKreyòl ayisyenIndividual
haHausahauhauهَرْشٜن هَوْس (halshenIndividual
heHebrewhebhebעברית‎ (Ivrit)Individual
hzHereroherherOtjihereroIndividual
hiHindihinhinहिन्दी (Hindī)Individual
hoHiri MotuhmohmoHiri MotuIndividual
huHungarianhunhunMagyar nyelvIndividual
isIcelandicisl / iceislÍslenskaIndividual
ioIdoidoidoIdoIndividual
igIgboiboiboásụ̀sụ́ ÌgbòIndividual
idIndonesianindindBahasa IndonesiaIndividual
iaInterlinguainainaInterlinguaIndividual
ieInterlingueileileInterlingueIndividual
iuInuktitutikuikuᐃᓄᒃᑎᑐᑦ (Inuktitut)Macrolanguage
ikInupiaqipkipkIñupiaqMacrolanguage
gaIrishglegleGaeilgeIndividual
itItalianitaitaItalianoIndividual
jaJapanesejpnjpn日本語 (Nihongo)Individual
jvJavanesejavjavꦧꦱꦗꦮIndividual
knKannadakankanಕನ್ನಡ (Kannađa)Individual
krKanurikaukauكَنُرِيِهMacrolanguage
ksKashmirikaskasकॉशुरIndividual
kkKazakhkazkazҚазақшаIndividual
kmCentral KhmerkhmkhmខេមរភាសាIndividual
kiKikuyukikkikGĩgĩkũyũIndividual
rwKinyarwandakinkinIkinyarwandaIndividual
kyKyrgyzkirkirКыргызIndividual
kvKomikomkomКоми кывMacrolanguage
kgKongokonkonKikongoMacrolanguage
koKoreankorkor한국어 (Hangugeo), 조선말 (Chosŏnmal)Individual
kjKuanyamakuakuaOshikwanyamaIndividual
kuKurdishkurkurکوردیMacrolanguage
loLaolaolaoພາສາລາວ (phasa Lao)Individual
laLatinlatlatLatinumIndividual
lvLatvianlavlavLatviešuMacrolanguage
liLimburganlimlimLimburgischIndividual
lnLingalalinlinLingálaIndividual
ltLithuanianlitlitLietuviųIndividual
luLuba-KatangalublubKilubaIndividual
lbLuxembourgishltzltzLëtzebuergeschIndividual
mkMacedonianmkd / macmkdМакедонски (Makedonski)Individual
mgMalagasymlgmlg–Macrolanguage
msMalaymsa / maymsaبهاسMacrolanguage
mlMalayalammalmalമലയാളം (Malayāḷam)Individual
mtMaltesemltmltMaltiIndividual
gvManxglvglvGaelgIndividual
miMaorimri / maomrireo MāoriIndividual
mrMarathimarmarमराठी (Marāṭhī)Individual
mhMarshallesemahmahkajin M̧ajel‌̧Individual
mnMongolianmonmon{{MongolUnicode/ᠮᠣᠩᠭᠣᠯ
ᠬᠡᠯᠡ}}
Macrolanguage
naNaurunaunaudorerin NaoeIndividual
nvNavajonavnavDinéIndividual
ndNorth NdebelendendeisiNdebeleIndividual
nrSouth NdebelenblnblisiNdebeleIndividual
ngNdongandondoNdongaIndividual
neNepalinepnepनेपाली भाषा (NepālīMacrolanguage
noNorwegiannornorNorskMacrolanguage
nbNorwegian BokmålnobnobNorsk BokmålIndividual
nnNorwegian NynorsknnonnoNorsk NynorskIndividual
ocOccitanociociOccitanIndividual
ojOjibwaojiojiᐊᓂᔑᓈᐯᒧᐎᓐ (Anishinaabemowin)Macrolanguage
orOriyaorioriଓଡ଼ିଆ (Odia)Macrolanguage
omOromoormormafaan OromooMacrolanguage
osOssetianossossиронIndividual
piPaliplipliPāliIndividual
psPashtopuspusپښتو (Pax̌tow)Macrolanguage
faPersianfas / perfasفارسی (Fārsiy)Macrolanguage
plPolishpolpolPolskiIndividual
ptPortugueseporporPortuguêsIndividual
paPunjabipanpanਪੰਜਾਬੀIndividual
quQuechuaquequeRunaMacrolanguage
roRomanianron / rumronRomânăIndividual
rmRomanshrohrohRumantschIndividual
rnRundirunrunIkirundiIndividual
ruRussianrusrusРусскийIndividual
seNorthern SamismesmeDavvisámegiellaIndividual
smSamoansmosmogagana SāmoaIndividual
sgSangosagsagyângâ tî SängöIndividual
saSanskritsansanसंस्कृतम् (Saṃskṛtam)Macrolanguage
scSardiniansrdsrdSarduMacrolanguage
srSerbiansrpsrpСрпски (Srpski)Individual
snShonasnasnachiShonaIndividual
sdSindhisndsndسنڌيIndividual
siSinhalasinsinසිංහල (Siṁhala)Individual
skSlovakslk / sloslkSlovenčinaIndividual
slSlovenianslvslvSlovenščinaIndividual
soSomalisomsomSoomaaliIndividual
stSouthern SothosotsotSesothoIndividual
esSpanishspaspaEspañolIndividual
suSundanesesunsunbasa SundaIndividual
swSwahiliswaswaKiswahiliMacrolanguage
ssSwatisswsswsiSwatiIndividual
svSwedishswesweSvenskaIndividual
tlTagalogtgltglWikang TagalogIndividual
tyTahitiantahtahreo TahitiIndividual
tgTajiktgktgkТоҷикӣ (Tojikī)Individual
taTamiltamtamதமிழ் (Tamiḻ)Individual
ttTatartattatТатар телеIndividual
teTeluguteltelతెలుగు (Telugu)Individual
thThaithathaภาษาไทย (Phasa Thai)Individual
boTibetanbod / tibbodབོད་སྐད་ (Bodskad)Individual
tiTigrinyatirtirትግርኛ (Təgrəñña)Individual
toTongatontonlea faka-TongaIndividual
tsTsongatsotsoXitsongaIndividual
tnTswanatsntsnSetswanaIndividual
trTurkishturturTürkçeIndividual
tkTurkmentuktukTürkmençeIndividual
twTwitwitwiTwiIndividual
ugUighuruiguigئۇيغۇر تىلىIndividual
ukUkrainianukrukrУкраїнська (Ukraїnska)Individual
urUrduurdurdاُردُو (Urduw)Individual
uzUzbekuzbuzbÓzbekçaMacrolanguage
veVendavenvenTshivenḓaIndividual
viVietnamesevievietiếng ViệtIndividual
voVolapükvolvolVolapükIndividual
waWalloonwlnwlnWalonIndividual
cyWelshcym / welcymCymraegIndividual
woWolofwolwolوࣷلࣷفْIndividual
xhXhosaxhoxhoisiXhosaIndividual
yiYiddishyidyidייִדיש (Yidiš)Macrolanguage
yoYorubayoryorèdè YorùbáIndividual
zaZhuangzhazha話僮 (''Vahcuengh'')Macrolanguage
zuZuluzulzulisiZuluIndividual
The two-letter codes are ISO 639-1, and every one of them is also a registered language subtag in the IANA language subtag registry - the registry that powers BCP 47 language tags on the web. Chinese carries two ISO 639-2 codes because the standard keeps a preferred "terminological" code derived from the native name (zho) alongside a legacy "bibliographic" code derived from the English name (chi); BCP 47 uses the terminological zho, while old MARC records still carry chi. Bottom line: pick the two-letter ISO 639-1 code whenever one exists for your language, drop to the three-letter ISO 639-3 code for the ~7,000 languages that have no two-letter form, and combine either with a script code for full tags like zh-Hans. Locale companions: ISO 15924 script codes table, country codes table, HTML lang codes table and currency codes table.

Two-letter language codes are the smallest piece of the biggest localization standard: en, zh, fr, de appear in every hreflang tag, Accept-Language header, locale identifier (en-US, pt-BR) and subtitle track. This table lists all 182 codes in ISO 639-1 - the complete set, because the registry has been closed to new two-letter codes since the standard matured - each with its ISO 639-2 and ISO 639-3 equivalents, the native name (Français, Deutsch, Русский) and a macrolanguage flag.

The assignment logic favours native names over English ones: de for Deutsch, es for Español, ja for Nihongo, el for Ellinika. But the system is not perfectly consistent - zh follows the English-rooted 'Chinese' tradition, and some codes echo colonial-era exonyms rather than endonyms, which is why checking the native-name column matters before assuming a code from the English name alone.

How to use

  1. Type a language name, native name or code to filter - the search covers all three, so 'de', 'German' and 'Deutsch' all land on the same row.
  2. Click the Living / Macrolanguage / Extinct chips to slice the table - 34 entries are macrolanguages (languages that group several closely related member languages) and about a dozen are extinct or historic.
  3. Click any code to copy the two-letter abbreviation straight to the clipboard.

Frequently asked questions

Why does Chinese have two ISO 639-2 codes, zho and chi?

ISO 639-2 deliberately maintains two parallel code sets: a preferred 'terminological' code (T) derived from the native name, and a legacy 'bibliographic' code (B) derived from the English name. For Chinese that yields zho (from Zhongwen) and chi (from Chinese). BCP 47 and modern web standards use the terminological zho; older library systems such as MARC records still carry chi. Only about 22 languages have both forms, and Chinese is by far the most encountered.

What is a macrolanguage and why is Chinese one?

A macrolanguage groups several closely related individual languages under one code. Chinese (zho) covers 19 member languages including Mandarin, Cantonese (yue), Wu (wuu) and Min Nan (nan) - mutually unintelligible when spoken, historically unified by the written script. The table flags all 34 macrolanguages (also Arabic, Quechua, Malay) because picking the macrolanguage code when you mean a specific member language loses real information.

My language is not in this table - does it have no code?

It almost certainly has one in ISO 639-3, which covers around 7,900 languages versus the 182 in this closed ISO 639-1 set. New languages are no longer added to the two-letter registry; they go to ISO 639-3 directly. For web tags this is fine: BCP 47 accepts three-letter subtags, so a language with no two-letter code still gets a valid language tag.

How do I combine a language code with a country or script?

BCP 47 builds tags from subtag chains: language, then script, then region. en-GB is English as used in the UK; zh-Hans is Chinese written in Simplified Han script; sr-Latn-RS is Serbian in Latin script as used in Serbia. Order matters - script before region - and each subtag comes from its own ISO registry (639 for language, 15924 for script, 3166 for region).

Related tools