Hreflang in 2026: 80% of implementations I see are broken
Real-world patterns of broken hreflang in multi-country and bilingual sites: common errors, correct validation, and how it affects citations in AI Overviews.
Hreflang is the technical SEO detail with the worst importance/visibility ratio. When it's right, no one notices. When it's wrong, Google serves the incorrect version to half your international traffic and you never find out directly — you only see that your UK branch ranks worse than the ES one on English queries.
I've been auditing multi-country and multilingual sites for years (e-commerce, SaaS, law firms with offices in several cities, hospitality with menus in 2-3 languages). 80% have hreflang with at least one severe error. Here are the patterns that keep showing up.
Quick refresher
Hreflang is an attribute that tells Google: "this page has an equivalent version in another language or region, here's the URL". It lets Google serve the right version to the right user.
Typical HTML syntax:
<link rel="alternate" hreflang="es-es" href="https://example.com/es/" />
<link rel="alternate" hreflang="en-gb" href="https://example.com/en-gb/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />
It can also be declared in HTTP headers or in sitemap.xml. The three forms are equivalent; Google treats them the same.
The 6 errors I see in almost every site
Error 1: hreflang without return (half the sites)
The most important rule: if page A points to B with hreflang, page B must point back to A. It's bidirectional.
Wrong:
<!-- On /es/ -->
<link rel="alternate" hreflang="en" href="/en/" />
<!-- On /en/ — return missing: -->
<!-- (empty, no hreflang at all) -->
Right:
<!-- On /es/ -->
<link rel="alternate" hreflang="es" href="/es/" />
<link rel="alternate" hreflang="en" href="/en/" />
<!-- On /en/ -->
<link rel="alternate" hreflang="es" href="/es/" />
<link rel="alternate" hreflang="en" href="/en/" />
Without return, Google ignores the entire hreflang declaration. You fail.
Error 2: incorrectly written language codes
Hreflang accepts:
- Language only:
es,en,fr,de(valid). - Language + region:
es-es,en-gb,en-us,pt-br(valid). - Region only without language: invalid. Google ignores.
Common mistakes:
es_ES(with underscore) — should bees-ES.es-spain— should be ISO 3166-1 code, soes-esores-ES.english— should been.en-uk— should been-gb(United Kingdom is GB in ISO).
Upper vs lower case: technically Google normalizes them, but for consistency I recommend always lowercase (es-es) to avoid duplicates during crawl.
Error 3: pointing to URLs that return 404 or redirect
If your hreflang points to a URL that redirects (301) or returns 404, Google discards the whole group. Real audit: in a 5-country e-commerce site, 30% of hreflang pointed to old URLs that were already redirecting after a refactor.
Fix: validate all hreflang URLs with curl -I or a crawler. They must return 200 directly, no intermediate redirect.
Error 4: forgetting x-default
x-default indicates the URL for users whose language/region doesn't match any other declaration. It's the fallback.
If you don't set it, Google chooses arbitrarily. If you set it, you control the fallback.
<link rel="alternate" hreflang="x-default" href="https://example.com/" />
Usually points to the English version or the global home.
Error 5: hreflang on pages that are not equivalent
Hreflang must group equivalent pages (same intent, same content in different language/region). It does NOT work for:
- Pointing /es/zapatillas-rojas/ → /en/products/ (general). Pages are not equivalent.
- Pointing /es/blog/post-A/ → /en/blog/post-B/ where B is not a translation of A.
- Grouping a discontinued product in ES with a similar product in EN.
If you don't have an exact equivalent in region X, DON'T declare it. Better a smaller well-declared group than a large one with fake equivalents.
Error 6: declaring hreflang in HTML only and forgetting canonical
Hreflang and canonical coexist, they don't conflict. The rule:
- Each page must have
<link rel="canonical" href="THE-PAGE-ITSELF">pointing to itself. - The hreflang tags point to the equivalents in other regions/languages.
Wrong:
<!-- On /es/zapatillas/ -->
<link rel="canonical" href="/en/sneakers/" /> <!-- NO -->
<link rel="alternate" hreflang="en" href="/en/sneakers/" />
Right:
<!-- On /es/zapatillas/ -->
<link rel="canonical" href="/es/zapatillas/" /> <!-- to itself -->
<link rel="alternate" hreflang="es" href="/es/zapatillas/" />
<link rel="alternate" hreflang="en" href="/en/sneakers/" />
How to actually audit it
Tools that work
- Screaming Frog SEO Spider: crawl mode with hreflang report. Identifies missing return, invalid codes, redirects.
- hreflang.org validator (online, free): for validating specific groups.
xmllinton sitemap.xml to validate syntax if you declare hreflang there.- Search Console → International (if enabled): tab with hreflang errors detected by Google.
Quick 5-minute audit
# 1. Pull all URLs with hreflang from your sitemap
curl https://example.com/sitemap.xml | grep "hreflang" | head -20
# 2. Check return: for each pair X→Y, verify Y→X exists
# (Screaming Frog does this in batch automatically)
# 3. Verify each hreflang URL returns 200
for url in $(curl https://example.com/sitemap.xml | grep -oP 'href="\K[^"]+'); do
echo "$url: $(curl -sI $url | head -1)"
done
If the 3 checks pass clean, hreflang is fine. If any fail, fix before continuing with other SEO priorities.
Why it matters more in 2026
Classic hreflang serves so Google delivers the right version to each user. In 2026 a new layer appears: generative AIs also use hreflang to decide which version to cite.
If your ES site is mis-pointed via hreflang from the EN one, Perplexity and ChatGPT may cite your English version when the user asks in Spanish. Result: poorly segmented traffic, lower conversion, worse experience.
Bonus: Google AI Overviews also considers hreflang when choosing which of your pages to show. Correct implementation = citations in the correct language.
14-day plan to fix it
| Day | Action |
|---|---|
| 1-2 | Full crawl with Screaming Frog + export hreflang report |
| 3-4 | Identify groups with missing return → fix as you go |
| 5-6 | Validate language/region codes against ISO. Replace invalid ones |
| 7-8 | Verify all hreflang URLs return 200 (not 404 or 301) |
| 9-10 | Implement x-default where missing |
| 11-12 | Cross-check canonical + hreflang on each page (canonical to itself) |
| 13-14 | Re-crawl + validate everything clean + report improvement in GSC in 2-4 weeks |
Cases that do NOT need hreflang
- Monolingual site in a single country. Obvious but sometimes added out of inertia.
- Local small business whose only language is Spanish and only operates in Spain. No.
- Subdomain for staging or testing. Exclude with noindex, not with hreflang.
Do you have a multilingual or multi-country site and want to audit hreflang before moving on? It's one of the first things I check in a technical SEO audit. If you want implementation + continuous monitoring, monthly technical SEO includes it.
