Conflicting Hreflang Entries: How to Diagnose and Fix Them
- December 24, 2025
- Hreflang, Validation

What this check flags
SEO ProCheck found a URL whose hreflang set contradicts itself: the same language-region value is declared twice with different destinations, or two rows point at the same destination with different language values. When Googlebot hits a contradiction it can't resolve, it discards the ambiguous entries — sometimes the whole set — and your carefully mapped localized pages fall back to whatever Google would have chosen on its own.
The three shapes a conflict takes
Conflicts are not one bug; they are a family. A duplicate-key conflict lists de-de twice with two different URLs, so Google can't tell which German-German page is real. A duplicate-target conflict maps two different language values to the identical URL, telling Google one page is simultaneously the French and the Spanish version. A directional conflict is subtler: page A calls page B its fr alternate, but page B calls itself fr-ca, so the return tag never matches and the pair fails validation. All three produce the same outcome — an unconfirmed, unusable relationship.
A real failing example
This set declares en twice, pointing at two rival URLs, and reuses one URL for both es and es-mx:
<link rel="alternate" hreflang="en" href="https://shop.example/en/" />
<link rel="alternate" hreflang="en" href="https://shop.example/en-row/" /> <!-- second en, different URL -->
<link rel="alternate" hreflang="es" href="https://shop.example/es/" />
<link rel="alternate" hreflang="es-mx" href="https://shop.example/es/" /> <!-- same URL as plain es -->Give each key exactly one destination and each destination exactly one key. If you genuinely need a generic Spanish page and a Mexico-specific one, they must be separate URLs:
<link rel="alternate" hreflang="en" href="https://shop.example/en/" />
<link rel="alternate" hreflang="es" href="https://shop.example/es/" />
<link rel="alternate" hreflang="es-mx" href="https://shop.example/es-mx/" />
<link rel="alternate" hreflang="x-default" href="https://shop.example/en/" />Then confirm https://shop.example/es-mx/ actually exists and returns the same complete set back. One key, one URL, in both directions — that is the whole rule.
Reading a conflict at a glance
| Symptom in the markup | Conflict type | Google's resolution |
|---|---|---|
| Same hreflang value on two rows, two URLs | Duplicate key | Both entries ignored for that key |
| Two hreflang values on rows sharing one URL | Duplicate target | Ambiguous mapping dropped |
Alternate says fr, return tag says fr-ca | Directional mismatch | Pair fails, no confirmed link |
| Sitemap says one thing, head tag says another | Method conflict | Undefined; signals compete |
How to detect it
- Screaming Frog — Hreflang tab. After a crawl, use the filters Multiple Entries, Inconsistent Language & Region Return Links, and Missing Confirmation Links. The Multiple Entries filter is the direct hit for duplicate keys; export it and sort by URL.
- Google Search Console. The legacy International Targeting report groups errors under "no return tags" and "unknown language code"; a spike there usually traces to directional and duplicate-key conflicts. Use URL Inspection to see the alternates Google actually parsed for a page.
- An hreflang validator. Paste the set into a validator such as the site's Hreflang Validator, which flags duplicate keys and reciprocity gaps in one pass. Regenerate clean markup with the Hreflang Tag Generator to eliminate hand-editing mistakes.
- Diff the delivery methods. If some pages ship hreflang in the head and others in an XML sitemap, extract both and diff them — competing methods are a frequent hidden source of contradictions.
How to fix it
- Export the full annotation list for the affected URL cluster and build a two-column map: language-region key on one side, destination URL on the other.
- Enforce a strict one-to-one relationship. Delete any row that duplicates a key, and split any URL that is doing double duty into distinct pages.
- Rebuild the return tags so every member lists every other member with identical, consistent keys — if A calls B
fr-ca, B must call itselffr-ca. - Commit to a single delivery method for the whole set. Mixing head tags and sitemap entries is where most "phantom" conflicts hide.
- Re-crawl and confirm the Multiple Entries filter returns nothing.
Because reciprocity is where most of these break, it helps to review the mechanics of return tags in the hreflang implementation walkthrough and the canonical international SEO guide. If your generic-versus-regional split is the culprit, our note on lang and x-default shows how to keep the fallback distinct.
FAQ
Is it ever valid to list the same language twice?
Only with different region subtags — en-us and en-gb are fine. The bare same value (en twice) pointing at two URLs is always a conflict.
Can two pages share one hreflang URL if they're near-identical?
No. Each language-region key needs a unique destination. If two pages are that similar, merge them or canonicalize one to the other and annotate only the survivor.
Why does one bad row break the whole set?
Hreflang is bidirectional. A row that Google can't confirm leaves a dangling return tag, and depending on where the ambiguity sits, Google may distrust neighbouring entries rather than just the broken one.
My CMS injects hreflang and I also have a sitemap version — which wins?
Neither reliably. Running two methods for the same set is itself a conflict source. Turn one off so a single source of truth remains.
Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.







