# 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.

Updated 2026-09-13 · Source: https://porteur.ai/guides/canonical-tag

## 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.

```html
<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.

> Pick one protocol, one host, one path format. For example: https, www or not, trailing slash or not, lowercase. Canonical should match that exact choice.

## 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.

```html
<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
<!-- HTML head -->
<link rel="canonical" href="https://yourproduct.com/guides/getting-started" />
```

```plaintext
# 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

1. **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
2. **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
3. **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
4. **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
5. **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

```html
<!-- 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

### What does “canonical” mean?

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.

### How do I write a canonical tag?

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.

### How can I check if a URL has a canonical tag?

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.

### What is a canonical example?

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.

### Should I canonical paginated pages to page 1?

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.

### Is a canonical the same as a redirect?

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.

## Read next

- [Canonical URL](https://porteur.ai/glossary/canonical-url): A canonical URL names the original version of a page. Use it to handle parameters and duplicates, avoid split signals and keep the right page indexed.
- [Alternate page with proper canonical tag: what Search Console means](https://porteur.ai/guides/alternate-page-with-proper-canonical-tag): What this Search Console status means, when to ignore it, when it hides the wrong page, and the exact checks and fixes to set the right canonical.
- [Technical SEO checklist for a small site](https://porteur.ai/guides/technical-seo-checklist): Run these 20 technical SEO checks, in order. Each shows how to check it free and what fixed looks like for a site under 1,000 pages.
- [Internal linking for a small site: which pages link to which](https://porteur.ai/guides/internal-linking-for-seo): Decide which pages rank. Build hubs, write clear anchors, fix orphans, and crawl your site to map links you control.
- [Orphan pages: finding the pages nothing links to](https://porteur.ai/guides/orphan-pages): Find orphan pages on your site, why they happen, how to compare crawl, sitemap and Search Console, and what to do: link, merge, redirect or remove.
- [Noindex](https://porteur.ai/glossary/noindex): Noindex tells search engines not to index a page. Use it for pages that should never rank, and avoid adding it to pages that earn.
- [hreflang](https://porteur.ai/glossary/hreflang): hreflang tells search engines the language and region for each page version. See when you need it, where to declare it, and how to avoid errors.
- [Heading tags](https://porteur.ai/glossary/heading-tags): Heading tags are h1 to h6 in HTML. See how to structure pages, help Google and screen readers, and write headings that win snippets.

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: https://porteur.ai/
