LearnCanonical tags

SEO fundamentals

Canonical tags, explained

A canonical tag (<link rel="canonical">) tells search engines which URL is the master copy when several pages show the same or near-identical content — it consolidates ranking signals onto one URL instead of splitting them.

Most sites generate more URLs than they have unique pieces of content — a product reachable via three category paths, a page with and without a tracking parameter, an HTTP and HTTPS version left live during a migration. A canonical tag, placed in the <head> as <link rel="canonical" href="https://example.com/preferred-url">, tells a search engine "index the URL in this tag, not the one you fetched." Duplicate content doesn't get penalized so much as it gets diluted: links and signals pointed at three near-identical URLs would otherwise rank weaker than the same signals concentrated on one.

Self-referencing vs. cross-domain

Most pages should carry a self-referencing canonical — a URL pointing at itself — as a default hygiene measure, so that any accidental duplicate (a stray parameter, a trailing slash variant) resolves back to the clean version automatically. A cross-domain canonical points to a URL on a different domain entirely, and is the standard mechanism for syndicated content: if example.com republishes a partner's article, its canonical should point back to the original, telling engines not to compete with the source for rankings.

Where canonicals quietly break

canonical patterns
Self-referencingpage A canonicalizes to itself — the default, safe pattern for almost every URL
Consolidatingpages A, B, C (parameter/session variants) all canonicalize to A
Cross-domaina syndicated copy canonicalizes back to the original publisher's URL
Broken chainA → B → C, none of them pointing straight at the true final URL
The last row is the one worth auditing for — it's invisible in a browser and only shows up in a crawl.

Because canonical tags live in page source and never render visibly, mismatches accumulate silently across a large site — a template change six months ago can leave thousands of pages canonicalizing to the wrong URL with nothing on-screen to flag it. RacingRoach's crawler cross-checks canonical, meta-robots, and directive conflicts across every page it visits (see Find what's broken), which is the practical way to catch this at scale rather than by sampling pages by hand.