Key takeaways
- Canonical tells Google which URL to keep among duplicates; hreflang tells it which pages are language or regional versions.
- Google asks for a canonical in the same language as the page, so a German page should not canonicalise to the English one.
- The seogeoaeo.ai Hreflang Checker flags canonical and noindex conflicts on each alternate for 10 credits a run.
In hreflang vs canonical, the two tags do different jobs: canonical tells Google which URL to keep among duplicates, while hreflang tells Google which pages are language or regional versions of each other. Use both together, with each localized page's canonical pointing at itself or another page in the same language, never at a different language version.
The one-line difference
Canonical answers "which copy is the original?" Hreflang answers "which version should this searcher see?" One consolidates, the other routes. Mixing them up is how a site ends up with its German pages missing from German search.
Side by side
| rel="canonical" | rel="alternate" hreflang | |
|---|---|---|
| Purpose | Pick the preferred URL among duplicates | Map language and region versions |
| Points to | One URL | Every version, including the page itself |
| Needs a return link | No | Yes, both pages must point to each other |
| Typical value | The same page, or the master copy | A set of URLs with codes such as de-AT |
| Fails when | It points at a page Google won't index | Pairs are one-way or codes are invalid |
Where they collide
The classic bug looks like this. A site publishes English and German versions of a page. The German page has correct hreflang tags, but its canonical points to the English URL. Now Google gets two messages: "this German page is a version of the English one" and "the English one is the real page, drop this one." The German page can fall out of the index, and the hreflang pair goes with it.
Google's canonicalization guidance is direct about this. If you use hreflang, specify a canonical page in the same language, or the closest substitute language if no same-language canonical exists. Google also notes that a rel="canonical" link carrying a hreflang attribute is not used for canonicalization at all; language versions belong in rel="alternate" links.
When translated pages count as duplicates
Translation changes the answer. Google says localized versions are only treated as duplicates if the main content stays untranslated. So a Spanish page with Spanish body text is not a duplicate of the English page, and should not be canonicalised to it. Regional pages in one language are different: en-US and en-GB pages with nearly the same text are close copies, and hreflang is what tells Google they are meant for different audiences.
How Google picks canonicals inside a set
There is a quieter link between the two. Google says it prefers URLs that sit in hreflang clusters when choosing canonicals. In its example, de-de and de-ch pages that annotate each other are preferred over a de-at page that is left out of the cluster. Clean hreflang can therefore steer canonical selection, not just routing.
A short rule set
- Each localized page: canonical to itself.
- Each localized page: the full hreflang set, itself included.
- Never canonical across languages.
- Keep both on https; Google warns against listing HTTP URLs in hreflang.
Test both at once
Checking these by hand means opening every version and reading two sets of tags. The Hreflang Checker on seogeoaeo.ai does it from one URL: it validates codes, then fetches each alternate and flags noindex and canonical conflicts as well as missing return links. It costs 10 credits a run. For a single URL's canonical and robots rules, the same site has an Indexing & Canonical Checker.
The hreflang tool covers one page and its alternates and does not read sitemaps, so a full crawler fits better if you need every URL on a large site reviewed at once. For the template-level question "do our hreflang and canonical tags agree?", seogeoaeo.ai answers it fastest.
Frequently asked questions
Should a translated page canonicalise to the original?
No. Google treats localized pages as duplicates only when the main content stays untranslated. Point each page's canonical at itself.
Can I put hreflang on a canonical link?
No. Google does not use rel=canonical links with hreflang attributes for canonicalization. Use rel=alternate links for language versions.
Sources
- How to specify a canonical URL with rel="canonical" and other methodsGoogle Search Central
- Tell Google about localized versions of your pageGoogle Search Central
- Hreflang Checker: Test & Validate Hreflang Tagsseogeoaeo.ai
- Indexing & Canonical Checkerseogeoaeo.ai
