Hreflang Language and Region Codes Reference

Complete reference for hreflang language and region codes. ISO 639-1 language codes and ISO 3166-1 alpha-2 country codes with examples.

Hreflang codes follow a specific format: language code alone, or language code combined with a region code. Using the wrong code -- or making up a plausible-sounding one -- means Google ignores your tag entirely.

Here's what you need to know, plus a reference table for the most common codes.

How the codes work

Hreflang uses two separate standards:

  • Language codes follow ISO 639-1 -- two-letter lowercase codes like en, fr, de
  • Region codes follow ISO 3166-1 alpha-2 -- two-letter codes like US, GB, AU

When you combine them, language comes first, separated by a hyphen: en-GB, es-MX, zh-CN. The region code is case-insensitive in practice -- en-gb and en-GB are both valid -- but uppercase is the standard convention for region codes.

You can use language alone (hreflang="es") or language plus region (hreflang="es-MX"). You cannot use region alone.

Common language codes

LanguageCodeExample usage
Englishenhreflang="en"
Spanisheshreflang="es"
Frenchfrhreflang="fr"
Germandehreflang="de"
Portuguesepthreflang="pt"
Italianithreflang="it"
Dutchnlhreflang="nl"
Russianruhreflang="ru"
Japanesejahreflang="ja"
Koreankohreflang="ko"
Chinese (Simplified)zhhreflang="zh"
Arabicarhreflang="ar"
Hindihihreflang="hi"
Swedishsvhreflang="sv"
Polishplhreflang="pl"
Turkishtrhreflang="tr"

Common combined language + region codes

Target audienceCodeNotes
English (United States)en-USUS English
English (United Kingdom)en-GBBritish English
English (Australia)en-AUAustralian English
English (Canada)en-CACanadian English
Spanish (Spain)es-ESCastilian Spanish
Spanish (Mexico)es-MXMexican Spanish
Spanish (Argentina)es-ARArgentine Spanish
French (France)fr-FRMetropolitan French
French (Canada)fr-CACanadian French
French (Belgium)fr-BEBelgian French
Portuguese (Brazil)pt-BRBrazilian Portuguese
Portuguese (Portugal)pt-PTEuropean Portuguese
German (Germany)de-DEStandard German
German (Austria)de-ATAustrian German
German (Switzerland)de-CHSwiss German
Chinese (Simplified, China)zh-CNMainland China
Chinese (Traditional, Taiwan)zh-TWTaiwan
Chinese (Traditional, Hong Kong)zh-HKHong Kong

Generate hreflang with correct codes automatically

No more looking up ISO codes. Paste your URLs, pick your languages, and get the tags ready to use.

Common code confusions

uk is not English. uk is the ISO 3166-1 alpha-2 code for Ukraine. English in the UK is en-GB. Using hreflang="uk" targets a language that doesn't exist in ISO 639-1 -- Google will ignore it.

sp is not Spanish. The correct code for Spanish is es. There's no sp in ISO 639-1.

en vs. en-US -- which to use? Use en if your English content isn't targeted at a specific country. Use en-US or en-GB only when your content genuinely differs between those markets. Using region-specific codes when the content is the same creates unnecessary complexity.

es vs. es-ES -- Similarly, es means "Spanish for all Spanish speakers." es-ES specifically targets Spain. If your Spanish content is the same for all Spanish-speaking countries, use es. If you have Mexico-specific pricing or content, use es-MX.

Chinese needs clarification. zh alone isn't enough for most sites. Chinese speakers in mainland China use Simplified characters (zh-CN); those in Taiwan use Traditional (zh-TW); Hong Kong (zh-HK) also uses Traditional with local variations. These are meaningfully different audiences.

Invalid codes Google rejects

WrongCorrectWhy
uken-GBuk = Ukraine (country code, not language)
spessp doesn't exist in ISO 639-1
brpt-BRbr = Brazil (country), not a language
cnzh-CNcn = China (country), not a language
jpjajp = Japan (country), not a language
krkokr = Korea (country), not a language

Google silently ignores invalid codes

If you use a code Google doesn't recognise, it won't surface an error in Search Console. The tag is simply ignored. This is why auditing your hreflang implementation matters -- invalid codes fail silently.

The x-default special value

x-default is not a language code -- it's a special hreflang value that designates the fallback page for users whose language isn't matched by any other tag. It doesn't map to any ISO standard.

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

Finding codes for less common languages

For languages not in the table above, the definitive reference is:

Use the two-letter ISO 639-1 codes for languages, not the three-letter ISO 639-2 codes. Both exist, but hreflang requires the two-letter variant.


Part of Boring Tools -- boring tools for boring jobs.

Generate perfect hreflang tags

Create and validate hreflang markup for your multilingual site. Free.