Skip to content

/ BLOG8 min

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.

  • technical-seo
  • hreflang
  • i18n
  • multi-country

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 be es-ES.
  • es-spain — should be ISO 3166-1 code, so es-es or es-ES.
  • english — should be en.
  • en-uk — should be en-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

  1. Screaming Frog SEO Spider: crawl mode with hreflang report. Identifies missing return, invalid codes, redirects.
  2. hreflang.org validator (online, free): for validating specific groups.
  3. xmllint on sitemap.xml to validate syntax if you declare hreflang there.
  4. 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

DayAction
1-2Full crawl with Screaming Frog + export hreflang report
3-4Identify groups with missing return → fix as you go
5-6Validate language/region codes against ISO. Replace invalid ones
7-8Verify all hreflang URLs return 200 (not 404 or 301)
9-10Implement x-default where missing
11-12Cross-check canonical + hreflang on each page (canonical to itself)
13-14Re-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.

[[ ¿TE RESULTA ÚTIL? ]]

Hablemos de tu proyecto.

Diagnóstico inicial de 30 min sin compromiso. Te digo qué veo y si tiene sentido que trabajemos juntos. Sin packs cerrados.

Contactar →

[ SEGUIR LEYENDO ]

Hreflang in 2026: 80% of implementations I see are broken — Jesús Porres · Jesús Porres