Canonical Tags Are a Hint, Not a Command

rel="canonical" is the most misunderstood tag in technical SEO, and the misunderstanding is a single word: people read it as a directive. It isn’t. It’s a hint, documented as such, and search engines routinely disregard it.

Once you accept that, the tag becomes much easier to use — because the job stops being “declare the canonical” and becomes “make sure every signal agrees on the same URL.”

What the tag does

A canonical tag says: of the set of URLs serving substantially this content, this one is the address I’d like indexed.

It’s a deduplication mechanism. Search engines cluster URLs they believe serve the same content and pick one representative for the index. Your canonical tag is one input to that pick. Others include:

  • Internal links. Which variant do your own navigation, breadcrumbs and body links point at?
  • The XML sitemap. Which variant is listed?
  • Redirects. A 301 is a much stronger canonicalisation signal than a tag.
  • Hreflang annotations, which reference canonical URLs and must be self-consistent.
  • External links. Which variant does the rest of the web point at?
  • URL characteristics. Cleanliness, HTTPS, and which variant looks like the primary.
  • The search engine’s own content comparison, which may conclude that two pages you declared duplicates aren’t, or that two you declared distinct are.

When these agree, the pick is trivially your declared canonical. When they conflict, the search engine decides, and it can pick a URL you didn’t nominate. Search Console will show you this — a page reporting “Google chose a different canonical than the user” is exactly this scenario, and it’s information, not a bug.

The common conflicts

Canonical says A, internal links all point at B. You’ve declared A the primary while your own site behaves as though B is. Internal linking is a strong signal and it’s yours to control, so this conflict is self-inflicted and easy to fix.

Canonical says A, sitemap lists B. Same category. Your sitemap should list only canonical URLs — a sitemap full of URLs that canonicalise elsewhere is noise at best.

Canonical says A, the page 301s to B. The redirect wins, and the tag never gets read on a page that isn’t served. Harmless but a sign of stale config.

Canonical points at a page with substantially different content. This is the most consequential one. If you canonicalise a product variant page to a category page whose content genuinely differs, the search engine’s content comparison contradicts your tag, and it’s likely to ignore you and index both. Canonicals are for near-duplicates, not for consolidating pages you’d merely prefer to consolidate.

Canonical chains. A canonicalises to B, B canonicalises to C. Handled inconsistently and easy to avoid — canonicals should point at a URL that self-canonicalises.

Canonical to a noindexed page. Contradictory instructions: index this content under a URL you’ve told me not to index. Nothing good comes from it.

Canonical to a URL blocked in robots.txt. The crawler can’t fetch the target to confirm it’s equivalent, so the signal is unverifiable.

Getting your canonical picked

Stop thinking of the tag as the decision and start thinking of it as a vote you cast alongside several others. To win, make them unanimous:

  1. Self-referencing canonicals on every indexable page. A page whose canonical points at itself is the baseline. It costs nothing and it removes ambiguity from every page that isn’t a duplicate.
  2. Absolute URLs, with protocol and host. Relative canonicals resolve against the current page and go wrong in exactly the situations you’d use them for.
  3. One canonical per page. Two conflicting tags may cause both to be ignored. Watch for a CMS emitting one and a plugin emitting another — this is common and invisible unless you view source.
  4. Internal links point at the canonical. Every one of them: navigation, breadcrumbs, body links, pagination. This is the highest-leverage item on the list because it’s entirely under your control and it’s a strong signal.
  5. Sitemap lists canonicals only.
  6. Consistent URL variants. Pick one protocol, one host, one trailing-slash convention, and redirect the rest. Most canonical confusion is variant confusion.
  7. Canonical target returns 200. Not a redirect, not a 404, not a noindex.

Do those seven and the tag will be honoured in the overwhelming majority of cases, because there’ll be nothing to contradict it.

Canonical, redirect, or noindex?

Three tools that overlap, and choosing wrong causes most canonical problems.

Redirect (301) — when the old URL should stop existing for users. Strongest consolidation signal. Use when content genuinely moved, or when a duplicate has no reason to be reachable.

Canonical — when both URLs must remain reachable for users, but only one should be indexed. Print views, session or tracking parameters, a product reachable through two category paths, syndicated copies of an article.

Noindex — when a page should be reachable and crawlable but must not appear in results at all, and its signals shouldn’t be consolidated anywhere. Internal search results, thin filter combinations, thank-you pages.

The question that separates them: does the user still need this URL to work? No → redirect. Yes, but it shouldn’t rank → canonical if there’s a proper equivalent, noindex if there isn’t.

Do not use robots.txt to keep a page out of the index. Blocking a URL prevents crawling, not indexing — a blocked URL with external links can still appear in results, without a useful snippet, and the crawler can’t read the noindex tag you added because you blocked it from fetching the page. Allow the crawl, serve the noindex.

Verifying

The tag is in the HTML, so read it from the response rather than trusting the CMS:

curl -s https://example.com/page/ | grep -i 'rel="canonical"'

Expect exactly one line, absolute, pointing where you think. Then check the target returns 200:

curl -sI "$(curl -s https://example.com/page/ | grep -oP '(?<=rel="canonical" href=")[^"]+')" | head -1

For the site-wide picture, Search Console’s page indexing report is the authoritative source, because it tells you which URL was actually chosen rather than which one you nominated. When the two differ, the answer is almost always in the seven-item list above — usually item four.