Canonical tags in practice: the six situations you will meet
A canonical tag tells search engines which address is the real one for a page. In theory it is one line. In practice six situations come up on a product site, and two of them are where people get it wrong. Here is the tag for each, and the check that tells you whether Google agreed.
By Théophile Louvart, founder of Porteur · Updated 15 September 2026 · Markdown
The default: every page points at itself
Start by giving every page a canonical to its own address, in full, with the protocol and the host. It costs nothing, it settles the variants you did not think about, and it is the behaviour every CMS and framework offers.
<link rel="canonical" href="https://yourproduct.com/guides/getting-started">- Absolute, not relative. A relative canonical resolves differently on a variant URL and can point somewhere you did not mean.
- One per page. Two canonical tags is the same as none: Google ignores both.
- In the head, rendered by the server. A canonical injected by a script is read by Google and missed by the crawlers behind the AI assistants.
- Matching the form you link to internally: the same host, the same protocol, the same trailing slash.
The six situations, at a glance
| Situation | Canonical points at | Common mistake |
|---|---|---|
| An ordinary page | Itself | No canonical at all, so variants compete |
| A URL with tracking or sorting parameters | The clean URL | Linking internally with the parameters attached |
| Page two of a list | Itself | Pointing every page at page one, which hides the rest |
| A filtered view with real demand | Itself | Canonical to the unfiltered page, so the page you wanted cannot rank |
| Your article republished elsewhere | Your URL, from their page | No arrangement, so their copy outranks yours |
| The same page on two hosts you own | The one you chose | A staging site with canonicals still pointing at staging |
Parameters, filters and tracking
Every distinct URL is a distinct page to a crawler, so ?utm_source=newsletter and ?sort=new create copies of a page you wrote once. The canonical folds them back together.
- Tracking parameters: canonical to the clean URL. Use them on links you place elsewhere, never on links inside your own site.
- Sorting and view parameters: canonical to the unfiltered page. Nobody searches for your list sorted by date.
- Filters with genuine search demand: give the filtered view its own page, its own title and a self-referencing canonical. Then it can rank for what people actually type.
- Session identifiers in URLs: remove them. No canonical saves a site that gives every visitor different addresses.
<!-- On https://yourproduct.com/guides?utm_source=newsletter -->
<link rel="canonical" href="https://yourproduct.com/guides">Pagination, where most canonical mistakes happen
Google stopped using rel next and prev in 2019. Each page of a series is its own URL, and it should say so.
- Page two carries a canonical to page two. Not to page one.
- Give each page a title that differs, so the series does not read as one page repeated.
- Link the pages to each other with real anchors, and make sure the items on page two are also reachable from somewhere else, so their depth does not depend on pagination alone.
- A view-all page is an alternative for short lists: the parts canonical to it, and it carries everything.
The same page on two hosts you own
- www and non-www, http and https: pick one host, redirect the other on every path with a 301, and let the canonicals point at the one you chose. Redirects settle this better than canonicals.
- A staging or preview environment: it should be noindexed and password-protected, and its canonicals must not point at staging when the code ships to production. This is the accident that removes a whole site from the index.
- A marketing site and an app on separate hosts: decide where each page lives. Two copies of the same landing page compete with each other, and the canonical is how you say which one wins.
- A subdomain for the blog: fine, as long as each page is canonical to itself on its own host, and the sitemap on each host lists only that host's URLs.
When Google picks a different URL
Search Console tells you plainly. In the Page indexing report, Duplicate, Google chose different canonical than user means your declaration was read and overruled.
Inspect the URL
URL Inspection shows the user-declared canonical next to the Google-selected canonical. Those two lines are the whole diagnosis.
Check your internal links
If your menu, your sitemap and your breadcrumbs link the other version, Google is believing your links rather than your tag. Make them agree.
Check the redirects
A canonical pointing at a URL that redirects is a contradiction. The target must answer 200.
Check the pages are really duplicates
If they are not as similar as you assumed, Google keeps both and ignores the tag. That is usually correct and means you have two pages, not one.
If the duplicate has no reason to exist, redirect it
A 301 removes the choice. A canonical only suggests one.
The opposite line, Alternate page with proper canonical tag, is the system working: Google found your canonical, agreed with it, and left the copy out on purpose.
The checks before you ship
- Every template renders exactly one canonical, absolute, from the server.
- The canonical, the sitemap entry and the internal links all use the same form of the URL.
- No canonical points at a URL that redirects, 404s or carries a noindex.
- No canonical points at staging, at localhost, or at the page you copied the template from.
- Paginated pages point at themselves; filtered views that should rank point at themselves too.
- Spot-check three URLs a month in URL Inspection and compare the declared and the selected canonical.
Questions
It is not required, and a self-referencing canonical on every page is a cheap default that settles variants you have not thought about, such as tracking parameters and trailing slashes. Google chooses a canonical with or without your tag.
No. Each paginated page should point at itself. Pointing them all at page one tells Google the later pages are copies, and the items on them lose their route into the index.
Yes, and that is how syndication should be handled: the republished copy points at your original. Never point your own page at someone else's, which removes yours from the index.
It is a hint, weighed against your internal links, your sitemap and any redirects. The usual causes are links pointing at the other version, a canonical target that redirects, or two pages that are less similar than you assumed.
They do different jobs. A redirect removes the duplicate for everyone and is stronger. A canonical keeps the URL reachable for people who need it, such as a filtered view or a link carrying parameters, and tells search engines which to index.
No. A canonical says two pages are the same thing; noindex says a page should stay out of the index. Using a canonical on a page that is genuinely different, to hide it, usually results in Google ignoring the tag and indexing it anyway.
Check my site, free
Paste your URL and the free check reads the canonical on every page it crawls, and tells you where your tags, your links and your sitemap disagree.
- Free check, no card
- Read-only, your own accounts
- Readable by your agent
Read next
- GuideCanonical tags: what they do and the mistakes that cost rankings
- GlossaryCanonical URL
- GuideDuplicate without user-selected canonical: the fix in three steps
- GuideAlternate page with proper canonical tag: what Search Console means
- GuideHow to fix duplicate content, case by case
- GlossaryPagination
- GuideHow to use the URL Inspection tool in Search Console
- Free toolOn-page SEO checker