Conflicting Outgoing

No Comments
Conflicting outgoing
TL;DR: A single page is sending two or more conflicting hreflang annotations for the same language or region, pointing that one code at different URLs. Google cannot pick a winner, so it throws the whole cluster out. Give every language and region code exactly one target URL and the conflict disappears.
Check code
HR-014
Category
Hreflang
Effect
Cluster ignored
Detect with
Frog + validators
Fix
One URL per code

What "conflicting outgoing" means

Hreflang is a set of annotations that tell Google which URL serves each language and region. Each annotation is a pair: a language or region code, and the single URL that code maps to. The rule is one to one. A given code, say de-AT for German in Austria, must resolve to exactly one URL from any page that references it.

A conflicting outgoing annotation is when one page emits the same code twice or more, pointing at different URLs. The page says hreflang="fr" href=".../fr/page-a/" and also hreflang="fr" href=".../fr/page-b/". Now Google has two candidates for French and no way to know which one you meant. "Outgoing" is the direction: these are the annotations leaving this page, as opposed to what other pages point back at it. The word conflicting is the diagnosis: the outgoing set contradicts itself.

Why Google throws it out

Hreflang only works when the signals are consistent. Google has said that if it finds conflicting or invalid hreflang annotations, it may ignore some or all of them. It does not guess. Faced with two URLs claiming the same code, the safe move for Google is to discard the ambiguous mapping, and often the surrounding cluster with it, then fall back to its own judgment about which page to serve.

The practical damage: the wrong language version can surface for a user, or your carefully built alternates get ignored and Google picks based on other signals. For a site that invested in localization, that is your whole international targeting quietly failing. The pages still exist, they just stop being connected the way you intended. That is the frustrating part, because the content is fine; the wiring is what broke.

What a conflict looks like

Conflict: fr points at two URLs hreflang="fr" /fr/page-a/ /fr/page-b/ Google ignores the cluster

Clean: one code, one URL hreflang="fr" /fr/page-a/ Mapping honored

The usual causes

Conflicts rarely come from someone typing the same tag twice on purpose. They come from generation logic and duplication:

  1. Two systems both emit hreflang. A plugin and a theme, or a CMS and a CDN edge worker, each write their own set, and the two disagree on which URL a code maps to.
  2. Trailing slash and protocol drift. One annotation uses /fr/page/ and another /fr/page, or one is http and the other https. To a validator those are different URLs for the same code.
  3. Parameter and case variants. A tracking parameter or a difference in capitalization produces two distinct URLs for one language.
  4. Stale mappings after a migration. Old hreflang entries survive a restructure and now point at moved or redirected URLs alongside the new correct ones.
  5. Region and language mixups. A template outputs both fr and fr-FR pointing at different URLs when they should agree or the plan should choose one.

Reference: conflict patterns and fixes

PatternWhy it conflictsFix
Same code, two hrefsGoogle has no tiebreakerDelete the wrong one
Slash vs no slashCounted as two URLsStandardize on canonical form
http and https for one codeProtocol mismatchUse absolute https everywhere
Two plugins output hreflangDuplicate, disagreeing setsDisable one source
Redirecting URL in the setPoints away from the real pagePoint at the final 200 URL

How to detect it

  1. Screaming Frog. Its hreflang tab and reports flag inconsistent, missing, and conflicting annotations across a full crawl. This is the fastest way to find every offending page at once.
  2. Search Console, International Targeting. The legacy report and general coverage signals still surface hreflang problems Google encountered, including ignored annotations.
  3. A dedicated hreflang validator. Tools that parse a URL's annotations will show you exactly which code is claimed by more than one href.
  4. View source and the raw HTML. Grep the head for repeated hreflang values. If one code appears twice with different hrefs, you have found it. Do the same for HTTP header and sitemap hreflang if you use those delivery methods, since the conflict can live in any of the three.
  5. Check all three delivery channels. Hreflang can ship in the HTML head, in HTTP headers, or in the XML sitemap. Mixing methods is a common way to create a conflict without noticing, so audit whichever ones your stack uses.
DO
  • Map every language and region code to one URL
  • Use absolute https URLs in a consistent format
  • Pick a single system to generate hreflang
  • Point annotations at final 200 pages, not redirects
  • Validate the full cluster with Screaming Frog
DON'T
  • Emit the same code with two different hrefs
  • Let a plugin and theme both write hreflang
  • Mix slash and no slash versions of one URL
  • Leave stale mappings live after a migration
  • Assume a conflict only weakens one code, it can void the set

How to fix it, step by step

  1. Find the source of truth. Decide which system owns hreflang generation and turn the others off. Two generators is the most common root cause and it will keep reappearing until you consolidate.
  2. Deduplicate every code. For each page, ensure each language and region code appears exactly once. Delete the extra annotations, do not just reorder them.
  3. Normalize the URLs. Absolute, https, one consistent trailing slash convention, no tracking parameters. This kills the slash and protocol variants that masquerade as separate URLs.
  4. Confirm return links. Hreflang must be bidirectional. Once outgoing is clean, verify each referenced page points back with a matching annotation. A missing return link is the next error you will hit.
  5. Recrawl and verify. Run Screaming Frog again and check the validator until the conflict is gone across the whole cluster, not just the page you started with.

What good looks like

Every page emits one hreflang set from one system. Each code maps to exactly one absolute https URL. There are no duplicate codes, no slash or protocol variants, and no redirecting targets. Return links match in both directions, and a fresh Screaming Frog crawl reports zero hreflang conflicts. Google honors your mapping and serves the right language version to the right audience.

FAQ

Does a conflict only break the one code, or the whole set?
It can break more than the single code. Google has said it may ignore some or all annotations when it finds them invalid or conflicting, so a single duplicated code can put the surrounding cluster at risk. Treat every conflict as if it endangers the whole mapping.
Can I have both fr and fr-FR pointing at different URLs?
Yes, if that reflects a real plan: fr as a language default and fr-FR for France specifically. That is not a conflict because they are different codes. It only becomes a conflict when the same code, fr for instance, points at two different URLs.
Is a trailing slash difference really treated as two URLs?
For strict matching, yes. /fr/page/ and /fr/page are different strings. If your annotations mix them for one code, a validator will read that as a conflict, so standardize on one form site wide.
Where should I put hreflang to avoid conflicts?
Pick one delivery method: HTML head link tags, HTTP headers, or the XML sitemap. Sitemap hreflang scales best for large sites. The important thing is to use a single method consistently so two channels cannot contradict each other.

International targeting quietly failing?

Conflicting hreflang is one of those errors that never throws a visible warning, it just makes your localization stop working. A technical audit maps every annotation and finds the conflicts before they cost you traffic in the wrong markets.

Get an advanced SEO audit

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.

Subscribe to our newsletter!

More from our blog