Códigos de idioma de Hreflang: lista completa y reglas

The complete reference of valid hreflang language and region codes, with Google's format rules, x-default, script codes, and the code mistakes that break hreflang.
Sin datos de tarjeta Sin compromiso

· Actualizado · Alex B · Blog

An hreflang value is a two-letter ISO 639-1 language code (for example fr), optionally followed by a hyphen and a two-letter ISO 3166-1 alpha-2 region code (for example fr-CA for French speakers in Canada). The language always comes first, a region can never be used on its own, and the reserved value x-default marks the fallback page. Google does not support other code systems, so UN M.49 area codes such as es-419 for Latin American Spanish are ignored.

Conclusiones clave

  • Format: language o language-REGION, e.g. de, de-AT, pt-BR. Case does not matter to Google, but lowercase language and uppercase region is the convention.
  • Use ISO 639-1 for the language and ISO 3166-1 alpha-2 for the region. Nothing else is supported, including es-419, en-UK y en-EU.
  • A script subtag from ISO 15924 is allowed when you need it: zh-Hans, zh-Hant, sr-Latn.
  • Every page in a set must list itself and all its alternates, and each alternate must link back.
  • Agregar x-default for the page you want people to see when no listed language or region matches.

The full lists of valid language codes and region codes are further down this page. The rules come from Google’s own documentation, Tell Google about localized versions of your page, which Google last updated on 21 September 2026.

How an hreflang code is built

An hreflang value has up to three parts, separated by hyphens:

PartStandardRequired?Ejemplos
IdiomaISO 639-1 (two letters)Yes, always firsten, es, ja, ar
GuiónISO 15924 (four letters)OptionalHans, Hant, Latn, Cyrl
RegiónISO 3166-1 alpha-2 (two letters)OptionalUS, GB, MX, BR

So all of these are valid: en, en-GB, zh-Hant, zh-Hant-TW, sr-Latn. The first part must be a language. As Google’s documentation puts it, you can’t specify the country code by itself. Its example is Belgium: nl-BE (Dutch for users in Belgium) and de-BE (German for users in Belgium) are correct, while be on its own means Belarusian, not Belgium.

Google also says the value is case-insensitive. en-gb, EN-GB y en-GB all work. Most teams write the language in lowercase and the region in uppercase because that is how the ISO lists print them, and it makes mistakes easier to spot in code review.

Language-only or language plus region?

Utilice un language-only code (es) when one page serves every speaker of that language, wherever they live. Most sites translated with a website translation tool fall into this group: one Spanish version, one German version, and so on.

Añadir un region (es-MX, es-ES) only when you really have different pages for different countries. Good reasons are different prices or currencies, different shipping and legal text, or deliberately different wording (for example pt-BR y pt-PT, o en-US y en-GB with local spelling and prices).

You can mix both. A common pattern is a generic page plus regional exceptions:

<link rel="alternate" hreflang="es" href="https://example.com/es/" />
<link rel="alternate" hreflang="es-MX" href="https://example.com/es-mx/" />
<link rel="alternate" hreflang="en" href="https://example.com/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />

A searcher in Mexico gets the es-MX page; a Spanish speaker in Chile, Spain or the US gets the generic es página.

What about Latin American Spanish (es-419)?

This is the most common question about hreflang codes, and the answer is short: Google does not support es-419. Its documentation names it as the example of an unsupported code, because 419 is a UN M.49 area code (“Latin America and the Caribbean”), not an ISO 3166-1 country code. The same applies to other M.49 numbers such as 150 (Europe).

If you have one Latin American Spanish page, you have two workable options:

  1. Mark it as plain es. If you have no separate Spain version, this is the simplest choice and covers every Spanish speaker.
  2. List the countries individually. If you also have a Spain page (es-ES), point several country codes at the same Latin American URL: es-MX, es-AR, es-CO, es-CL, es-PE and so on. One URL can carry several hreflang values.

The same thinking applies to French for Africa, Arabic for the Gulf, or “English for Europe”: there are no supported region groups, so use the language alone or list the countries.

x-default: the fallback value

x-default is not a language. It is a reserved value that Google uses “when no other language/region matches the user’s browser setting”. Point it at a language selector page or at your main version:

<link rel="alternate" hreflang="x-default" href="https://example.com/" />

It is optional, but it is worth adding. Without it, a visitor whose language you don’t cover gets whichever version Google picks.

Where the code goes: three ways to implement hreflang

Google accepts hreflang in three places. Pick one method per page; you don’t need all three.

1. HTML <link> etiquetas en el <head>

<link rel="alternate" hreflang="en" href="https://example.com/pricing" />
<link rel="alternate" hreflang="de" href="https://example.com/de/pricing" />
<link rel="alternate" hreflang="fr-CA" href="https://example.com/fr-ca/pricing" />
<link rel="alternate" hreflang="x-default" href="https://example.com/pricing" />

2. HTTP Link headers (useful for PDFs and other non-HTML files)

Link: <https://example.com/guide.pdf>; rel="alternate"; hreflang="en",
      <https://example.com/de/guide.pdf>; rel="alternate"; hreflang="de"

3. XML sitemap entries

<url>
  <loc>https://example.com/pricing</loc>
  <xhtml:link rel="alternate" hreflang="en" href="https://example.com/pricing" />
  <xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/pricing" />
</url>

Whichever you choose, three rules from Google’s documentation apply:

  • Each version lists itself and every other version. The set on the German page is the same as the set on the English page.
  • Links must be reciprocal. If page X points to page Y, page Y must point back to X, or the annotation can be ignored.
  • URLs must be fully qualified, including https://. /de/pricing o //example.com/de/pricing are not accepted.

For a full walk-through of the implementation itself, including canonicals and testing, see our Guía completa de Hreflang and the explainer on etiquetas hreflang autorreferenciales.

The most common hreflang code mistakes

Most broken hreflang sets we see come down to a handful of wrong codes. Several of them are valid codes that simply mean something else, so validators don’t always flag them.

WrittenLo que realmente significaUse instead
en-UKNothing: UK is not an ISO 3166-1 codeen-GB
es-LASpanish for Laos (LA is Laos)es, or individual countries
es-419Unsupported (UN M.49 area code)es, or individual countries
en-EUNothing: EU is not a country codeen, or individual countries
jpNothing: not a language codeja (Japanese)
cnNothing: not a language codezh (Chinese), zh-CN for China
krKanuri, a language spoken around Lake Chadko (Korean)
seNorthern Samisv (Swedish)
dk, cz, gr, uaNot language codesda, cs, el, uk
uk meaning “UK English”Ucranioen-GB
be meaning BelgiumBelarusiannl-BE, fr-BE, de-BE
in, iwOld, withdrawn codesid (Indonesian), he (Hebrew)
filThree-letter code, not in ISO 639-1tl is the ISO 639-1 code for Tagalog

The pattern behind most of these: people type the country code where the language code belongs. Japan is JP but Japanese is ja; Sweden is SE but Swedish is sv; Denmark is DK but Danish is da.

Other frequent problems are not about the codes at all: missing return links, relative URLs, hreflang pointing to a URL that redirects or is blocked, and a canonical tag that points every language version to the English page. Our article on the no-return-tags error covers how to fix those.

Chinese, Serbian and other languages with more than one script

Some languages are written in more than one script, and the script matters more than the country.

  • Chinese. Uso zh-Hans for Simplified and zh-Hant for Traditional if your pages differ by script rather than by country. If they are country-specific, zh-CN, zh-TW y zh-HK work too; Google notes that with zh-TW the script (Traditional) is derived from the region. You can be explicit with zh-Hant-TW.
  • Serbian. sr-Latn y sr-Cyrl separate the Latin and Cyrillic versions.
  • Norwegian. ISO 639-1 has no (Norwegian), nb (Bokmål) and nn (Nynorsk). Most Norwegian websites are in Bokmål; use whichever code matches the text and stay consistent.

Common language and region combinations

These are the combinations most multilingual sites need. All are valid under Google’s rules.

Audienciahreflang
English, any countryen
English, United States / United Kingdom / Canada / Australiaen-US / en-GB / en-CA / en-AU
Spanish, any countryes
Spanish, Spain / Mexico / Argentinaes-ES / es-MX / es-AR
Portuguese, Brazil / Portugalpt-BR / pt-PT
French, France / Canada / Belgium / Switzerlandfr-FR / fr-CA / fr-BE / fr-CH
German, Germany / Austria / Switzerlandde-DE / de-AT / de-CH
Chinese, Simplified / Traditionalzh-Hans / zh-Hant
Chinese, China / Taiwan / Hong Kongzh-CN / zh-TW / zh-HK
Japanese / Koreanja / ko
Arabic, any country / Saudi Arabia / UAEar / ar-SA / ar-AE
Hindi / Indonesian / Vietnamese / Thaihi / id / vi / th
Ukrainian / Polish / Turkish / Dutchuk / pl / tr / nl
Fallback for everyone elsex-default

How ConveyThis sets hreflang codes for you

If you translate your site with ConveyThis, you don’t write these tags by hand. When you use a subdomain or subfolder URL structure, ConveyThis adds hreflang tags for every language you publish, using the correct language codes, together with translated page titles and meta descriptions. That removes the two errors behind most broken sets: wrong codes and missing return links. You can read what else it handles on the página de SEO multilingüe, y el Guía de estructura de URL explains which structure to pick and which plans include it. Subdomains and subfolders are available from the Business plan; see Precios for the details.

If you build hreflang yourself, the reference lists below are the only codes you need.

Complete list of hreflang language codes (ISO 639-1)

All 183 two-letter codes in ISO 639-1, as published by the Library of Congress, the ISO 639-2 registration authority. Any of them can be the first part of an hreflang value. Where a code has several names, they are separated by a slash.

Idiomahreflang code
Abkhazianab
Afaraa
Afrikaansaf
Akanak
Albaniansq
Amharicam
Arábicaar
Aragonesean
Armenianhy
Assameseas
Avaricav
Avestanae
Aymaraay
Azerbaijaniaz
Bambarabm
Bashkirba
Basqueeu
Belarusianbe
Bengalibn
Bislamabi
Bosnianbs
Bretonbr
Bulgarianbg
Burmesemy
Catalan / Valencianca
Central Khmerkm
Chamorroch
Chechence
Chichewa / Chewa / Nyanjany
Chinozh
Church Slavic / Old Slavonic / Church Slavonic / Old Bulgarian / Old Church Slavoniccu
Chuvashcv
Cornishkw
Corsicanco
Creecr
Croatahr
Checocs
Danésda
Divehi / Dhivehi / Maldiviandv
Dutch / Flemishnl
Dzongkhadz
Inglésen
Esperantoeo
Estonianet
Eweee
Faroesefo
Fijianfj
Finnishfi
Francésfr
Fulahff
Gaelic / Scottish Gaelicgd
Galiciangl
Gandalg
Georgianka
Alemánde
Greek (modern)el
Guaranign
Gujaratigu
Haitian / Haitian Creoleht
Hausaha
Hebreohe
Hererohz
Hindihi
Hiri Motuho
Húngarohu
Icelandicis
Idoio
Igboig
Indonesianid
Interlingua (International Auxiliary Language Association)ia
Interlingue / Occidentalie
Inuktitutiu
Inupiaqik
Irishga
Italianoit
Japonésja
Javanesejv
Kalaallisut / Greenlandickl
Kannadakn
Kanurikr
Kashmiriks
Kazakhkk
Kikuyu / Gikuyuki
Kinyarwandarw
Kirghiz / Kyrgyzky
Komikv
Kongokg
Coreanoko
Kuanyama / Kwanyamakj
Kurdishku
Laolo
Latinla
Latvianlv
Limburgan / Limburger / Limburgishli
Lingalaln
Lithuanianlt
Luba-Katangalu
Luxembourgish / Letzeburgeschlb
Macedonianmk
Malagasymg
Malayms
Malayalamml
Maltesemt
Manxgv
Maorimi
Marathimr
Marshallesemh
Mongolianmn
Nauruna
Navajo / Navahonv
Ndongang
Nepaline
North Ndebelend
Northern Samise
Norwegian Bokmålnb
Norwegian Nynorsknn
Noruegono
Occitanoc
Ojibwaoj
Oriyaor
Oromoom
Ossetian / Osseticos
Palipi
Panjabi / Punjabipa
Persianfa
Polacopl
Portuguéspt
Pushto / Pashtops
Quechuaqu
Romanian / Moldavian / Moldovanro
Romanshrm
Rundirn
Rusoru
Samoansm
Sangosg
Sanskritsa
Sardiniansc
Serbiosr
Shonasn
Sichuan Yi / Nuosuii
Sindhisd
Sinhala / Sinhalesesi
Slovaksk
Sloveniansl
Somaliso
Sotho, Southernst
South Ndebelenr
Spanish / Castilianes
Sundanesesu
Swahilisw
Swatiss
Suecosv
Tagalogtl
Tahitianty
Tajiktg
Tamilta
Tatartt
Telugute
Tailandésth
Tibetanbo
Tigrinyati
Tonga (Tonga Islands)to
Tsongats
Tswanatn
Turcotr
Turkmentk
Twitw
Uighur / Uyghurug
Ucraniouk
Urduur
Uzbekuz
Vendave
Vietnamesevi
Volapükvo
Walloonwa
Welshcy
Western Frisianfy
Wolofwo
Xhosaxh
Yiddishyi
Yorubayo
Zhuang / Chuangza
Zuluzu

Complete list of hreflang region codes (ISO 3166-1 alpha-2)

All 249 officially assigned ISO 3166-1 alpha-2 codes. Any of them can follow the language code, e.g. en-IE o ar-EG. Codes that are not on this list, such as UK, EU o XK, or numeric UN M.49 codes such as 419, are not supported by Google.

Country or territoryRegion code
AfghanistanAF
AlbaniaAL
ArgeliaDZ
American SamoaAS
AndorraAD
AngolaAO
AnguillaAI
AntarcticaAQ
Antigua and BarbudaAG
ArgentinaAR
ArmeniaAM
ArubaAW
AustraliaAU
AustriaAT
AzerbaijanAZ
BahamasBS
BahrainBH
BangladeshBD
BarbadosBB
BelarusBY
BélgicaBE
BelizeBZ
BeninBJ
BermudaBM
BhutanBT
BoliviaBO
Bonaire, Sint Eustatius and SabaBQ
Bosnia and HerzegovinaBA
BotswanaBW
Bouvet IslandBV
BrasilBR
British Indian Ocean TerritoryIO
British Virgin IslandsVG
Brunei DarussalamBN
BulgariaBG
Burkina FasoBF
BurundiBI
Cabo VerdeCV
CambodiaKH
CamerúnCM
CanadáCA
Cayman IslandsKY
Central African RepublicCF
ChadTD
ChileCL
PorcelanaCN
Christmas IslandCX
Cocos (Keeling) IslandsCC
ColombiaCO
ComorosKM
CongoCG
Congo (Democratic Republic)CD
Cook IslandsCK
Costa RicaCR
CroaciaHR
CubaCU
CuraçaoCW
CyprusCY
ChequiaCZ
Côte d’IvoireCI
DinamarcaDK
DjiboutiDJ
DominicaDM
Dominican RepublicDO
EcuadorEC
EgiptoEG
El SalvadorSV
Equatorial GuineaGQ
EritreaER
EstoniaEE
EswatiniSZ
EthiopiaET
Falkland IslandsFK
Faroe IslandsFO
FijiFJ
FinlandiaFI
FranciaFR
French GuianaGF
French PolynesiaPF
French Southern TerritoriesTF
GabonGA
GambiaGM
GeorgiaGE
AlemaniaDE
GhanaGH
GibraltarGI
GreciaGR
GreenlandGL
GrenadaGD
GuadeloupeGP
GuamGU
GuatemalaGT
GuernseyGG
GuineaGN
Guinea-BissauGW
GuyanaGY
HaitiHT
Heard Island and McDonald IslandsHM
Holy SeeVA
HondurasHN
Hong KongHK
HungríaHU
IcelandIS
IndiaIN
IndonesiaID
IránIR
IraqIQ
IrlandaIE
Isle of ManIM
IsraelIL
ItaliaIT
JamaicaJM
JapónJP
JerseyJE
JordaniaJO
KazajstánKZ
KeniaKE
KiribatiKI
KuwaitKW
KyrgyzstanKG
LaosLA
LetoniaLV
LebanonLB
LesothoLS
LiberiaLR
LibyaLY
LiechtensteinLI
LituaniaLT
LuxembourgLU
MacaoMO
MadagascarMG
MalawiMW
MalasiaMY
MaldivesMV
MaliML
MaltaMT
Marshall IslandsMH
MartiniqueMQ
MauritaniaMR
MauritiusMU
MayotteYT
MéxicoMX
MicronesiaFM
MoldaviaMD
MonacoMC
MongoliaMN
MontenegroME
MontserratMS
MarruecosMA
MozambiqueMZ
MyanmarMM
NamibiaNA
NauruNR
NepalNP
Países BajosNL
New CaledoniaNC
Nueva ZelandaNZ
NicaraguaNI
NigerNE
NigeriaNG
NiueNU
Norfolk IslandNF
North KoreaKP
North MacedoniaMK
Northern Mariana IslandsMP
NoruegaNO
OmanOM
PakistánPK
PalauPW
PalestinePS
PanamáPA
Papua New GuineaPG
ParaguayPY
PerúPE
FilipinasPH
PitcairnPN
PoloniaPL
PortugalPT
Puerto RicoPR
QatarQA
RumaniaRO
RussiaRU
RwandaRW
RéunionRE
Saint BarthélemyBL
Saint Helena, Ascension and Tristan da CunhaSH
Saint Kitts and NevisKN
Saint LuciaLC
Saint Martin (French part)MF
Saint Pierre and MiquelonPM
Saint Vincent and the GrenadinesVC
SamoaWS
San MarinoSM
Sao Tome and PrincipeST
Arabia SaudíSA
SenegalSN
SerbiaRS
SeychellesSC
Sierra LeoneSL
SingapurSG
Sint Maarten (Dutch part)SX
EslovaquiaSK
EsloveniaSI
Solomon IslandsSB
SomaliaSO
SudáfricaZA
South Georgia and the South Sandwich IslandsGS
Corea del SurKR
South SudanSS
EspañaES
Sri LankaLK
SudanSD
SurinameSR
Svalbard and Jan MayenSJ
SueciaSE
SuizaCH
SyriaSY
TaiwánTW
TajikistanTJ
TanzaniaTZ
TailandiaTH
Timor-LesteTL
TogoTG
TokelauTK
TongaTO
Trinidad and TobagoTT
TúnezTN
TurkmenistanTM
Turks and Caicos IslandsTC
TuvaluTV
TürkiyeTR
U.S. Virgin IslandsVI
UgandaUG
UcraniaUA
Emiratos Árabes UnidosAE
Reino UnidoGB
Estados UnidosUS
United States Minor Outlying IslandsUM
UruguayUY
UzbekistánUZ
VanuatuVU
VenezuelaVE
VietnamVN
Wallis and FutunaWF
Western Sahara*EH
YemenYE
ZambiaZM
ZimbabweZW
Åland IslandsAX

Preguntas frecuentes

Is hreflang case-sensitive? No. Google accepts en-gb, EN-GB y en-GB. Lowercase language plus uppercase region is the usual convention.

Should I use an underscore, as in en_US? No. hreflang values use a hyphen: en-US. The underscore form comes from software locale settings, not from hreflang.

Can I use three-letter language codes? Google’s documentation only supports ISO 639-1 language codes, which are all two letters. A language that only has a three-letter code (ISO 639-2 or 639-3) isn’t in the supported list.

Does Google use the HTML lang attribute instead? No. Google determines a page’s language from its visible content and doesn’t use code-level signals such as lang attributes, according to its guide to multi-regional and multilingual sites. Keep lang for accessibility and browsers, and use hreflang to connect the versions.

Do I need a region code for every page? No. Most translated sites only need language codes. Add regions when the pages really differ by country.

Want every page connected with correct hreflang codes automatically? Crea una cuenta ConveyThis y añade tu primer idioma.

Compartir:
G2 High Performer Spring 2023
G2 Easiest Setup Fall 2024
G2 Best Support Spring 2025