Common Hreflang Errors (And How to Fix Them)

Hreflang is one of the few tags that fails silently. Get a meta title wrong and someone will notice within a day. Get hreflang wrong, and your German page keeps quietly ranking for French searchers, or your x-default sends everyone to the wrong region — for months — with nothing in your rankings dashboard flagging it as broken.

The tag itself is simple: a link element or sitemap entry that tells search engines which page to serve for which language and region. What trips people up isn't the syntax, it's the handful of easy-to-miss rules around it — rules that, when broken, cause Google to discard the whole cluster rather than half-apply it.

Quick Answer

The most common hreflang errors are missing return tags (Page A links to Page B but not back), invalid or malformed language-country codes, conflicting canonical tags, missing self-referencing tags, and no x-default fallback. Each of these can cause Google to ignore the entire hreflang set for that group of pages, not just the broken entry.

What counts as a hreflang error?

A hreflang error is any point where the tag makes a claim your site doesn't actually back up. Search engines treat hreflang as a promise between pages, and they check that promise strictly — a single broken link in the chain is often enough to void the whole cluster.

None of these require unusual configurations to happen. They show up on ordinary multi-region sites after a migration, a redesign, or simply because two teams edited the sitemap and the templates without checking each other's work.

Why hreflang errors matter more than they look

Hreflang errors rarely trigger a visible penalty, which is exactly why they persist for so long. The damage shows up indirectly:

📊 Quick stat Missing return tags are consistently the single most reported hreflang issue in Search Console's international targeting data — more common than invalid codes and canonical conflicts combined.

Step-by-step: auditing and fixing hreflang

  1. Decide on one implementation method. Pick HTML head tags, an XML sitemap, or HTTP headers as the single source of truth per page — never split the same URL's declarations across more than one method.
  2. List every locale variant for each page group. Confirm each language/region version actually exists, is indexable, and returns a 200 status before adding it to a cluster.
  3. Add a self-referencing tag to every page. Each page in the cluster must list itself alongside the others — a page that only links out but never references its own URL is a common gap.
  4. Check that every link is reciprocal. If Page A declares Page B, Page B must declare Page A back, using the exact same URL, including protocol, trailing slash, and query parameters.
  5. Add an x-default where relevant. For clusters serving multiple languages or regions, include an x-default entry pointing to the fallback page shown to visitors who don't match any declared variant.
  6. Cross-check against canonical tags. Make sure no page's canonical tag points somewhere other than the URL it uses to reference itself in its own hreflang set.
  7. Validate with a crawl. Run the live pages through an hreflang-aware crawler or Search Console's international targeting report to catch anything the manual checks missed.
Try the Rebrixe Hreflang Generator — free Enter your locale URLs, get a validated, ready-to-paste hreflang tag set. No coding required.
Generate Hreflang Tags →

The most common hreflang errors

1. Missing return tags

Page A links to Page B in its hreflang set, but Page B doesn't link back to Page A. This is the most frequently reported hreflang problem, and it usually happens after a partial migration, a removed locale, or a sitemap that wasn't regenerated after URLs changed.

2. Invalid or reversed language-country codes

Codes like en-us written as us-en, or a made-up code that doesn't map to a real ISO 639-1 language or ISO 3166-1 country, get silently ignored by Google rather than throwing a visible error anywhere in your site.

3. Hreflang conflicting with canonical tags

If a page's canonical points to a different URL than the one it uses in its own hreflang cluster, Google treats the canonical as the real preference — which can pull the page out of the cluster entirely and undo the international targeting.

4. No self-referencing tag

Every page in a hreflang cluster needs to list itself, not just the other locale versions. Skipping the self-reference is a small omission that's easy to make when tags are added by hand or copy-pasted between templates.

5. Missing x-default

Without an x-default entry, there's no explicit instruction for visitors whose language or location doesn't match any declared variant — Google falls back to ordinary ranking signals instead of your intended default.

6. Mixing implementation methods for the same URL

Declaring one set of hreflang values in the HTML head and a different set in the XML sitemap for the same page creates a direct conflict, and search engines have no reliable way to know which one is correct.

7. Pointing to non-indexable pages

Hreflang values that resolve to a redirect, a 404, or a page blocked by noindex or robots.txt are treated as broken links in the cluster, not as valid regional variants.

💡 Pro tip After any site migration, redesign, or bulk URL change, re-run a hreflang crawl before anything else — migrations are the single most common trigger for broken return tags.

Real-world examples

How these errors typically show up on real sites, and what causes them:

E-commerce site
Broken return tags
Partial migration
A /uk/ store was moved to a new URL structure but the /fr/ and /de/ pages still reference the old, now-redirecting UK URL.
SaaS marketing site
Canonical conflict
Silent drop from cluster
Every locale page canonicalizes to the English version to "consolidate SEO strength," which cancels out the hreflang tags on every non-English page.
News publisher
Missing x-default
Wrong fallback shown
Five language versions exist with no x-default, so visitors outside those five languages get whichever version ranks best generally, not the intended global page.
Travel booking site
Sitemap/head mismatch
Conflicting declarations
Hreflang in the sitemap was updated after a domain change, but the HTML head tags on the pages themselves still reference the old domain.

In every case, the trigger wasn't a misunderstanding of what hreflang does — it was a change made in one place that didn't get mirrored everywhere the tag was declared.

Hreflang implementation methods compared

Where you declare hreflang affects how easy it is to keep consistent and how likely each error type is to creep in.

Method Best fit Common failure mode Ease of maintenance
HTML <link> tags Small to mid-size sites Forgotten self-reference or return tag Straightforward per page
XML sitemap Large catalogs, many locales Sitemap not regenerated after URL changes Needs automated generation
HTTP header Non-HTML files (PDFs, docs) Rarely audited, drifts unnoticed Easy to forget entirely
Mixed methods, same URL Not recommended Conflicting values between sources High risk, avoid

Generate correct hreflang tags right now — free

The Rebrixe Hreflang Generator builds a validated, reciprocal set of hreflang tags for all your locale URLs, including x-default, so you don't have to hand-write link elements or keep track of ISO codes yourself.

Free Hreflang Tag Generator Enter your locale URLs, get a validated tag set instantly.
Open Hreflang Generator →

Frequently asked questions

A hreflang error is any mismatch between what your hreflang tags claim and what your pages actually deliver — like pointing to a URL that doesn't exist, using a language code that doesn't map to a real language, or annotating a page without an accompanying self-referencing tag. Search engines respond by ignoring the whole cluster rather than guessing what you meant.
They don't directly penalize a page the way a manual action would, but a broken hreflang cluster means Google falls back to normal signals to pick which regional page to show — which often surfaces the wrong language or country version to a given searcher, costing clicks and conversions even if rankings look fine.
Yes — it's the single most reported hreflang error in Search Console. It happens whenever Page A links to Page B in its hreflang set but Page B doesn't link back to Page A, which most often occurs after a partial site migration, a language version being removed, or a sitemap that wasn't regenerated after a URL change.
Any one of the three works, but only one should be your source of truth per page. HTML head tags suit most sites, sitemap-based hreflang scales better for very large catalogs, and HTTP headers are mainly used for non-HTML resources like PDFs. Mixing all three for the same URL is a common source of conflicting values.
Not strictly, but it's recommended whenever a page has multiple language or region versions, since x-default tells Google which version to show a visitor whose language or location doesn't match any of your defined variants. Without it, Google guesses using ordinary ranking signals instead.
Yes, and it's a frequent mistake. If a page's canonical tag points to a different URL than the one referenced in its own hreflang cluster, Google treats the canonical as the real preference and may drop the page from the hreflang set entirely, undoing the international targeting.
Search Console's International Targeting-style crawl reports and third-party crawlers built for hreflang auditing will both flag missing return tags, unsupported language codes, and conflicting canonicals. Spot-checking a handful of URL pairs by hand is a reasonable starting point on smaller sites.
A generator prevents syntax mistakes and invalid language-country codes by construction, but it can't know whether the URLs you enter actually exist, are indexable, or link back to each other — those checks still require validating the live pages after the tags are published.

Generate correct hreflang tags in seconds

The Rebrixe Hreflang Generator builds a validated, reciprocal hreflang tag set for all your locale URLs — no account, no watermark, and no hand-written link elements.

Launch the Hreflang Generator →
← Back to blogs