What hreflang Does
The hreflang attribute solves a specific problem: when you have the same content in multiple languages or country variants, how does Google know which version to show to which user?
Without hreflang, Google might show your French-language page to English speakers in Canada, or your US-market pricing page to users in the UK. With hreflang, you explicitly tell Google: "Show version A to English speakers in the US, version B to French speakers in France, and version C to English speakers in the UK."
hreflang does not boost rankings. It improves search result relevance by ensuring the correct variant appears for the correct audience.
Implementation Formats
There are three ways to implement hreflang, in order of preference:
1. HTML link element in head (recommended for most sites)
<head>
<link rel="alternate" hreflang="en-US" href="https://example.com/en-us/page" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/en-gb/page" />
<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr-fr/page" />
<link rel="alternate" hreflang="x-default" href="https://example.com/page" />
</head>
2. HTTP header (for non-HTML files like PDFs)
Link: <https://example.com/en/file.pdf>; rel="alternate"; hreflang="en",
<https://example.com/fr/file.pdf>; rel="alternate"; hreflang="fr"
3. XML sitemap (for large sites with many URLs)
<url>
<loc>https://example.com/en-us/page</loc>
<xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/en-us/page"/>
<xhtml:link rel="alternate" hreflang="fr-FR" href="https://example.com/fr-fr/page"/>
</url>
Common Mistakes to Avoid
Missing reciprocal tags — The most common mistake. Every URL in your hreflang set must list all other variants. If page A lists page B as an alternate, page B must list page A as an alternate. Missing reciprocal tags cause Google to ignore the entire hreflang set.
Wrong language codes — Use valid ISO 639-1 language codes (en, fr, de, zh) and ISO 3166-1 alpha-2 country codes (US, GB, FR, CN). "english" and "usa" are wrong; "en-US" and "fr-FR" are correct.
Not including x-default — The x-default value specifies which URL to show when no other variant matches. Always include it, pointing to your default or most universal version.
Including noindex pages — Don't include redirected, noindexed, or canonicalized pages in hreflang. Only canonical, indexable URLs.
Different pages, not just different languages — All URLs in a hreflang set should represent the same content in different languages/regions — not different pages that happen to have similar topics.
GSC International Targeting Report
GSC has an International Targeting report (Settings → International Targeting) that shows:
- Language tab — hreflang errors (missing reciprocal tags, unknown language codes, mismatched URLs)
- Country tab — If you're using Search Console's country targeting setting (only applicable for subdomain or subdirectory implementations)
Review the Language tab regularly for hreflang errors across your site.
URL Structure Recommendations
ccTLD (country-code top-level domain) — example.fr, example.de. Strongest geo-targeting signal, but requires separate domain registration and management per country.
Subdomain — fr.example.com, de.example.com. Moderate geo-targeting signal, easier to manage than ccTLDs, but splits domain authority.
Subdirectory — example.com/fr/, example.com/de/. Weakest geo-targeting signal, but consolidates domain authority and is easiest to manage. Recommended for most teams starting with internationalization.
Combine your chosen URL structure with hreflang tags and the GSC International Targeting setting for the strongest signal combination.
Links: Google hreflang implementation guide | hreflang Checker tool