Tools Hub

Canonical or hreflang: which duplicate problem are you fixing?

Distinguish same-language duplicates from translated versions that should coexist in search results.

Both tags live in the head and both involve URLs, which is why they are mixed up. A canonical says two addresses are the same page; hreflang says two addresses are different language versions of one page. Applying the wrong one either hides translations or creates duplicates.

Use canonical for duplicates of the same content

The canonical generator produces one escaped link tag pointing at the preferred URL. Use it when parameters, print views or session paths expose the same page at several addresses, and make sure the target itself returns the canonical version.

Use hreflang for language and region variants

Hreflang tags tell search engines which language or regional version to show, including a default for unmatched visitors. Every variant should reference the full set, and each hreflang URL should be a real, indexable page rather than a redirect.

Check the sitemap before trusting either tag

The sitemap validator inspects structure, locations and limits without fetching third-party sites. A sitemap that lists a URL which is canonicalised elsewhere, or omits a language variant, weakens both signals regardless of the tags.

Tools covered in this guide

Frequently asked questions about canonical and hreflang

Can a page be canonical and have hreflang tags?

Yes. Each language version can declare itself canonical while the set points at one another through hreflang.

Should hreflang URLs redirect?

No. Hreflang should point at the final indexable URL; a redirect makes the signal ambiguous and may be ignored.

Do I need an x-default hreflang?

It helps when visitors whose language is not covered need a fallback. Point it at a genuinely neutral or selector page, not at a random translation.

More guides