Short answer: On a multilingual or multi-regional site, each language version should normally have a canonical tag pointing at itself, and every hreflang link should point at the canonical URL of the target version. Never point the canonical of one language version at another language: that tells search engines the page is a duplicate and cancels its hreflang. Use canonicals to consolidate duplicates within one language, and hreflang to connect equivalents across languages.
Two signals, two different questions
Canonical tags and hreflang are both link elements in the head, both point at URLs, and both are about “other versions” of a page. That is why they are so often confused. But they answer different questions:
- The canonical tag answers: “Of several URLs with the same content, which one is the main one that should be indexed?” It consolidates duplicates.
- hreflang answers: “Of several equivalent pages in different languages or for different countries, which one should be shown to which searcher?” It connects alternates.
Duplicates and alternates are not the same thing. A German translation of an English page is not a duplicate; it is a different page for different readers. A URL with a tracking parameter, on the other hand, is a duplicate of the clean URL. Mixing up these two cases is the root of most canonical and hreflang conflicts. Google’s documentation on consolidating duplicate URLs covers the canonical side in detail.
The correct default set-up
For a page available in English, German and French, the correct pattern on the German version looks like this:
<link rel="canonical" href="https://example.com/de/leitfaden/" /><link rel="alternate" hreflang="en" href="https://example.com/en/guide/" /><link rel="alternate" hreflang="de" href="https://example.com/de/leitfaden/" /><link rel="alternate" hreflang="fr" href="https://example.com/fr/guide/" />
Three rules are at work here:
- The canonical points at the page itself. The German page is the main URL for German content.
- The self-referencing hreflang URL equals the canonical URL. Exactly the same string, including protocol, host and trailing slash.
- Every hreflang target is itself a canonical URL. The English and French URLs listed here are the ones those pages declare as canonical.
When all three rules hold on every version, the signals reinforce each other: each page is indexable in its own right, and the cluster tells search engines which one to show where.
The cross-language canonical mistake
The most damaging error is a canonical tag on a translated page that points at the original language. It usually happens for one of these reasons:
- A developer or SEO plugin sets all canonicals to the “master” version to “avoid duplicate content”.
- A multilingual plugin was misconfigured, or a theme outputs its own canonical that ignores translations.
- Translations were created by duplicating the original page, and the copied canonical was never updated.
The effect is severe. A canonical pointing at the English page tells search engines: “this German page is a copy of the English one; index the English one instead.” The German page may drop out of the index, and since hreflang should point only to indexable canonical pages, the German entry in the cluster becomes unusable. German searchers then get the English page or nothing.
Translated content is not duplicate content in the sense that canonical tags are meant for. There is no need to protect yourself from translations with canonicals.
Same-language country versions
A trickier case is when several versions share one language, for example English pages for the US, the UK and Australia with very similar text. It can be tempting to canonicalise the UK and Australian pages to the US page because the content is almost identical.
If you want the UK and Australian pages to appear in their markets, do not do that. Give each version a self-referencing canonical and connect them with hreflang (en-us, en-gb, en-au). Search engines may still group very similar pages together and pick one as canonical on their own, but hreflang helps them show the right URL in each country. Differentiating the pages with local prices, spelling, contact details and shipping information makes this more reliable.
If you do not need separate country pages, the cleaner solution is one English version with a plain en hreflang, not three nearly identical pages held together by canonicals.
Where canonicals still belong on international sites
Canonicals remain the right tool for duplicates within a single language version:
- URL parameters:
/de/produkte/?sort=priceshould canonicalise to/de/produkte/, not to the English products page. - Tracking and session parameters such as utm tags.
- Print versions, AMP-style duplicates or alternative paths to the same German content.
- Product variants within one language, where your strategy is to index one main product URL.
The key point is that each canonical stays inside its language. A German duplicate points at the German main URL; an English duplicate points at the English main URL. hreflang then connects the main URLs across languages.
Common conflicts and how to fix them
| Problem | What search engines see | Fix |
|---|---|---|
| Translated page canonicalises to original | Translation is a duplicate; hreflang entry unusable | Self-referencing canonical on each language |
| hreflang points at a non-canonical URL | Alternate is a duplicate of another URL | Point hreflang at the canonical URL |
| Canonical has trailing slash, hreflang does not | Two different URLs, one of which redirects | Generate both from the same URL function |
| Canonical uses http, hreflang uses https | Mismatched and possibly redirected URLs | Use the final https URL everywhere |
| Paginated page canonicalises to page 1 | Deeper pages and their hreflang ignored | Self-canonical per page; hreflang page 2 to page 2 |
| Noindex on a language version | Version cannot be shown; cluster weakened | Remove noindex or remove the page from hreflang |
Paginated and filtered pages
Category pages and listings often have several pages and many filters. The canonical and hreflang rules still apply, page by page:
- Page 2 of the German category has a canonical pointing at itself, not at page 1.
- Its hreflang links point at page 2 of the English and French categories, if those exist with equivalent content.
- Filtered URLs that you do not want indexed canonicalise to the unfiltered page in the same language, and usually do not need hreflang at all.
If listings differ between languages, for example because some products are not sold in one market, the pages are not true equivalents deep into pagination. In that case it is reasonable to use hreflang only on the first page of each category and let deeper pages stand alone.
Canonicals across domains and subdomains
International sites that use country domains or language subdomains face the same rules, with a few extra traps. A canonical tag can point at another domain, and that is exactly what makes cross-domain mistakes so costly: a single template setting can send every page on example.de to its counterpart on example.com.
Watch out for these situations in particular:
- Shared templates across domains. When several country sites run from one codebase, the canonical is sometimes built from a fixed base URL instead of the current domain. Every country site then canonicalises to the main domain.
- Staging or old domains. After a migration, canonicals sometimes still point at the old domain or at a staging host, which search engines may not be able to index.
- Syndicated or mirrored stores. A reseller site in another country copies your product text and adds a canonical to your site. That is their choice, but make sure your own country versions do not do the same to each other by accident.
The fix is always the same: build the canonical from the current page’s own final URL, and use hreflang, not canonicals, to connect the domains. After any change to domains, hosting or templates, check a sample of canonicals on each domain before assuming everything carried over.
How to audit canonicals and hreflang together
Check these conditions for every page in every language:
- The canonical URL returns 200 and is the page itself (or an intentional duplicate target in the same language).
- The page’s own hreflang entry matches its canonical URL exactly.
- Every hreflang target returns 200, is indexable and declares itself as canonical.
- No canonical crosses from one language folder, domain or subdomain to another.
This is tedious by hand and easy with a crawler. Site SEO AI Audit checks canonicals in its crawl and indexing area and hreflang in its Languages area on every crawled page, so conflicts between the two show up in the same report, weighted by how many pages they affect. For WordPress sites, each issue comes with fix steps for wp-admin and the SEO plugin. The first audit is free.
Related reading
- Canonical tags explained: how to set them and fix errors
- hreflang return links: how to fix “no return tags” errors
- What is hreflang? A plain-English guide for site owners
The bottom line
Canonical tags consolidate duplicates; hreflang connects translations and country versions. Give every language version a self-referencing canonical, point every hreflang link at a canonical URL, and keep canonicals inside their own language. The one mistake to avoid above all is a translated page whose canonical points at the original: it quietly removes that language from search.
DUK
Should translated pages have a canonical pointing to the original?
No. Each translation should have a self-referencing canonical. A canonical to the original tells search engines the translation is a duplicate and can remove it from the index.
Can the canonical URL and the hreflang URL be different?
For the page itself, they should be identical. For alternates, each hreflang URL should be the canonical URL of that alternate page.
Are translated pages duplicate content?
No. Content in different languages serves different readers and is not treated as duplicate content. Canonical tags are meant for identical or near-identical content in the same language.
What about near-identical en-us and en-gb pages?
Give each a self-referencing canonical and connect them with hreflang if you want both shown in their markets. Adding real local differences, such as prices and spelling, makes the distinction clearer.
Do filtered URLs need hreflang?
Usually not. Filtered URLs that you do not want indexed should canonicalise to the unfiltered page in the same language, and hreflang belongs on the indexable main pages.


