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. For a complete walkthrough of hreflang from basics to validation, see our comprehensive hreflang guide.

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, combined according to RFC 5646:

  • 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.

Try Hreflang Generator

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. This is one of the most frequent hreflang mistakes.

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. See do you need hreflang for a single language for guidance on when regional codes are worth the effort.

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. Read the full x-default guide for implementation details.

<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 references are:

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. See hreflang HTML examples for how these codes are used in practice.


References

Generate perfect hreflang tags

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

Try Hreflang Generator