07

Technical SEO

Chapter 07 / 09

Canonical tags

What canonicals actually do, when they matter, and how to set them on a multi-locale, multi-parameter, multi-source site without quietly torching the URLs you want indexed.

8 min readPublished May 4, 2026
Canonical tags

Canonical tags are how you tell search engines which URL is the “real” version when the same content can be reached through multiple paths. They’re a small piece of HTML with outsized control over what gets indexed, what gets the link equity, and which URL appears in SERPs. Get them right and your site ranks one consolidated, authoritative URL per topic. Get them wrong and you split signals across duplicates that all rank weakly.

The canonical isn’t a directive, it’s an argument. Google evaluates it alongside redirects, sitemap entries, internal links, and external links — and picks whichever URL has the strongest combined signal as the canonical. When Google overrides your canonical, it’s telling you the rest of your signals contradict it.

What a canonical tag looks like

<link rel="canonical" href="https://www.example.com/page/" />

Goes in the <head>. Can also be set via HTTP header (Link: <https://...>; rel="canonical") — useful for non-HTML resources like PDFs.

The URL inside the canonical should be:

  • Absolute (full https://...), not relative.
  • The exact, clean canonical URL — no trailing parameters, no tracking, no fragment.
  • An indexable URL — don’t canonical to a noindex / 4xx / redirected URL.
  • The same on mobile and desktop renderings (per mobile-first indexing).

The four scenarios you have to handle

ScenarioSelf-canonical (every indexable page)
Canonical strategyEach page canonicals to its own clean URL
ScenarioURL parameters (?utm, ?sort, ?ref)
Canonical strategyAll variants canonical to the parameter-free version
ScenarioPagination (/page/2/, /page/3/)
Canonical strategyEach paginated page self-canonicals (NOT canonical to page 1)
ScenarioMulti-locale (/en/, /es-mx/)
Canonical strategyEach locale self-canonicals; use hreflang to tie them together
ScenarioCross-domain syndication
Canonical strategySyndicated copies canonical to the original on your domain
ScenarioAMP / m. mobile / print
Canonical strategyAll variants canonical to the responsive primary URL
ScenarioFaceted navigation / filters
Canonical strategyFilter combinations canonical to the parent category page (or noindex)

Self-canonicalisation — the default rule

Every indexable page should set a canonical pointing to its own clean URL. This sounds redundant — “I’m at /page/, my canonical says /page/, why bother” — but it’s the cheapest insurance available against:

  • Tracking parameters (UTM, fbclid, gclid) being indexed as separate URLs.
  • Sort / filter / pagination parameters creating duplicates.
  • HTTPS / HTTP / www / non-www mismatches Google might pick wrong.
  • Trailing-slash variants (/page vs /page/) splitting signals.

Modern frameworks (Next.js, Nuxt, Remix, Astro) make this trivial — set a single canonical URL helper that runs on every page. The cost is near-zero; the protection against parameter / tracking pollution is significant.

Pagination — the most common mistake

For years the SEO advice was to canonical paginated pages back to page 1. Google explicitly said this is wrong since 2019, but the bad advice still circulates.

Correct handling:

  • /category/ — self-canonicals to /category/
  • /category/page/2/ — self-canonicals to /category/page/2/ (NOT to /category/)
  • /category/page/3/ — self-canonicals to /category/page/3/

Each paginated page is its own canonical because each contains different content. Canonical-ing them all back to page 1 tells Google “index page 1, ignore the rest” — and pages 2+ stop being crawled, the products / articles on them stop being discoverable, and the site loses long-tail traffic.

Multi-locale handling

Each locale URL self-canonicals to itself. The hreflang attribute is what ties locales together, not canonical:

  • /en/page/ — canonical to /en/page/ + hreflang en, es-MX, x-default
  • /es-mx/page/ — canonical to /es-mx/page/ + hreflang en, es-MX, x-default

Common mistake: setting es-MX pages to canonical to the EN URL. This tells Google to drop the Spanish page from the index — rankings on es-MX queries die. Always self-canonical per locale; use hreflang for the locale relationship.

Cross-domain canonical (syndicated content)

When you syndicate your content to other publications (Medium, LinkedIn Articles, partner sites), the syndicated copies should canonical to the original on your domain:

<link rel="canonical" href="https://www.your-domain.com/article/" />

Tells Google: “the version on Medium is a copy; the original is on my site; consolidate ranking signals to the original.” Most major syndication platforms support setting custom canonical (Medium does, LinkedIn does not — which is why LinkedIn Articles are usually a poor SEO trade-off).

Canonical vs other signals — what wins when they disagree

Google evaluates many signals when picking a canonical, and the canonical tag is just one input:

Signal301/302 redirect
StrengthStrongest — destination wins
SignalXML sitemap entry
StrengthStrong — included URLs preferred
SignalInternal links pointing at one URL consistently
StrengthStrong — concentration of internal links matters
SignalExternal backlinks pointing at one URL
StrengthStrong — most-linked URL often wins
Signalrel=canonical tag
StrengthHint — Google may override if other signals contradict
SignalURL structure (cleaner > messier)
StrengthTiebreaker — Google prefers shorter / cleaner URLs

The implication: if you set canonical to URL A but your sitemap, internal links, and external backlinks all point at URL B, Google picks B. The canonical tag isn’t magic — it works only when the rest of your signals are consistent.

How to verify canonical signals are working

  • 1. Search Console > URL Inspection > check “Canonical” field. Compare “User-declared canonical” vs “Google-selected canonical”. They should match.
  • 2. Search Console > Pages > filter to “Duplicate, Google chose different canonical than user”. Lists every URL where Google overrode your canonical. Each row is a signal you need to investigate.
  • 3. Audit internal links to the URL. Confirm internal links consistently point at the canonical version, not at variants.
  • 4. Check the sitemap. Only canonical URLs should be in the sitemap; including duplicates dilutes the signal.
  • 5. Check redirects. Old URLs should 301 to canonicals; lingering 302s look like temporary moves to Google.

Common canonical mistakes

  • Canonical pointing to a noindex / 4xx / redirected URL. Self-defeating — the canonical destination must be indexable.
  • Canonical to a URL that doesn’t exist. Typos, deleted pages, schema migrations leaving stale references.
  • Multiple canonical tags on the same page. Google ignores all of them.
  • Canonical-ing localised pages to the EN version. Drops the localised page from the index.
  • Canonical-ing paginated pages to page 1. Stops Google from crawling pages 2+.
  • Mismatching canonical on mobile and desktop. Under mobile-first indexing, the mobile canonical wins.
  • Forgetting canonical on parameterised URLs. UTM tracking, sort variants, filter combinations all become indexable duplicates.

The bottom line

Canonical tags are how you consolidate ranking signals on the URL you actually want indexed. Self-canonical every indexable page; use absolute URLs to your clean canonical version; handle pagination by letting each paginated page self-canonical; for multi-locale, self-canonical per locale and tie locales together with hreflang. Verify Google honors your canonicals via Search Console; when it doesn’t, the rest of your signals are contradicting the tag and that’s the real fix.

Common questions

Common questions

Quick answers to what we get asked before every trial signup.

It tells search engines: 'when you find duplicates of this page, treat THIS URL as the canonical version'. The canonical receives the indexing, the ranking, and the consolidated signals (links, engagement, etc) from all duplicates. Canonicals are hints, not directives — Google can override your canonical if it disagrees, especially when other signals (sitemaps, internal links, redirects) point elsewhere.