Canonical tags: what they do and the mistakes that cost rankings
You use a canonical tag to tell Google which URL is the primary version of a page. Get it right and duplicates stop competing with you. Get it wrong and the right page can vanish from results. This guide shows what to add, what to avoid, and how to check your site.
By Théophile Louvart, founder of Porteur · Updated 13 September 2026 · Markdown
What a canonical is and when to use one
A canonical tag points to the preferred URL for a piece of content. It lives in the head of the HTML or in the HTTP header.
Use a canonical when multiple URLs show the same or very similar content. Without it, Google may index a weaker variant or split signals across duplicates.
- UTM and other tracking parameters: /pricing?utm_source=newsletter
- Sort or filter parameters that do not change the core topic: /guides?sort=latest
- HTTP and HTTPS versions both live for a while
- Both with and without trailing slash: /features and /features/
- Upper and lower case URLs if your server serves both
- Print or lite views of the same article
Do not use a canonical to hide a thin or unrelated page. Use noindex for pages that should not appear at all. Canonical is for duplicates of the same thing.
How Google treats rel=canonical
Google treats a canonical as a strong hint, not a command. It usually honours the tag when all signals agree. It can ignore it when they do not.
- Signals that support your canonical: internal links point to it, sitemaps list it, content matches, it returns 200, it is indexable
- Signals that fight it: the tag points to a redirect, to a noindex page, to a different topic, or duplicates point to each other in a loop
In Search Console, the Page indexing report can show Alternate page with proper canonical tag. That means Google found your canonical on that page and agreed, so it left that URL out of the index on purpose. It is only a problem when the canonical is wrong for your goal.
The self‑referencing canonical
Put a self‑referencing canonical on every indexable page. It declares the page as its own primary version and prevents stray parameters from winning.
<link rel="canonical" href="https://yourproduct.com/pricing" />On /pricing?utm_source=newsletter, the page still declares https://yourproduct.com/pricing. On /pricing/, use one canonical form and stick to it across the site.
Cross‑domain canonicals and syndicated content
You can point a canonical to a different domain when it truly is the same content. This is common for syndication or mirrored docs.
<link rel="canonical" href="https://docs.yourproduct.com/getting-started" />Only do this with consent or control. If you canonical a page to another site, you ask Google to index that other URL as the primary. Your page may not rank.
Where to put a canonical: HTML and HTTP header
Place the tag once in the head of the HTML for HTML pages. For non‑HTML assets like PDFs, use the HTTP Link header.
<!-- HTML head -->
<link rel="canonical" href="https://yourproduct.com/guides/getting-started" /># HTTP response header for a PDF
Link: <https://yourproduct.com/whitepaper>; rel="canonical"Avoid multiple canonicals on one page. Avoid relative URLs. Use the absolute, preferred URL every time. One clear signal beats many weak ones.
The mistakes that cost rankings
- Canonical to a redirect: points at a 301 or 302. Use the final 200 URL instead
- Canonical to a noindex page: you tell Google to index a URL it is told to ignore
- Canonical to a different topic: content mismatches, Google may ignore the tag
- Missing canonical on parameter pages: UTM or sort URLs get indexed and compete with the clean URL
- Conflicting canonicals: page A canonicals to B, B canonicals to A, Google may pick one you do not expect
- Multiple canonicals in the head: parsers can pick the first or ignore later ones
- Canonical to a non‑canonical version: mixed http and https, or wrong host, or wrong trailing slash
- Canonical only on the duplicate: the primary page lacks a self‑canonical and loses to a variant
Each mistake creates mixed signals. Mixed signals waste crawl budget on variants and split link equity. The result is weaker rankings or the wrong URL ranking.
A fixed page: /pricing and /pricing?ref=twitter both exist, both load fast, both indexable, both show a canonical to https://yourproduct.com/pricing. Internal links point to /pricing only.
Parameters, sort, and filters
Decide which parameters create unique content and which do not. Canonical the non‑unique ones to the base URL. Let unique ones stand on their own with a self‑canonical.
- Non‑unique: utm_source, utm_medium, sort=latest, view=list, page=2 for infinite scroll clones
- Unique: colour=red on a single product photo page, region=en-gb on a localised article, filter=free on a pricing comparison if content changes materially
On a category like /blog, do not canonical every paginated page to page 1 if page 2 shows different posts. Each page should self‑canonical if it is unique enough to index. If you do not want deeper pages indexed, use noindex rather than misusing canonical.
How to check your canonicals
Check the HTML
Open a key page like https://yourproduct.com/pricing. View source. Find one <link rel="canonical" href="...">. Confirm it is absolute, 200, indexable, and matches your chosen format
Check parameter variants
Load https://yourproduct.com/pricing?utm_source=newsletter and /pricing/?ref=twitter. Confirm both show the same canonical as the clean URL
Check HTTP headers for assets
For PDFs or other non‑HTML assets, run curl -I and look for a Link: <...>; rel="canonical" header that points to the HTML version or preferred file
Check internal links and sitemaps
Click through your nav and important CTAs. Make sure they point to the canonical URL form. If you use a sitemap, list the canonical URLs only
Use Search Console on problem URLs
In URL Inspection, see Google-selected canonical and User-declared canonical. In the Page indexing report, review Alternate page with proper canonical tag to confirm which URLs are out of the index by design
Remember the Search Console basics as of 2026. An impression is counted when a link to your page appears on a results page a user loaded. Position is the highest link to your site on that page. CTR is clicks divided by impressions. The report holds up to 16 months. Comparisons default to the last 28 days against the 28 before. Query tables omit rare and anonymised queries, so sums are lower than totals.
Debugging conflicts and mixed signals
- Open both the duplicate and the target. Both should have canonicals pointing to the target. The target should self‑canonical
- Check status codes. Target must be 200. Fix redirects and point canonicals to the final URL
- Remove noindex on the canonical target unless the page must stay out of results
- Fix internal links to use the canonical URL. Update nav, footers, sitemap, and popular posts
- Normalise URL variants at the server level. Redirect http to https, and trailing slash or not, consistently
- Avoid canonical chains. Every duplicate should point straight to the final canonical
If Google still ignores your tag, check if the content truly matches. If the duplicate has extra sections, ads, or user comments, it can look meaningfully different. Make the duplicate closer, or remove it from indexing if you do not want it to rank.
Frameworks, CMSs, and edge cases
Most modern CMSs output self‑referencing canonicals. Verify the exact URL they print. Some themes use http, a wrong host, or add a slash you do not use.
- Single Page Applications: ensure the canonical is in the server‑rendered HTML, not just set by client‑side JS
- International sites: hreflang should point between language versions, and each page should still have a self‑canonical to itself in that language
- Tracking templates: ensure campaign parameters do not overwrite or remove the canonical on landing pages
- Search pages: usually noindex and no canonical to a category, unless they are curated with unique value
A fixed page in this setup: https://yourproduct.com/en-gb/pricing has a self‑canonical to itself. It links with hreflang to /en-us/pricing. Both versions avoid canonicals to each other because the language differs.
Examples to copy and adapt
<!-- Product page with parameters in the wild, canonical to the base -->
<link rel="canonical" href="https://yourproduct.com/product/blue-mug" />
<!-- Category page where sort does not change the topic -->
<link rel="canonical" href="https://yourproduct.com/blog" />
<!-- Cross-domain canonical for a syndicated article -->
<link rel="canonical" href="https://blog.yourproduct.com/how-we-built-the-api" />Before: /blog?sort=latest is indexed and outranks /blog for "yourproduct blog". After: both pages exist, both show a canonical to https://yourproduct.com/blog, internal links point to /blog. /blog ranks and the parameter URL is shown as Alternate page with proper canonical tag in Search Console.
Questions
Canonical means the preferred version. In SEO it is the URL that should carry the signals and appear in results when duplicates exist. You declare it with a rel=canonical link element or an HTTP Link header.
Add a single link element in the head with an absolute URL: <link rel="canonical" href="https://yourproduct.com/page" />. Use the final, indexable, 200 URL. For PDFs or other files, set an HTTP Link header with rel="canonical" pointing to the preferred URL.
Open the page, view source, and search for rel="canonical". Confirm there is only one, it is absolute, and it points to the right URL. In Search Console, use URL Inspection to compare User-declared and Google-selected canonicals, and the Page indexing report for groups of alternates.
On https://yourproduct.com/pricing and https://yourproduct.com/pricing?ref=twitter, both pages should declare <link rel="canonical" href="https://yourproduct.com/pricing" />. The clean URL is the canonical. The parameter URL is an alternate and should be excluded from the index.
Only if the content is the same. If page 2 shows different items than page 1, each page should usually have a self‑canonical. If you do not want deeper pages indexed, consider noindex rather than pointing them at page 1.
No. A redirect moves users and crawlers to another URL. A canonical is a hint for indexing. Users stay on the page. Use redirects to consolidate live traffic. Use canonicals to consolidate indexing signals among duplicates.
Sources
Check my site, free
Paste your homepage and get a free check that reads your site and the searches around it, then shows three canonical issues or opportunities if it finds them, in about thirty seconds.
- Free check, no card
- Read-only, your own accounts
- Readable by your agent
Read next
- GlossaryCanonical URL
- GuideAlternate page with proper canonical tag: what Search Console means
- GuideTechnical SEO checklist for a small site
- GuideInternal linking for a small site: which pages link to which
- GuideOrphan pages: finding the pages nothing links to
- GlossaryNoindex
- Glossaryhreflang
- GlossaryHeading tags