Hreflang Best Practices
Last updated
Hreflang is the attribute that tells Google which language and region a page targets, and how that page relates to equivalent pages in other languages or regions. When implemented correctly, it prevents the internal competition between language variants that would otherwise split authority and produce inconsistent rankings across markets.
For a full reference covering syntax, ISO codes, and all three delivery methods, see Hreflang and International SEO. This page covers the strategic decisions and maintenance considerations that determine whether hreflang works in practice.
When hreflang is needed
Hreflang is necessary whenever a site has multiple pages targeting the same topic for different language or regional audiences. The most common scenarios:
- Multiple languages: English and French versions of the same content
- Same language, different regions: British English (
en-GB) and American English (en-US) - Language plus regional variants: French for France (
fr-FR) and French for Canada (fr-CA)
Hreflang is not needed when:
- The site operates in a single language for a single country
- Pages in different languages cover genuinely different topics (not regional variants of the same content)
- The site uses ccTLDs with completely distinct content and no overlapping pages
The two rules that cause most failures
Self-reference: every page in a hreflang set must include an annotation pointing to itself. A page declaring other language versions without including itself is invalid and the annotations may be ignored.
Reciprocity: if page A declares page B as its French equivalent, page B must declare page A as its English equivalent. Non-reciprocal annotations are ignored by Google. This means that when you add a new language version, every existing page in the set must be updated to reference the new URL.
Both rules create a maintenance problem at scale. Adding a tenth language to a 500-page site means touching 5,000 existing hreflang annotations. This is why template-driven or sitemap-based hreflang is preferable to manually maintained HTML tags.
HTML tags vs sitemap delivery
HTML link tags placed in the <head> of each page work well for small to medium sites where hreflang can be generated from templates. Every page must list every language equivalent including itself:
<link rel="alternate" hreflang="en-GB" href="https://example.com/en-gb/page/" />
<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/page/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/page/" />
XML sitemap entries declaring hreflang relationships in a sitemap rather than per-page HTML are better for large sites. All hreflang relationships are managed in one place, reducing the risk of drift. Do not declare hreflang in both HTML and sitemap; choose one method and apply it consistently across the entire site.
x-default
The x-default value specifies the fallback URL for users who do not match any specific hreflang. This is typically the language-selector page or the global version of a site:
<link rel="alternate" hreflang="x-default" href="https://example.com/" />
If no x-default is set and a user does not match any declared hreflang, Google will choose a URL based on other signals, which may not be the one you want.
Hreflang and canonicals
Hreflang and canonical tags work together but serve different purposes:
- Canonical tells Google which URL is the preferred version of a page within the same language.
- Hreflang tells Google which URLs serve the same content in different languages or regions.
If a page has a canonical pointing to a different URL, the hreflang on the canonicalised page may be ignored. Every page in a hreflang set should have a self-referential canonical (pointing to itself). Never canonicalise a page to another language version.
Partial hreflang
Some sites do not have all content available in all languages. A blog might publish articles only in English while product pages exist in six languages. Hreflang should only be applied where genuine language equivalents exist. Product pages in all six languages: annotate them all. Blog posts available only in English: do not annotate them.
Applying hreflang to pages without genuine equivalents creates a mismatch between the annotation and the content, which Google ignores or treats as a quality concern.
Auditing hreflang
Search Console > International Targeting reports hreflang errors detected during crawl. This report surfaces the most common errors at scale: non-reciprocal tags, invalid language codes, and hreflang pointing to noindex or redirected pages.
Crawler tools (Screaming Frog, Sitebulb) crawl the full site and map hreflang relationships. They identify missing self-references, broken target URLs, and inconsistencies between the declared hreflang and the actual page content.
Spot-checks: manually inspect the source of several pages after any CMS update or template change that affects the <head>. Hreflang is commonly the first element to break when site templates are modified.
Common errors and their effects
| Error | Effect |
|---|---|
| Missing self-reference | Full annotation set may be ignored |
| Non-reciprocal annotations | Non-matching side is ignored |
| Hreflang on noindex pages | Annotations weakened or ignored |
| Hreflang pointing to redirected URLs | Annotations may be followed one hop; unreliable |
Invalid language code (e.g. en-UK) | Annotation invalid, silently ignored |
| Multiple URLs for same hreflang value | Invalid; may confuse Google’s processing |
| HTML and sitemap hreflang both present | Conflict; pick one method only |
Frequently asked questions
Does hreflang improve rankings? Indirectly. Hreflang ensures the right version of a page is served to the right audience, which reduces irrelevant impressions and improves engagement signals. The tag itself is not a direct ranking factor, but getting it wrong actively damages international performance.
How long does hreflang take to be processed? Google processes hreflang during normal crawl cycles. For large sites, several weeks after implementation may pass before all annotations are discovered and processed. The sitemap approach tends to be processed more quickly than HTML tags for large sites.
Does Google always follow hreflang? No. Google treats hreflang as a hint, not a directive. If the declared page content does not match the declared language, the annotation may be ignored. Hreflang is also ignored for noindexed pages, pages blocked by robots.txt, and pages that return errors.