Canonical Tags on Multilingual Sites and hreflang

By the ResilientLang team · Published · 6 min read

Each language version of a page should normally have a canonical tag pointing to itself, and hreflang annotations that link it to the other versions. Canonical answers "which URL is the preferred copy of this content", and hreflang answers "which URL is the equivalent page for another language or region". If both point to the same URLs for each version, they work together; if they disagree, translations can be dropped from search.

What does rel="canonical" do?

rel="canonical" is a signal that a URL should be treated as the preferred version when several URLs show the same or very similar content. Google's documentation on consolidating duplicate URLs lists three kinds of signal, ordered by strength: redirects, rel="canonical" link annotations and sitemap inclusion. It describes the link annotation as a strong signal. None of them is required, and without one Google decides itself which version is best to show.

The tag goes in the head, using an absolute URL. Google recommends absolute paths over relative paths, warning that relative paths, though supported, can cause problems in the long run:

<link rel="canonical" href="https://example.com/fr/tarifs/" />

Google also recommends picking one method (the HTML element or the HTTP header) rather than mixing them, and including a rel="canonical" on the canonical page itself, which is the self-referencing canonical.

How does hreflang differ from canonical?

Item rel="canonical" hreflang
Question answered Which URL is the preferred duplicate? Which URL is the equivalent for another language or region?
Relationship Many URLs to one preferred URL Peers that link to each other
Typical targets Same-language duplicates, parameters, syndication Translations and regional variants
Reciprocal? No Yes, return links are required

Google's canonicalization documentation says that rel="canonical" annotations that use hreflang attributes are not used for canonicalization. Language and country versions should use rel="alternate" with hreflang instead. Do not try to express a translation relationship with canonical. Our guide to hreflang covers the syntax.

Should each language version be self-canonical?

Yes, in the normal case. Google's guidance for localized pages is to make sure you specify a canonical page in the same language. A French page is canonical to the French URL, a German page to the German URL, and so on. The hreflang cluster then ties them together:

<!-- https://example.com/fr/tarifs/ -->
<link rel="canonical" href="https://example.com/fr/tarifs/" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/tarifs/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/pricing/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/preise/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />

The English page carries the same hreflang block with <link rel="canonical" href="https://example.com/en/pricing/" />. Google also states that, for canonicalization, it prefers URLs that are part of hreflang clusters, which is a further reason to keep the clusters accurate.

The rule behind this is simple: the URL in hreflang for a given page should equal that page's canonical URL, with identical protocol, host, path and trailing slash.

When are translations treated as duplicates?

Google's localized-versions documentation says localized versions are only considered duplicates if the main content remains untranslated. A properly translated page is not a duplicate of the source page just because it covers the same topic. The risk is with:

  • Untranslated or partly translated pages. If only the menu is translated and the body text is still English, the page is a near-duplicate. Google's multi-regional guidance also warns that translating only boilerplate while leaving main content in one language creates a poor experience.
  • Regional variants in one language. en-US, en-GB and en-AU pages may be nearly identical. A December 2025 Bing Webmaster blog post says localization creates duplicate content when regional or language pages are nearly identical, and advises meaningful localization (terminology, examples, regulations, product details).
  • Automatic output with gaps. Pages where translation failed or is pending may fall back to source text. If such pages are indexable, they can compete with the original.

For pages that are not yet translated, the safer pattern, in our judgement, is not to publish the URL at all, or to keep it out of the index and out of hreflang until the content is ready. This is common practice rather than a documented requirement.

What canonical mistakes hide translations?

Pointing every language at the default language

<!-- On https://example.com/fr/tarifs/ -->
<link rel="canonical" href="https://example.com/en/pricing/" />

This tells Google that the English page is the preferred version of the French page. The French page may then be folded into the English one and not shown to French searchers, even though hreflang says otherwise. This is the single most damaging mistake, and it is often a plugin or theme default. Fix it by making every version self-canonical.

Canonical and hreflang URLs that differ

If the canonical is https://example.com/fr/tarifs and the hreflang entry is https://example.com/fr/tarifs/, they are different strings. Google may treat the hreflang target as a non-canonical URL and ignore the entry. Normalize one convention and generate both from the same value. See common hreflang mistakes.

Canonical to a redirecting or non-indexable URL

A canonical should point to a URL that returns 200, is crawlable and is indexable. If the canonical target redirects, is blocked in robots.txt, or is marked noindex, the signal is contradictory.

Parameters and tracking

Language switchers that append ?lang=fr create duplicate URLs. Google's multi-regional guidance says URL parameters are not recommended for locale separation, because segmentation by URL is difficult. Prefer separate paths or hosts per language, as discussed in subdirectories vs subdomains vs ccTLDs. If parameters already exist, canonical each parameterized URL to the clean URL for the same language, not to another language.

If the same URL shows different languages depending on cookies, browser settings or location, only one version is likely to be seen by crawlers. Google recommends separate URLs for each language rather than relying on cookies or browser settings, and notes that Googlebot does not send Accept-Language headers.

How should sitemaps fit in?

Sitemap inclusion is itself a canonicalization signal, so list only canonical URLs. If you use sitemap-based hreflang, each url should list its own canonical in loc and all alternates as xhtml:link entries, as shown in multilingual XML sitemaps. Do not list non-canonical or redirecting URLs.

How do you check it?

For a sample of every page template and language:

  1. View source and read the canonical and all hreflang values.
  2. Confirm the canonical equals the page's own URL, and appears in the hreflang set with the same string.
  3. Confirm the page's own language is in the set (self-reference), and each alternate links back.
  4. Use the URL Inspection tool in Google Search Console to compare "user-declared canonical" with "Google-selected canonical". If they differ for translations, investigate duplication or inconsistent signals first.

Google may still choose another canonical when signals disagree, since the tag is a strong signal and not a directive.

Key takeaways

  • Make each language version canonical to itself; do not point translations at the source language.
  • Use hreflang, not canonical, to relate translations and regional variants.
  • The hreflang URL for a page must match its canonical exactly.
  • Translated pages are not duplicates; untranslated or near-identical regional pages can be.
  • Canonical targets should return 200, be crawlable and be indexable, and sitemaps should list canonical URLs only.
  • Canonical is a strong signal, not a command, so keep redirects, internal links and sitemaps consistent.

Sources

Frequently asked questions

Should translated pages have a canonical tag pointing to the original?

Generally no. A translation is a different page for a different audience, so it should normally be canonical to itself. Google's guidance for localized pages is to specify a canonical page in the same language. Pointing translations at the original tells Google to prefer the original and can hide them.

Do canonical and hreflang conflict?

They do different jobs. Canonical picks the preferred URL among duplicates; hreflang links alternates in different languages or regions. They conflict only when the URLs disagree, for example when a page's hreflang URL differs from its canonical, or when translations canonicalize to another language.

Is a canonical tag a command?

No. Google treats rel=canonical as a strong signal, not a directive, and may choose a different canonical if other signals disagree. Redirects, sitemap inclusion and internal links all contribute, so keep them consistent with the canonical you declare.

Can regional versions in the same language be duplicates?

Yes. Google notes that localized versions are only considered duplicates if the main content remains untranslated. Near-identical en-US and en-GB pages can be treated as duplicates, so hreflang helps, but meaningful localization such as pricing, terms and examples also helps.

Keep reading