Hreflang: The Complete Guide
International SEO lives or dies on one small, easily-broken attribute: hreflang. It tells search engines which language and regional version of a page to show a given user — and when it’s implemented incorrectly, the wrong audience sees the wrong page, or worse, Google ignores the signal entirely. This guide covers how hreflang works, how…
International SEO lives or dies on one small, easily-broken attribute: hreflang. It tells search engines which language and regional version of a page to show a given user — and when it’s implemented incorrectly, the wrong audience sees the wrong page, or worse, Google ignores the signal entirely. This guide covers how hreflang works, how to implement it correctly, and the mistakes that quietly sink most multilingual sites.
Table of Contents
- What Is Hreflang?
- How Hreflang Works
- Implementation Methods
- Common Mistakes
- How to Validate Hreflang
- Conclusion
- FAQs
Key Takeaways
- Hreflang is a signal, not a directive — Google uses it as one input among several, not an absolute command.
- Every hreflang cluster must be reciprocal: if Page A references Page B, Page B must reference Page A back, or Google disregards the annotation.
- Language codes follow ISO 639-1 (lowercase) and region codes follow ISO 3166-1 Alpha-2 (uppercase) — “en-GB,” not “en-UK.”
- Hreflang can be declared in the HTML <head>, in HTTP headers, or in an XML sitemap, and each page in a cluster needs a self-referencing tag.
- Use x-default to catch users who don’t match any specified language or region.
- Pair hreflang with self-referencing canonical tags on every page to avoid conflicting signals.
What Is Hreflang?
Hreflang (formally rel=”alternate” hreflang) is an HTML link attribute introduced in 2011 to help search engines match users to the most relevant language or regional version of a page. It doesn’t translate content or affect rankings directly — it routes traffic to the right existing version.
How Hreflang Works
Search engines process hreflang at the URL level, not the site level. Every page in a cluster (say, the English, French, and Spanish versions of one product page) must list all other versions, including itself. This reciprocity requirement is the single most-violated rule in international SEO: a one-way link, where the French page points to the English page but not vice versa, causes the whole relationship to be dropped.
Implementation Methods
HTML <head> Tags
The most common method — a <link rel=”alternate” hreflang=”fr” href=”…”> line for each language variant, placed in every page’s head. Simple to inspect and debug, but tag volume scales fast: a page with ten variants needs ten tags, repeated across all ten pages.
HTTP Headers
For non-HTML resources like PDFs, hreflang can be sent via a Link HTTP header instead of markup, since there’s no <head> to place a tag in.
XML Sitemaps
For large sites with many language versions or limited template access, hreflang annotations can live in the XML sitemap using xhtml:link. This centralizes maintenance — useful when adding a new locale or restructuring URLs — without touching every page template.
Common Mistakes
- Missing return tags — the most frequent failure. If one direction of the reciprocal link is absent, the annotation is ignored.
- Wrong ISO codes — “en-UK” is invalid; the correct code is “en-GB,” since region codes use ISO 3166-1, not colloquial abbreviations.
- No self-referencing tag — every page needs to reference itself within its own cluster.
- Conflicting canonicals — a canonical tag pointing to a different locale than the one hreflang is declaring undermines the whole setup.
- Non-200 status codes — hreflang targets that redirect or 404 invalidate the cluster.
How to Validate Hreflang
Google Search Console’s International Targeting report is the primary source of truth for what Google actually recognizes. Crawlers like Screaming Frog can surface missing return tags, bad codes, and broken links across a full site before issues reach production.
Conclusion
Hreflang is conceptually simple — declare every language version of a page and make sure the declarations point both ways — but it breaks down at scale precisely because of that reciprocity requirement. Get the codes right, keep every cluster complete, and validate regularly, and hreflang quietly does its job of routing the right user to the right page.
Frequently Asked Questions
Does hreflang directly boost rankings? No. It’s a routing signal that helps match users to the correct page version; it doesn’t influence how well any version ranks.
What does x-default do? It designates a fallback page for users who don’t match any of the specified language or region combinations.
Can hreflang and canonical tags conflict? Yes — if a canonical tag points to a different URL than the one hreflang designates for that language, search engines may disregard the hreflang annotation for that page.
How long does Google take to process hreflang changes? Since it’s crawled per-URL rather than site-wide, full processing across a large site can take several weeks depending on crawl budget.
