Web Operations Field Guide

Canonical Tags for Duplicate URLs: Signals, Not Commands

Published

The same content is frequently reachable at several URLs: with and without tracking parameters, through print versions, or under different category paths. A canonical tag tells search engines which URL you prefer to have indexed. It is a strong hint, not an instruction, so it works best when every other signal agrees with it.

Declaring a canonical URL

Add a link element with rel=canonical in the head of each duplicate, pointing to the preferred URL. Use an absolute URL including the scheme and host. For non-HTML files such as PDFs, the same signal can be sent as an HTTP Link header.

The preferred page should declare itself as canonical too. A self-referencing canonical protects it when the URL is shared with parameters added.

<link rel="canonical" href="https://example.com/guides/canonical-tags/">

Link: <https://example.com/report.pdf>; rel="canonical"

Keeping signals consistent

Search engines combine the canonical tag with redirects, internal links, sitemap entries and HTTPS preference. If internal links point to one version, the sitemap lists another and the tag names a third, the engine may pick a URL you did not intend. Link internally to the canonical version and list only canonical URLs in sitemaps.

Avoid canonicalizing distinct pages to one another, such as every page in a paginated series to the first page. The engine may ignore the tag, or it may drop content that only exists on later pages.

Checking which URL was chosen

Inspection tools in search consoles report both the canonical you declared and the one the engine selected. When they differ, look for conflicting signals before assuming the tag is broken: duplicated content across hosts, mixed HTTP and HTTPS links, or redirects pointing the other way.

Remember that a canonical choice does not affect whether visitors can reach a URL; it only influences which version is shown in results.