Hreflang vs Canonical Conflicts

Your hreflang setup looks correct. Every page in the cluster links to every other page, the return tags check out, the language codes are valid. And yet Google Search Console still shows your German page as "Alternate page with proper canonical tag" and it never shows up for German searchers at all.

Nine times out of ten, the hreflang markup isn't the problem. The canonical tag is quietly undoing it — pointing that German page back to the English original, which tells Google the two pages aren't independent at all, no matter what the hreflang tags claim. Two correct-looking signals, sent from the same page, saying opposite things.

Quick Answer

A hreflang/canonical conflict happens when a page's canonical tag points to a different URL than the one hreflang lists as its alternate, usually because canonical points to a default-language version instead of the page itself. Google treats canonical as the stronger signal, so it can drop the localized page from its own market's results and disregard the hreflang cluster for that URL. The fix is a self-referencing canonical on every localized page.

What is a hreflang/canonical conflict?

Hreflang and canonical tags exist to solve two different problems, and most of the time they coexist without issue. A conflict appears specifically when a page's canonical tag points somewhere other than itself, while that same page is also listed as a distinct hreflang alternate.

The rule that resolves nearly every case: every page inside a hreflang cluster should carry a self-referencing canonical, pointing to its own URL, not to any of its alternates.

Why it matters

A conflicting canonical doesn't just create a warning in Search Console — it changes what actually shows up in search results:

📊 Quick stat A page reported as "Alternate page with proper canonical tag" in Google Search Console's Coverage report is almost always a hreflang/canonical conflict, not a hreflang markup error — check the canonical tag before touching anything else.

Step-by-step: auditing and fixing the conflict

  1. List every URL in each hreflang cluster. Pull the full set of localized pages that reference each other as hreflang alternates.
  2. Check each page's canonical tag. Confirm whether it points to itself or to a different URL in the cluster — a different URL is the conflict.
  3. Set every canonical to self-reference. Update the canonical href on each localized page to match that page's own URL exactly.
  4. Re-verify the hreflang return tags. While you're auditing, confirm every page in the cluster still links back to every other page, including itself.
  5. Recrawl and resubmit. Request indexing on the corrected pages or wait for the next crawl, since a cached conflicting canonical can persist briefly after the fix.
  6. Confirm in Search Console. Check the International Targeting report and Coverage report to verify the "Alternate page with proper canonical tag" warning clears for those URLs.
Try the Rebrixe Hreflang Generator — free Add your page groups and language codes, get complete, return-tag-safe hreflang markup.
Generate Hreflang Tags →

Common mistakes that cause the conflict

1. Canonical pointing to the default-language page

The most frequent cause: a translated page's canonical tag is left pointing at the English or primary-market original, usually inherited unchanged from a shared template.

2. Treating translated pages as duplicate content

Canonicalizing a Spanish page to its English counterpart makes sense for near-duplicate tracking-parameter URLs, but translated content is not duplicate content — it needs its own canonical, not a consolidated one.

3. CMS or plugin defaults that auto-canonicalize

Some multilingual CMS setups default every translation's canonical to the "original" post ID unless manually overridden, silently creating the conflict at scale across an entire site.

4. Fixing hreflang without checking canonical

Teams that troubleshoot a hreflang warning often re-verify language codes and return tags while never checking whether the canonical tag on the flagged page is the actual cause.

5. Query parameters or trailing slashes mismatched with canonical

Even a self-referencing canonical can conflict if it doesn't exactly match the hreflang href — a missing trailing slash or an extra tracking parameter is enough to break the match.

💡 Pro tip When auditing a cluster, pull hreflang href values and canonical href values into the same spreadsheet row per URL — a mismatch is immediately visible side by side.

Real-world examples

How the conflict shows up across different kinds of multilingual and multi-region sites:

SaaS company
Translated pages canonicalized to English
de / fr / ja → en
Every translation inherited a template canonical pointing to the English original, silencing all three localized versions in search.
Ecommerce store
Regional pricing pages self-canonicalized incorrectly
en-US ↔ en-GB
A shared product template set canonical to the US page on both versions, so the UK page never ranked with UK pricing.
Multilingual CMS site
Plugin default overriding manual settings
Auto-canonical
A translation plugin reset canonical tags to the "original" post on every content update, reintroducing the conflict after each fix.
News publisher
Mismatched trailing slash
/en-in vs /en-in/
A self-referencing canonical that didn't exactly match the hreflang href format still registered as a conflict during validation.

The pattern across all four: the hreflang markup was rarely wrong. The canonical tag, added for an unrelated reason, was the actual point of failure.

Hreflang vs canonical: what each one does

They're often confused because both live in the page head and both affect indexing — but they answer different questions.

Aspect Hreflang Canonical
Question it answers Which language/region should see this page? Which URL is the authoritative version?
Correct target A set of alternate URLs, including itself Itself, on a translated or regional page
When they conflict Often disregarded Usually wins
Fix priority Check second Check first

Generate your hreflang tags right now — free

The Rebrixe Hreflang Generator builds a complete, return-tag-safe set of hreflang link tags for every page in your cluster, including x-default, so you can pair it with correctly self-referencing canonicals and avoid this conflict from the start. No account, no watermark.

Free Hreflang Tag Generator Add your pages and codes, copy the complete tag set.
Open Hreflang Generator →

Frequently asked questions

Canonical tags tell search engines which single URL is the authoritative version when duplicate or near-duplicate content exists, while hreflang tags tell search engines that several URLs are intentional language or region alternates of each other, not duplicates competing for the same ranking.
When a page's canonical tag points to a different-language URL while its hreflang tags claim it as a distinct alternate, Google treats the canonical as the stronger signal, often drops the page from that language's index, and may ignore the hreflang cluster for that URL entirely.
No. Each localized page should have a self-referencing canonical tag pointing to itself, not to the default-language or primary-market version, since every translated page is meant to rank on its own rather than defer to another language's URL.
Technically yes, since hreflang doesn't require a canonical tag to function, but omitting canonical tags removes a useful signal for consolidating tracking parameters or near-duplicate URL variants, so most sites should still self-canonicalize every page in the hreflang set.
In almost every case, yes, because a canonical pointing away from a page tells Google to consolidate ranking signals into a different URL, which directly contradicts hreflang's premise that the page is a distinct, independently rankable localized version.
Audit every URL in the hreflang cluster, change each canonical tag to a self-reference, confirm the hreflang return tags are complete, then recheck the set in Google Search Console's International Targeting report and a hreflang validator to confirm the conflict is resolved.
Google generally treats the canonical tag as the stronger consolidation signal, so a conflicting canonical can cause the hreflang annotation on that URL to be disregarded even if the hreflang markup itself is technically valid.

Generate your hreflang tags in seconds

The Rebrixe Hreflang Generator builds a complete, return-tag-safe set of hreflang markup — no account, no watermark, just a ready-to-paste tag set for every page in your cluster.

Launch the Hreflang Generator →
← Back to blogs