sfw/fix
hreflang → redirect medium

Hreflang Link Points to a Redirect / Non-Canonical URL

An hreflang annotation references a URL that redirects or is non-canonical, so Google may distrust and ignore the whole language cluster.

What you see

Issue: Hreflang to redirect or non-canonical URL
<link rel="alternate" hreflang="en-gb" href="https://example.com/uk/page" />
  → https://example.com/uk/page returns 301 → /en-gb/page

What’s actually happening

Your hreflang tags point at URLs that 301/302 or that canonicalize to a different URL. Google's hreflang validation treats this as a broken signal: if the en-gb URL redirects, Google can't trust the mapping and may drop the entire set of language/region alternates, so the wrong locale version shows up in regional search results.

Common causes

  • The hreflang href uses an old URL pattern that was later redirected (locale path changed, e.g. /uk/ → /en-gb/)
  • Mixing trailing-slash or http/https forms in hreflang that trigger your normalization redirects
  • The referenced locale page canonicalizes to a different (e.g. default-language) URL instead of being self-canonical
  • Auto-generated hreflang built from a stale URL table that doesn't reflect current live paths
  • One locale in the cluster was removed/merged but its hreflang entry was left pointing at a now-redirecting URL

How to fix it

  1. Audit each hreflang URL's status and canonicalCrawl with Screaming Frog (which has a dedicated hreflang report) or use Ahrefs/Semrush hreflang checks. For every hreflang href confirm it returns 200 and has a self-referencing canonical — flag any that 3xx or canonicalize elsewhere.
  2. Point every hreflang at the live, self-canonical 200 URLUpdate each annotation so the href is the final destination URL for that locale (the one that returns 200 and canonicals to itself). No hreflang should ever point at a redirecting or canonicalized-away URL.
  3. Keep the cluster fully reciprocalEvery page in the set must list all alternates including itself (x-default where used), and all of them must use the same corrected, non-redirecting URLs. A one-way or mismatched cluster is ignored just like a redirecting one.
  4. Validate after the fixRe-crawl and check the hreflang report for errors, then watch Search Console's International Targeting / page indexing reports over the following crawls to confirm the alternates are being honored.

Stop it recurring

Generate hreflang from the current canonical URL of each locale page (never a stored historical path) and re-validate hreflang after any URL or locale change.

Related errors