Hreflang language codes

The first part of every hreflang value is a two-letter ISO 639-1 language code. Here is the complete list, generated from the Unicode CLDR data built into modern browsers.

Write the language in lower case, then optionally a hyphen and a country code: pt for all Portuguese speakers, pt-BR for Brazil. 78 of these language codes are spelled like an unrelated country's code, which is the source of classic mistakes such as hreflang="be" for Belgium (it means Belarusian). They are marked in the table.

CodeLanguageNative nameExample hreflang
abAbkhazianAbkhazianab, ab-GE
aaAfarAfaraa, aa-ET
afAfrikaansNot Afghanistan: as a language code "af" means Afrikaans.Afrikaansaf, af-ZA
akAkanAkanak, ak-GH
twAkanNot Taiwan: as a language code "tw" means Akan.Akantw, tw-GH
sqAlbanianshqipsq, sq-AL
amAmharicNot Armenia: as a language code "am" means Amharic.አማርኛam, am-ET
arArabicNot Argentina: as a language code "ar" means Arabic.العربيةar, ar-EG
anAragoneseAragonesean, an-ES
hyArmenianհայերենhy, hy-AM
asAssameseNot American Samoa: as a language code "as" means Assamese.অসমীয়াas, as-IN
avAvaricAvaricav, av-RU
aeAvestanNot United Arab Emirates: as a language code "ae" means Avestan.Avestanae, ae-IR
ayAymaraAymaraay, ay-BO
azAzerbaijaniazərbaycanaz, az-AZ
bmBambaraNot Bermuda: as a language code "bm" means Bambara.bamanakanbm, bm-ML
bnBanglaNot Brunei: as a language code "bn" means Bangla.বাংলাbn, bn-BD
baBashkirNot Bosnia & Herzegovina: as a language code "ba" means Bashkir.башҡортba, ba-RU
euBasqueeuskaraeu, eu-ES
beBelarusianNot Belgium: as a language code "be" means Belarusian.беларускаяbe, be-BY
bhBhojpuriNot Bahrain: as a language code "bh" means Bhojpuri.Bhojpuribh, bh-IN
biBislamaNot Burundi: as a language code "bi" means Bislama.Bislamabi, bi-VU
bsBosnianNot Bahamas: as a language code "bs" means Bosnian.bosanskibs, bs-BA
brBretonNot Brazil: as a language code "br" means Breton.brezhonegbr, br-FR
bgBulgarianбългарскиbg, bg-BG
myBurmeseNot Malaysia: as a language code "my" means Burmese.မြန်မာmy, my-MM
caCatalanNot Canada: as a language code "ca" means Catalan.catalàca, ca-ES
chChamorroNot Switzerland: as a language code "ch" means Chamorro.Chamorroch, ch-GU
ceChechenнохчийнce, ce-RU
zhChinese中文zh, zh-CN
cuChurch SlavicNot Cuba: as a language code "cu" means Church Slavic.Church Slaviccu, cu-RU
cvChuvashNot Cape Verde: as a language code "cv" means Chuvash.чӑваш чӗлхиcv, cv-RU
kwCornishNot Kuwait: as a language code "kw" means Cornish.kernewekkw, kw-GB
coCorsicanNot Colombia: as a language code "co" means Corsican.Corsicanco, co-FR
crCreeNot Costa Rica: as a language code "cr" means Cree.Creecr, cr-CA
hrCroatianhrvatskihr, hr-HR
csCzechčeštinacs, cs-CZ
daDanishdanskda, da-DK
dvDivehiDivehidv, dv-MV
nlDutchNederlandsnl, nl-NL
dzDzongkhaNot Algeria: as a language code "dz" means Dzongkha.རྫོང་ཁdz, dz-BT
enEnglishEnglishen, en-US
eoEsperantoEsperantoeo
etEstonianNot Ethiopia: as a language code "et" means Estonian.eestiet, et-EE
eeEweNot Estonia: as a language code "ee" means Ewe.eʋegbeee, ee-GH
foFaroeseføroysktfo, fo-FO
fjFijianNot Fiji: as a language code "fj" means Fijian.Fijianfj, fj-FJ
fiFinnishsuomifi, fi-FI
frFrenchfrançaisfr, fr-FR
ffFulaPulaarff, ff-SN
glGalicianNot Greenland: as a language code "gl" means Galician.galegogl, gl-ES
lgGandaLugandalg, lg-UG
kaGeorgianქართულიka, ka-GE
deGermanDeutschde, de-DE
elGreekΕλληνικάel, el-GR
gnGuaraniNot Guinea: as a language code "gn" means Guarani.Guaranign, gn-PY
guGujaratiNot Guam: as a language code "gu" means Gujarati.ગુજરાતીgu, gu-IN
htHaitian CreoleHaitian Creoleht, ht-HT
haHausaHausaha, ha-NG
heHebrewעבריתhe, he-IL
hzHereroHererohz, hz-NA
hiHindiहिन्दीhi, hi-IN
hoHiri MotuHiri Motuho, ho-PG
huHungarianmagyarhu, hu-HU
isIcelandicíslenskais, is-IS
ioIdoNot British Indian Ocean Territory: as a language code "io" means Ido.Idoio
igIgboIgboig, ig-NG
idIndonesianIndonesiaid, id-ID
iaInterlinguainterlinguaia
ieInterlingueNot Ireland: as a language code "ie" means Interlingue.Interlingueie, ie-EE
iuInuktitutInuktitutiu, iu-CA
ikInupiaqInupiaqik, ik-US
gaIrishNot Gabon: as a language code "ga" means Irish.Gaeilgega, ga-IE
itItalianitalianoit, it-IT
jaJapanese日本語ja, ja-JP
jvJavaneseJawajv, jv-ID
klKalaallisutkalaallisutkl, kl-GL
knKannadaNot St. Kitts & Nevis: as a language code "kn" means Kannada.ಕನ್ನಡkn, kn-IN
krKanuriNot South Korea: as a language code "kr" means Kanuri.Kanurikr, kr-NG
ksKashmiriکٲشُرks, ks-IN
kkKazakhқазақ тіліkk, kk-KZ
kmKhmerNot Comoros: as a language code "km" means Khmer.ខ្មែរkm, km-KH
kiKikuyuNot Kiribati: as a language code "ki" means Kikuyu.Gikuyuki, ki-KE
rwKinyarwandaIkinyarwandarw, rw-RW
kvKomiKomikv, kv-RU
kgKongoNot Kyrgyzstan: as a language code "kg" means Kongo.Kongokg, kg-CD
koKorean한국어ko, ko-KR
kjKuanyamaKuanyamakj, kj-NA
kuKurdishkurdî (kurmancî)ku, ku-TR
kyKyrgyzNot Cayman Islands: as a language code "ky" means Kyrgyz.кыргызчаky, ky-KG
loLaoລາວlo, lo-LA
laLatinNot Laos: as a language code "la" means Latin.Latinla, la-VA
lvLatvianlatviešulv, lv-LV
liLimburgishNot Liechtenstein: as a language code "li" means Limburgish.Limburgishli, li-NL
lnLingalalingálaln, ln-CD
ltLithuanianlietuviųlt, lt-LT
luLuba-KatangaNot Luxembourg: as a language code "lu" means Luba-Katanga.Tshilubalu, lu-CD
lbLuxembourgishNot Lebanon: as a language code "lb" means Luxembourgish.Lëtzebuergeschlb, lb-LU
mkMacedonianмакедонскиmk, mk-MK
mgMalagasyMalagasymg, mg-MG
msMalayNot Montserrat: as a language code "ms" means Malay.Melayums, ms-MY
mlMalayalamNot Mali: as a language code "ml" means Malayalam.മലയാളംml, ml-IN
mtMalteseMaltimt, mt-MT
gvManxGaelggv, gv-IM
miMāoriMāorimi, mi-NZ
mrMarathiNot Mauritania: as a language code "mr" means Marathi.मराठीmr, mr-IN
mhMarshalleseNot Marshall Islands: as a language code "mh" means Marshallese.Marshallesemh, mh-MH
mnMongolianмонголmn, mn-MN
naNauruNot Namibia: as a language code "na" means Nauru.Nauruna, na-NR
nvNavajoNavajonv, nv-US
ngNdongaNot Nigeria: as a language code "ng" means Ndonga.Ndongang, ng-NA
neNepaliNot Niger: as a language code "ne" means Nepali.नेपालीne, ne-NP
ndNorth NdebeleisiNdebelend, nd-ZW
seNorthern SamiNot Sweden: as a language code "se" means Northern Sami.davvisámegiellase, se-NO
noNorwegianNot Norway: as a language code "no" means Norwegian.norskno, no-NO
nbNorwegian Bokmålnorsk bokmålnb, nb-NO
nnNorwegian Nynorsknorsk nynorsknn, nn-NO
nyNyanjaNyanjany, ny-MW
ocOccitanoccitanoc, oc-FR
orOdiaଓଡ଼ିଆor, or-IN
ojOjibwaOjibwaoj, oj-CA
omOromoNot Oman: as a language code "om" means Oromo.Oromooom, om-ET
osOsseticиронos, os-GE
piPaliPalipi, pi-GB
psPashtoNot Palestinian Territories: as a language code "ps" means Pashto.پښتوps, ps-AF
faPersianفارسیfa, fa-IR
plPolishpolskipl, pl-PL
ptPortugueseportuguêspt, pt-BR
paPunjabiNot Panama: as a language code "pa" means Punjabi.ਪੰਜਾਬੀpa, pa-IN
quQuechuaRunasimiqu, qu-PE
roRomanianromânăro, ro-RO
rmRomanshrumantschrm, rm-CH
rnRundiIkirundirn, rn-BI
ruRussianрусскийru, ru-RU
smSamoanNot San Marino: as a language code "sm" means Samoan.Samoansm, sm-WS
sgSangoNot Singapore: as a language code "sg" means Sango.Sängösg, sg-CF
saSanskritNot Saudi Arabia: as a language code "sa" means Sanskrit.संस्कृत भाषाsa, sa-IN
scSardinianNot Seychelles: as a language code "sc" means Sardinian.sardusc, sc-IT
gdScottish GaelicNot Grenada: as a language code "gd" means Scottish Gaelic.Gàidhliggd, gd-GB
srSerbianNot Suriname: as a language code "sr" means Serbian.српскиsr, sr-RS
snShonaNot Senegal: as a language code "sn" means Shona.chiShonasn, sn-ZW
iiSichuan Yiꆈꌠꉙii, ii-CN
sdSindhiNot Sudan: as a language code "sd" means Sindhi.سنڌيsd, sd-PK
siSinhalaNot Slovenia: as a language code "si" means Sinhala.සිංහලsi, si-LK
skSlovakslovenčinask, sk-SK
slSlovenianNot Sierra Leone: as a language code "sl" means Slovenian.slovenščinasl, sl-SI
soSomaliSoomaaliso, so-SO
nrSouth NdebeleNot Nauru: as a language code "nr" means South Ndebele.South Ndebelenr, nr-ZA
stSouthern SothoNot São Tomé & Príncipe: as a language code "st" means Southern Sotho.Sesothost, st-ZA
esSpanishespañoles, es-ES
suSundaneseBasa Sundasu, su-ID
swSwahiliKiswahilisw, sw-TZ
ssSwatiNot South Sudan: as a language code "ss" means Swati.Swatiss, ss-ZA
svSwedishNot El Salvador: as a language code "sv" means Swedish.svenskasv, sv-SE
tyTahitianTahitianty, ty-PF
tgTajikNot Togo: as a language code "tg" means Tajik.тоҷикӣtg, tg-TJ
taTamilதமிழ்ta, ta-IN
ttTatarNot Trinidad & Tobago: as a language code "tt" means Tatar.татарtt, tt-RU
teTeluguతెలుగుte, te-IN
thThaiไทยth, th-TH
boTibetanNot Bolivia: as a language code "bo" means Tibetan.བོད་སྐད་bo, bo-CN
tiTigrinyaትግርኛti, ti-ET
toTonganlea fakatongato, to-TO
tsTsongaTsongats, ts-ZA
tnTswanaNot Tunisia: as a language code "tn" means Tswana.Setswanatn, tn-ZA
trTurkishTürkçetr, tr-TR
tkTurkmenNot Tokelau: as a language code "tk" means Turkmen.türkmen dilitk, tk-TM
ukUkrainianукраїнськаuk, uk-UA
urUrduاردوur, ur-PK
ugUyghurNot Uganda: as a language code "ug" means Uyghur.ئۇيغۇرچەug, ug-CN
uzUzbeko‘zbekuz, uz-UZ
veVendaNot Venezuela: as a language code "ve" means Venda.Vendave, ve-ZA
viVietnameseNot U.S. Virgin Islands: as a language code "vi" means Vietnamese.Tiếng Việtvi, vi-VN
voVolapükVolapükvo
waWalloonWalloonwa, wa-BE
cyWelshNot Cyprus: as a language code "cy" means Welsh.Cymraegcy, cy-GB
fyWestern FrisianFryskfy, fy-NL
woWolofWolofwo, wo-SN
xhXhosaIsiXhosaxh, xh-ZA
yiYiddishייִדישyi, yi-UA
yoYorubaÈdè Yorùbáyo, yo-NG
zaZhuangNot South Africa: as a language code "za" means Zhuang.Vahcuenghza, za-CN
zuZuluisiZuluzu, zu-ZA

Script subtags

For languages written in more than one script, Google accepts an ISO 15924 script between language and region:

  • zh-Hans Chinese (Simplified), zh-Hant Chinese (Traditional)
  • zh-Hans-SG Simplified Chinese for Singapore, zh-Hant-HK Traditional for Hong Kong
  • sr-Latn / sr-Cyrl Serbian in Latin or Cyrillic script

If you use zh-TW, Google derives the script automatically (Traditional), so a script subtag is only needed when the region doesn't settle it.

Codes people get wrong

  • jp is Japan; Japanese is ja.
  • se is Northern Sami; Swedish is sv.
  • dk isn't a language; Danish is da.
  • gr isn't a language; Greek is el.
  • cz isn't a language; Czech is cs.
  • ua isn't a language; Ukrainian is uk, which also explains why en-UK is so tempting and so wrong.
  • iw, in and ji are withdrawn codes; use he, id and yi.

The validator catches all of these and suggests the right code.

Language code questions

Which language codes does hreflang use?

Two-letter ISO 639-1 codes, such as en, de, ja or pt. Google says only codes listed in ISO 639-1 are supported for the language part.

Can I use three-letter codes like fil or yue?

Not as the language part of hreflang. Google’s documentation limits it to ISO 639-1. Languages that only have three-letter codes cannot be targeted with their own hreflang value.

How do I target Simplified vs Traditional Chinese?

Use an ISO 15924 script subtag: zh-Hans for Simplified and zh-Hant for Traditional, optionally followed by a region such as zh-Hant-HK. zh-TW and zh-CN also work because Google derives the script from those regions.

Is it en-us or en-US?

Either. Hreflang values are case-insensitive. en-US follows the ISO convention of upper-case regions.

What is the hreflang code for Norwegian?

no (Norwegian), with nb (Bokmål) and nn (Nynorsk) also in ISO 639-1. Pick the one that matches the page; many Norwegian sites use no or nb.