Canonical URLs: How to Tell Search Engines Which Version Counts
· 2 min read
The same page on your site is probably reachable at several URLs right now:
https://example.com/product
https://www.example.com/product
https://example.com/product/
https://example.com/product?utm_source=newsletter
https://example.com/product?sort=default
To a person, one page. To a crawler, five URLs — five candidates to index, five destinations splitting the links that point at "the page". Canonicalization is how you tell search engines which version is the real one.
What the canonical tag does
A rel=canonical link in the page's <head> names the preferred URL:
<link rel="canonical" href="https://example.com/product" />
Every variant — the UTM-tagged version, the trailing-slash version, the sort-parameter version — carries the same tag pointing at the one true URL. Search engines then consolidate indexing and link signals onto that URL instead of spreading them across variants.
Two things to understand about its strength. First, canonical is a hint, not a directive: Google folds it into other signals (redirects, sitemaps, internal links) and can override it if they disagree. Second, that's actually the design working — when your canonical conflicts with your redirects or your sitemap, the search engine has to guess, and the fix is making all the signals agree, not repeating the hint louder.
Where duplicate URLs come from
- Protocol and host variants:
http/https,www/bare domain. Fix with sitewide 301 redirects to one origin, not just canonicals. - Tracking parameters: every UTM-tagged campaign link mints a new URL for the same page. Canonicals absorb these — this is their single most common job.
- Trailing slashes and case:
/Productvs/product/vs/product. Pick one normal form and redirect the rest. - Faceted navigation:
?sort=,?color=,?page=can multiply one category into thousands of crawlable URLs — a query-parameter problem big enough to deserve its own strategy. - Syndication: when another site republishes your article, a cross-domain canonical on their copy points credit back at yours.
The rules that keep canonicals working
Self-canonicalize everything. Every page should carry a canonical pointing at its own clean URL. It costs nothing and pre-resolves every parameter variant anyone will ever append.
Point at the final destination. The canonical target must be a 200-status page — not a redirect, not a 404. Chains like canonical → redirect → page invite Google to ignore the hint.
One canonical per page. Multiple canonical tags (a CMS plugin adding a second one is the classic cause) means both get ignored.
Absolute URLs. href="/product" is technically allowed and practically fragile — one templating bug turns relative canonicals into self-referencing nonsense across the site.
Canonicals consolidate; they don't block. A canonicalized variant can still be crawled. If you need a page out of the index entirely, that's noindex; if you need crawl budget saved, that's robots rules. Three different tools for three different problems.
Auditing your own URLs
Before deciding what the canonical form of a URL should be, look at what's actually accumulating on it. Run a shared link through the URL parser to see every parameter it carries, and the query cleaner to see which of them are pure tracking — what's left after cleaning is usually exactly what your canonical URL should look like.