A language version names a page in another language as canonical
In the reportCanonical points to a different language version
cross_language_canonical · Review item
Review source pages whose internal head canonical is attributed to a different base language. The finding is grouped by the canonical target and keeps that identity when membership changes. One proven crossed edge can be reported even if another edge in the group is unknown.
Severity: High. Listed for review: one canonical can pull several translations towards a single page, but the check does not see how a search engine treats them.
Why it matters
A canonical says which address you prefer to show for duplicate content. Google's guidance asks sites that use hreflang to name a canonical page in the same language. When a translated page names another language as canonical, the two signals disagree about which version you want shown.
What to do
- Open the finding: it shows the canonical target, each listed page attributed to a different language and how each side’s language was found.
- Decide whether each listed page is a separate translation. If it is, make it name itself as canonical and relate the versions with hreflang.
- If a listed page really duplicates the target, keep the canonical and check that its language annotations describe it correctly.
- Run a new full audit to check every listed page again.
When to leave it as it is: Leave a page pointing across languages when it intentionally duplicates the target, for example a temporary copy that should not be shown on its own. When no canonical page exists in the same language, Google allows the best possible substitute language. Review the group against that intended exception.
What we read
The check groups captured internal HTML-head canonical edges by target URL. A self-canonical edge does not cross languages; a page without an internal head edge forms no new group. Missing or ambiguous original evidence remains a coverage limit, not proof that an old finding is fixed.
Each endpoint is attributed first from complete original hreflang channels: HTML annotations, the final HTTP Link header and the required sitemap collection. Conflicting, malformed or incomplete annotations remain unknown; text detection never overrides them. The canonical edge itself comes only from the HTML head.
We compare base languages, so regional or script variants of one language count as the same language, and x-default is not a language.
If the canonical target was not captured, a complete hreflang set on the source page that names both itself and the target can still describe the target. A captured target whose own annotations contradict that label leaves the edge unknown.
Only when a side has no hreflang language of its own (x-default alone is not one), a bundled offline language model may read that side's own captured main text. It can label English, Ukrainian or Russian; any other result stays unknown. html lang is not used for this check.
No extra request is made; the check uses the audit's original captures and its shared language results.
Example & evidence
Illustrative example, not a live audit.
https://site.example/de/preise/ has, in its original head:
<link rel="canonical" href="https://site.example/en/pricing/">
<link rel="alternate" hreflang="de" href="https://site.example/de/preise/">
<link rel="alternate" hreflang="en" href="https://site.example/en/pricing/">Both languages come from hreflang, German for the source and English for the target, so the group for https://site.example/en/pricing/ lists the German page.
<link rel="canonical" href="https://site.example/de/preise/">A possible correction: the German page names itself, and a later full audit reads it again to confirm.
Confirm & check again
Check for yourself: Open each listed page's source, find its rel=canonical in the head and compare that address with the page's own language version.
Check again: Full audit — Run a new full audit. A target group is resolved only after every previously reported source edge is freshly checked: the original canonical was removed, now names itself or another address, or the same target is fully attributed to the same language. A missing source, a newly listed page alone, partial capture or unavailable language evidence does not prove a fix. Same-target language checks retain the original required sitemap scope. Retargeting ends the old edge; a new target is reported only if its own crossed-language condition is proved.
Limits & sources
This is a review heuristic over original server HTML and its annotations. It does not show how a search engine chooses canonicals or languages, and it does not predict indexing or rankings.
Language attribution can be missing: incomplete channels, conflicting annotations or text the model cannot label keep an edge unknown rather than clean.
The offline model labels only English, Ukrainian and Russian, and its result is a bounded estimate, not measured accuracy.
This heuristic adds no source indexability or rendered-page gate. It reads the retained original language and canonical facts; losing those facts or changing group membership alone never proves a fix.
Confidence: Medium Confidence is high when both languages come from hreflang, and medium when either side relies on the offline model.
Sources
- Google, How to specify a canonical URL with rel="canonical" and other methods — Background: recommends a canonical in the same language when using hreflang, or the best possible substitute if no canonical exists in that language. Calls rel="canonical" a strong signal; does not measure this heuristic. Checked 7 October 2026.
- PyPI, Lingua language detector 2.2.0 — Documents the pinned language-detection package and its model-based approach; it does not establish this audit’s thresholds or guarantee the language of a page. Checked 2 November 2026.
- IANA, Language Subtag Registry — Lists registered language, script and region subtags used to interpret language declarations; it does not identify the language of visible text. Checked 2 November 2026.
- IANA, Language Tag Extensions Registry — Lists registered language-tag extension identifiers and their defining references; an extension does not establish a page’s content language or canonical suitability. Checked 2 November 2026.
Editorial review: 3 November 2026