GUIDE / TECHNICAL SEO

Canonical Tags: How Google Chooses the Canonical (and How You Influence It)

A canonical tag is your suggestion for which URL should represent a group of duplicates. Google takes the suggestion seriously, but it makes its own decision from several signals. This guide explains those signals, how to keep them pointing the same way, and how to check what Google actually chose.

By Maharshi KushwahaUpdated 8 min read
On this page
  1. What canonicalisation actually is
  2. The signals Google weighs
  3. Self-referencing canonicals
  4. Handling the common cases
  5. Common mistakes that break canonicalisation
  6. Checking what Google actually chose
  7. Frequently asked questions
  8. Where this connects

The most useful thing to understand about canonical tags is that they are not instructions. Google calls them a hint, and means it. When "we added canonicals" was supposed to solve duplicate content and didn't, it's nearly always because other signals pointed somewhere else and the hint got overruled. This sub-guide of my technical SEO guide is about making every signal agree.

What canonicalisation actually is

When Google finds several URLs with the same or very similar content, it groups them into a cluster and picks one URL to represent the cluster in search results. That chosen URL is the canonical. Signals from all the duplicates (links, content, anchor text) are consolidated to it. The others are still crawled occasionally, but they are not shown and do not rank separately.

This happens whether you add a canonical tag or not. The tag gives you a vote. If you don't vote, Google decides without you, often differently from what you'd want: the HTTP version, the one with a tracking parameter, the paginated copy, or the syndicated version on a bigger site.

  1. Google crawls several similar URLs
  2. Groups them as duplicates
  3. Weighs the signals
  4. Picks one canonical
  5. Consolidates signals to it
  6. Shows that one in results

The signals Google weighs

Google has been fairly open about this. The canonical tag is one input among several, and when they disagree, the tag can lose. The ones I check on every site:

The rel="canonical" tag

Your explicit preference, in the HTML head or an HTTP header. Strong when it agrees with everything else; weak when it doesn't.

Redirects

A 301 is the strongest canonical signal there is, because it physically removes the alternative. If URL A redirects to B, B is canonical, regardless of what any tag says.

Internal links

If your navigation, breadcrumbs and body links all point to one URL, that URL looks like the one you mean. If they point to a parameter version while the tag points elsewhere, Google has to choose.

Sitemap inclusion

URLs listed in your XML sitemap are read as "these are the ones I care about". Listing a non-canonical URL contradicts your tag.

HTTPS over HTTP

Everything else being equal, Google prefers the secure version.

External links and content quality

If the world links to one version, or one version has fuller content, Google leans toward it. This is how syndicated copies on big publishers sometimes outrank the original.

The practical lesson: a canonical tag is not a fix on its own. It's the final step after you have made the redirects, internal links and sitemap tell the same story.

Self-referencing canonicals

Every indexable page should carry a canonical tag pointing to itself: the clean, preferred, absolute URL. This sounds pointless until you remember that any URL can be reached with parameters appended, with a different case, with or without a trailing slash, or through a tracking link someone posted on WhatsApp. A self-referencing canonical means every one of those variants automatically declares the clean URL as the original. Without it, each variant is a duplicate with no vote.

Two implementation details catch people out. The canonical must be an absolute URL with the right protocol and host (https://example.com/page/, not /page/). And it must be in the raw HTML or the HTTP header, not injected by JavaScript after load, because Google reads the first one it finds and may not wait for the rendered version. I cover why in the JavaScript SEO guide.

Handling the common cases

Parameters

Tracking parameters (utm_*, fbclid, gclid), session IDs and sort orders don't change the content. These should canonicalise to the parameter-free URL. Where the parameter does change content substantially (a filter that produces a distinct, searched-for product set), that URL deserves its own self-referencing canonical and treatment as a real page. Deciding which parameters fall on which side is an architecture decision; see site architecture for faceted navigation specifically.

Product variants

Colour and size variants on ecommerce sites are the hardest case. If each variant has its own URL with almost identical content, canonicalise variants to the parent product. If variants have distinct search demand ("blue cotton kurta" vs "red cotton kurta" are searched separately and shown differently), give the most important variants their own canonical and genuinely different content. Canonicalising to the parent and then wondering why the variant doesn't rank is a mistake I see on most ecommerce audits.

Pagination

Page 2 of a category is not a duplicate of page 1. It lists different products. Canonicalising every paginated page to page 1 tells Google the products on pages 2 to 40 don't matter, which quietly orphans them. Each paginated page should self-canonicalise. Google no longer uses rel="prev" and rel="next" for indexing, so the structure has to carry the weight: link clearly between pages, keep the category hub linking as deep as practical, and let each page stand on its own.

Cross-domain syndication

If you publish an article and a partner republishes it, the partner's copy should carry a canonical pointing to your original. If they won't add it, Google will pick a canonical based on authority and links, and a larger domain often wins. Where you can't control the partner's page, delay the syndication so your version is indexed first, and make sure your version has the stronger internal linking. Cross-domain canonicals work; they're just a hint like any other.

Mobile, AMP and localised versions

Separate mobile URLs and AMP pages use their own annotations alongside canonicals. Language and country versions are not duplicates and should not canonicalise to each other; that's what hreflang is for (see the international SEO guide). Canonicalising your Hindi page to your English page tells Google to drop the Hindi page.

Common mistakes that break canonicalisation

MistakeWhat Google seesWhat happensFix
Canonical points to a URL that redirectsA hint toward a URL that immediately sends it somewhere elseGoogle follows the chain or ignores the tag; signals get dilutedAlways canonicalise to the final 200 URL
Canonical points to a noindexed or blocked URL"The original is this page you can't index"Google ignores the canonical or drops bothCanonical targets must be indexable and crawlable
Canonical and internal links disagreeTag says A, every link says BGoogle often picks BUpdate templates so links use the canonical URL
Non-canonical URLs in the sitemapSitemap says A matters, tag says B is the originalConflicting hints; Search Console flags "Duplicate, Google chose different canonical"Sitemaps should contain only canonical URLs
Multiple canonical tags on one pageTwo votes for different URLsGoogle ignores bothOne tag, usually fixed by removing a plugin's duplicate
Canonical to the homepage sitewideEvery page claims to be a duplicate of the homepageThe whole site collapses to one indexed URLSelf-referencing canonicals; this is usually a template variable bug
Relative or protocol-mismatched canonicalAn ambiguous or wrong-host URLIgnored, or canonicalises to the wrong siteAbsolute HTTPS URL on the correct host
Canonical on paginated pages to page 1Pages 2+ declared duplicates of page 1Deep products and posts lose their pathSelf-canonicalise each page

Checking what Google actually chose

Your canonical tag and Google's canonical can differ, and the only reliable way to know is to ask Google. URL Inspection in Search Console shows two lines: "User-declared canonical" (your tag) and "Google-selected canonical" (its decision). When they match, you're done. When they don't, the page indexing report's "Duplicate, Google chose different canonical than user" and "Duplicate without user-selected canonical" groups tell you how widespread the disagreement is.

I work through those groups by pattern, not URL by URL, the same way I approach the "not indexed" statuses. Fifty URLs disagreeing usually means one template or rule is sending a conflicting signal. Find it in the list above, fix it, and the group shrinks on the next crawl. For generated pages at scale, the check belongs in the templates themselves; I wrote up how canonical rules behave there in the programmatic page templates experiment.

Frequently asked questions

Does a canonical tag pass link equity like a redirect?

When Google accepts the canonical, signals from the duplicates are consolidated to the chosen URL, similar in effect to a redirect. The difference is that Google can decline a canonical hint, whereas a redirect leaves it no choice. For URLs you genuinely want gone, redirect; for URLs that need to exist but shouldn't rank separately, canonicalise.

Should I canonicalise or noindex duplicate pages?

Canonicalise when the pages are true duplicates and you want their signals consolidated. Noindex when the page is different enough that it isn't a duplicate but still shouldn't rank (a thin filter view, a thank-you page). Using noindex on duplicates throws away their signals instead of consolidating them.

Can I set a canonical to a page on another website?

Yes. Cross-domain canonicals are supported and are the correct tool for syndicated content, where the republished copy points back to the original. Google treats them as a hint like any other, so the original should also be the better-linked and earlier-indexed version.

Why does Search Console say "Google chose different canonical than user"?

Because other signals outweighed your tag: internal links or the sitemap point to a different URL, the alternative has more external links, or your canonical target redirects or is non-indexable. Find which signal disagrees and align it; the tag alone will not win the argument.

Do I need canonical tags if every page has a unique URL?

Yes. Even with unique URLs, any page can be reached with tracking parameters, different capitalisation, or trailing-slash variants, and each is a potential duplicate. A self-referencing canonical on every page resolves all of them automatically.

Where this connects

This guide is part of the technical SEO hub. Canonical checks are a core section of my technical SEO audit framework; the behaviour of canonical rules across thousands of generated pages was tested in the programmatic page templates experiment; the programmatic SEO build case study shows canonicalisation designed into templates from day one; and implementing it properly is part of my technical SEO services.

Work with me

Need help applying this?

Reading is the easy part. If you want this implemented on your site, tell me what you're working on.

Work With Me Follow the SEO Roadmap
Email — [email protected]
Based in — India · working remotely
Response — usually within 2 working days