Canonical URLs Explained — What to Set and What to Avoid

A practical guide to canonical tags: what they do, Google's signal hierarchy, and the mistakes that quietly break indexing — verified against Google docs, June 2026.

A canonical URL tells Google “of all the URLs that show this content, this one is the original.” Set it right and duplicate content stops eating your rankings. Set it wrong and Google quietly drops half your pages from the index.

TL;DR

  • Put a self-referencing canonical on every page. As of June 2026 Google treats this as the expected baseline, not a nice-to-have.
  • For real duplicates (parameter URLs, syndicated copies), point the duplicate at the master URL.
  • Canonical is a strong hint, not a command. Google can and does overrule it when your other signals disagree.
  • Never canonical across languages (use hreflang) or to your homepage (deindexes the site). Pair host canonicalization with a 301, because canonical alone does not redirect anyone.

What the tag actually does

The <link rel="canonical" href="..."> tag was introduced to fix the URL-duplication mess of the web: the same page reachable at www and bare domain, with and without a trailing slash, with tracking parameters, paginated, or as language variants. Canonical points all of those at one preferred URL so Google consolidates ranking signals (links, content quality) onto a single page instead of splitting them across near-identical copies.

Crucially, it is one signal among several. Google’s own documentation ranks the inputs it uses to pick a canonical:

SignalStrength (Google)What it means
301/308 redirectStrongThe redirect target should become canonical
rel="canonical" linkStrongThe declared URL should become canonical
Internal linksMediumThe URL most pages link to looks canonical
Sitemap inclusionWeakListed URLs get a small nudge toward canonical

These stack. A page that 301s to the master, declares it as canonical, and lists only the master in the sitemap gives Google a clean, unanimous answer. Conflicting signals are exactly how you end up with “Google chose a different canonical than user.”

How to tell you have a canonical problem

  • Your Pages report shows “Duplicate without user-selected canonical” or “Google chose different canonical than user”.
  • site:yourdomain.com returns both www. and bare-domain versions of the same article.
  • Tracking-parameter URLs (?utm_source=...) are getting indexed instead of the clean URL.
  • You ship the same content in English and Chinese and Google is confused about which version to rank.

Step by step

  1. Audit your current canonical. View source on 5-10 pages and search for rel="canonical". Confirm every page has exactly one, pointing at the public, https, no-tracking-parameter version of itself. Two canonical tags on one page is as bad as zero: Google may ignore both.
  2. Pick one host: https://yoursite.com or https://www.yoursite.com. The other should 301 redirect to it. Canonical alone is not enough; without the redirect, the other host still resolves and still competes.
  3. For paginated lists (/blog/page/2), canonical each page to itself, not to page 1. Pointing all pages to page 1 tells Google the deeper pages are duplicates, so anything that only appears past page 1 stops getting indexed. Note that Google has not used rel="prev"/rel="next" as indexing signals since 2019, so self-referencing canonical is now the whole pagination strategy.
  4. For URLs with tracking parameters, the canonical should drop the parameters: a request to ?utm_source=twitter should still emit <link rel="canonical" href="https://yoursite.com/articles/slug/">.
  5. For multilingual sites, do NOT canonical zh to en or vice versa. Each language version has its own self-referencing canonical, and they reference each other via hreflang. Canonical and hreflang solve different problems: canonical picks the master among duplicates, hreflang says “these are the same page in other languages.”
  6. After deploy, use Search Console URL Inspection on 3-4 sample URLs and check “Google-selected canonical” matches your declared one. If it does not, your hint is being overruled. Fix the conflicting signal before touching anything else.

When Google overrules your canonical

The Pages report status “Duplicate, Google chose different canonical than user” means your declared canonical lost to a stronger or more consistent signal. Per Google’s troubleshooting docs, the usual culprits, in order of how often they bite:

  • Internal links disagree. Most of your pages link to URL A, but A’s canonical points at B. Internal links are a medium-strength signal and they outvote a lonely tag. Make your links point where your canonical points.
  • Sitemap lists a different URL than the canonical declares.
  • The declared canonical redirects or 404s, so Google can’t honor it and falls back to its own pick.
  • A higher-authority duplicate exists (a scraper or syndication partner with more links). That is a links problem, not a tag problem.

Realign every signal so they all name the same URL, then request indexing and wait for a recrawl. Canonical changes are not instant; budget days to weeks.

Common pitfalls

  • Canonical-ing every page to the homepage (a real anti-pattern from broken CMS plugins and bad theme defaults). This tells Google every page is a copy of the homepage and deindexes your entire site.
  • Canonical-ing zh pages to the en version. Google drops the Chinese pages from the Chinese index and you lose half your traffic.
  • Setting canonical to a URL that returns 404 or 301. Google ignores it and picks its own canonical, usually the wrong one.
  • Using the absolute URL on the staging domain (staging.yoursite.com) and forgetting to flip it for production. Now your live pages canonical to a private staging server Google can’t even crawl.
  • Mixing http/https or www/non-www between canonical and the actual URL. They must match exactly, byte for byte; Google prefers the https variant but will not silently fix a mismatch for you.
  • Pointing canonical at a URL fragment (#section). Google ignores fragments outright, so it’s the same as having no canonical.

Who this is for

Site owners who already have duplicate-content reports in Search Console, or who run any combination of pagination, tracking links, and multiple subdomains.

When to skip this

Brand-new 5-page sites with no parameters, no pagination, and one language. A self-referencing canonical is enough — you can come back to this when you scale.

FAQ

  • What is a self-referencing canonical?: A canonical that points the page at its own clean URL. Every page should have one — it tells Google “this URL is the canonical version of this content.” It is the safest default and prevents Google from picking a weird canonical on its own.
  • What if Google picks a different canonical than I declared?: It usually means your declared canonical conflicts with other signals — internal links pointing at a different URL, sitemap listing a different URL, or hreflang referencing a different URL. Make all signals agree and Google will respect your hint.
  • Can I canonical across domains?: Technically yes, and it’s the right tool when you syndicate content and want your original to keep the ranking. In every other case use a 301 redirect instead; it is the stronger signal and it actually moves users to the right place.
  • Should I canonical or noindex duplicate pages?: Use canonical if both URLs serve real users (e.g. a category page and a search-result page show the same product). Use noindex if one URL is purely internal (cart, admin, filtered views nobody should land on from search). They are not interchangeable, and Google explicitly advises against using noindex to pick a canonical within one site.
  • How long until a canonical change takes effect?: Google has to recrawl both URLs and re-evaluate the signals, so expect days to a few weeks. Use URL Inspection to confirm; do not keep changing the tag while you wait.

Google’s official references are worth bookmarking: How to specify a canonical with rel=“canonical” and the canonicalization troubleshooting guide.

Tags: #Indie dev #SEO #Technical SEO #Canonical