
Where Should Translated Content’s Canonical Point: The Cross-Language Duplicate Fix
A translated page’s canonical should always point to itself, never back to the source-language original — “every language version’s canonical points at the English original” is the single most common and most damaging mistake, because it tells Google your Traditional- and Simplified-Chinese pages are duplicates of the English page and gets them dropped from the index wholesale. The fix is simple: self-canonical on every language version, connected by two-way hreflang. The rule is simple, but in practice teams mix it up at a surprising rate.
Why do people point canonical back at the original in the first place?
The canonical tag was originally designed to solve “same language, same content” duplication — think ?utm_source=-tagged URLs, or a www versus non-www version of the same page. Plenty of engineers apply that same logic to multilingual sites: “the Traditional Chinese page is translated from English, so conceptually it’s the same content — canonical should point back to the English original so we don’t get dinged for duplicate content.”
The flaw in that reasoning: canonical is a language-neutral deduplication mechanism, but Google does not treat pages in different languages as duplicates of each other by default — unless you explicitly tell it “these two are the same page” via canonical. The moment the Traditional Chinese page’s canonical reads https://example.com/en/pricing/, the signal Google receives is “don’t bother indexing this one, index that one instead.” The Traditional Chinese version then vanishes from the index and from Search Console’s performance report entirely — and you never actually did anything wrong with “translation quality.”
The correct setup: self-canonical plus hreflang linking
| Page | canonical should point to | hreflang should include |
|---|---|---|
/en/pricing/ (original) |
https://example.com/en/pricing/ (itself) |
Four lines — en, zh-Hant, zh-Hans, x-default — each with its matching URL |
/zh-hant/pricing/ (translation) |
https://example.com/zh-hant/pricing/ (itself) |
Same four lines |
/zh-hans/pricing/ (translation) |
https://example.com/zh-hans/pricing/ (itself) |
Same four lines |
Each of the three language versions has its canonical point to itself; hreflang is responsible for telling Google “these three pages are different-language versions of the same content — show the visitor’s matching language/region version.” Canonical handles deduplication, hreflang handles language mapping. The two have distinct jobs and cannot substitute for each other.
A 4-step audit and fix
- Spot-check the canonical tag on each language’s homepage plus 3 inner pages. Inspect the
<link rel="canonical">in the source and confirm the URL exactly matches the current page — including trailing slash and https. - Cross-check with Search Console’s URL Inspection tool, one URL at a time. Enter a non-English URL and check whether “Google-selected canonical” matches “User-declared canonical.” If they differ, Google isn’t honoring the canonical you set — usually caused by a missing hreflang return tag combined with a self-contradicting canonical.
- Confirm all four hreflang lines (including x-default) appear in full on all three language versions. If any single direction is missing, Google may ignore the whole tag set, which makes your canonical signal even less trustworthy.
- Filter the GSC performance report by “Page” for
/zh-hant/and/zh-hans/. If a language version’s impressions sit near zero long-term, or the performance report can’t find that path’s pages at all, canonical is almost certainly pointed the wrong way and that version was never truly indexed.
FAQ
Q1: If canonical points back to the original language version, will Google really not index the translation at all? Not necessarily “not at all,” but in practice the overwhelming majority of cases get excluded from the index, because Google respects a site’s self-declared canonical signal unless some other strong signal (like a large volume of external links in that language) overrides it. Multilingual SEO shouldn’t gamble on being the exception.
Q2: If the translated content is genuinely near-identical to the original (say, unedited machine translation), isn’t pointing canonical back at the original safer? No. The right fix there is to improve translation quality — genuine human localization instead of raw machine translation — not to use canonical to make Google ignore an entire language version. That’s the same as voluntarily giving up that language’s organic search traffic.
Q3: Does the x-default version also need self-canonical? x-default usually maps to your default/preferred language version (English, typically), and that version’s own canonical still points to itself. x-default is just one line inside the hreflang tag set, not a separate page.
Q4: Canonical is set correctly, so why does Search Console still show “Google chose a different canonical URL”? The most common cause is a missing hreflang return tag, or the language version’s content being too similar to the original (near-machine-translation), which leads Google to judge the page “not independent enough” and override your canonical choice. Audit hreflang completeness first, then check content differentiation.
The canonical-plus-hreflang combination is easy to get wrong and hard to eyeball-verify — GeoSeoToday’s hreflang generator and GEO checker auto-outputs the correct self-canonical and all four hreflang lines so the two never fight each other. If your multilingual site is suffering from Traditional/Simplified self-cannibalization, see 7 hreflang Mistakes That Cause Duplicate-Language Self-Cannibalization — its Mistake 5 is exactly the canonical conflict covered here.