What is a canonical tag?

The tag that decides which of several near identical URLs is the real one. Written for somebody who has just been told theirs is wrong and wants to know what that costs.

A canonical tag is a link element naming which URL is the authoritative version of a page, so that ranking signals spread across near identical URLs consolidate onto one. It is a hint rather than a directive: search engines weigh it against your sitemap, your internal links and your redirects, and where those disagree they can choose differently.

Written as
<link rel="canonical" href="…"> in the head, or a Link HTTP header.
Strength
A signal, not an instruction. A redirect is the instruction.
Job
Consolidate duplicates onto one URL. It does not remove anything from the index.
Fails on
31 of the 88 professional sites in our own audit, the highest rate of any check we run.

What the tag actually does

Most sites serve the same page at more than one URL without meaning to. A canonical tag names one of those URLs as the real one, and asks that everything a search engine has learned about the others be credited to it instead: the links pointing at each variant, the history, the position.

The important word in that sentence is asks. Google describes canonical as one input to a decision it makes itself, alongside redirects, sitemap entries, internal linking and which variant it saw first. When those signals agree, the decision is trivial and the tag looks like an instruction. When they disagree, the tag is outvoted, and the page you meant to publish quietly loses to a variant of itself.

That is also why a wrong canonical is so hard to notice. Nothing breaks. No error appears in any interface. The page loads, the tag is present, the markup validates, and the only symptom is a page that will not rank for reasons nobody can attribute.

Where the duplicates come from, since almost nobody creates them on purpose

Before the tag is worth setting, it is worth knowing what it is being asked to resolve. Every one of these produces a second URL serving the same content, and most of them arrive from infrastructure rather than from anybody publishing twice.

Host and scheme variants

apex and www, http and https. Four combinations of one page, and the redirects usually collapse three of them, which is not the same as the canonical naming the survivor.

Tracking and campaign parameters

Every ?utm_source= link somebody shares is a URL. So is every ?ref=, ?fbclid= and session id a platform appends on the way in.

Filters, sorts and pagination

A catalogue with four filters and three sort orders can serve one set of products at dozens of addresses, all of them real pages that have to work for a visitor.

Trailing slashes and case

/pricing and /pricing/ are different URLs, and so are /Pricing/ and /pricing/ on a case sensitive server. Platforms disagree about which they generate.

Print, AMP and syndicated copies

A print view or a partner republication is the same content at a different address, sometimes on a domain you do not control.

The five ways a canonical goes wrong, in the order we find them

These are ordered by how often our audit engine reports each one, not by severity. The first is by some distance the most common thing we measure breaking anywhere.

It points at a URL that redirects

The canonical names the apex while the site serves www, or http while everything is forced to https. The instruction is now a hop, on every page, permanently. Request the canonical URL itself: it has to return 200 directly.

It is hard coded to a stale base URL

A constant in a config file that predates the move to https, or the decision about www, or the migration to a new domain. One value, wrong everywhere, and invisible in the template that emits it.

It points at the homepage from every page

A plugin default, and it tells a search engine that four hundred pages are all the same page. Traffic disappears from everything except the homepage and the cause is one field.

Every paginated page points at page one

Page two is not a duplicate of page one, it holds different items. Naming page one as canonical asks for the rest of the catalogue not to be indexed, which is usually the opposite of the intent.

It contradicts the other signals

The canonical says one URL, the sitemap lists another, the internal links use a third. A search engine resolves that itself, and the resolution is not guaranteed to be yours.

Why yours might be ignored even when it is correct

A canonical is weighed, so it can lose. Three situations account for most of it.

The pages are not actually duplicates. If the content at the two URLs differs enough, a search engine will conclude that the tag is mistaken and index both. This is the intended behaviour rather than a bug: the tag says these are the same page, and a system that can read both can tell when they are not.

The signals conflict. Sitemap entries, internal links and redirects all vote. A canonical pointing one way against three signals pointing another is a minority opinion, and Google publishes a troubleshooting guide for exactly this, including how long a re-evaluation takes after you fix it.

It arrived after the fetch. A canonical injected by JavaScript is not in the HTML that was served, and anything that does not render sees a page with no canonical at all. This is the same failure that hides structured data from fetchers, and it has the same fix.

Canonical, redirect, noindex or hreflang

Four ways to tell a search engine that two URLs are related, and they are not interchangeable. Picking the wrong one is how a page that should be indexed disappears.

UseWhat it saysBoth URLs still work for a visitor?Strength
<b>rel=canonical</b>These are the same page. Credit this one.Yes. Both stay reachable.A hint. Can be overruled by other signals.
<b>301 redirect</b>This URL has moved. Go here instead.No. The old URL stops serving content.A directive. The browser cannot argue with it.
<b>noindex</b>Do not list this page in results.Yes, but the page is removed from search.A directive, and it consolidates nothing.
<b>hreflang</b>These are the same page for different audiences.Yes. Each version serves its own audience.A hint, and it is discarded unless every version agrees.

The distinction that decides between the first two: does a visitor still need the other URL to work? A filtered view, a print page and a parameterised link all have to keep working, so they get a canonical. A page that genuinely moved gets a redirect, and which redirect is a separate question with its own answer.

Getting it right, in the order that avoids rework

Almost all of this is template work. A canonical is a property of how pages are generated rather than of any individual page, which is why fixing one page is rarely worth the afternoon.

  1. 01

    Default every page to a self referencing canonical

    Point each page at itself, absolutely, with the scheme and host you actually serve. It costs nothing, it settles parameter and case variants before they become duplicates, and it removes the ambiguity for free on pages you have not thought about yet.

  2. 02

    Generate it from the request, not from a constant

    A base URL in a config file is the single most common source of a site wide wrong canonical, because it was correct on the day it was written and no deployment since has revisited it.

  3. 03

    Request the canonical URL and confirm it returns 200

    If there is a redirect between the tag and the page, the tag is wrong rather than the redirect. This one test catches the most common failure on the list above, and the canonical checker does the request for you.

  4. 04

    Make the sitemap and the internal links agree with it

    Same host, same scheme, same trailing slash convention. Three signals saying the same thing is a decision; three signals disagreeing is a vote you might lose.

  5. 05

    Leave paginated pages canonical to themselves

    Page two is not a duplicate of page one. Point each page at itself and let the pagination links describe the sequence.

  6. 06

    Put it in the served HTML

    In the head, or as a Link: HTTP header where you cannot edit the markup. Not injected by a script after load, because the fetchers that matter most here do not run scripts.

How to check yours, and what a bad result actually costs

Fetch the page, read the rel=canonical, then fetch the URL it names. That second request is the whole test and it is the one almost nobody makes. A canonical pointing at a URL that answers 301 is the most broken thing we measure across professional sites: 31 of the 88 we could fetch in our own study had it, which is more than a third.

Our canonical checker resolves the tag against the page URL, so a relative value is judged correctly, and reports whether it points at this page or another one. It deliberately reports a canonical pointing elsewhere as information rather than as an error, because the same tag is exactly right on a duplicate and catastrophic on the original, and only you know which page you are looking at.

What it costs is easy to overstate and easy to dismiss. A canonical to a redirecting variant does not remove you from search; it spends a hop on every crawl of every page and leaves the consolidation decision to somebody else. A canonical to the wrong page does remove that page, effectively and silently. The first is a tax and the second is an outage, and they look identical in the markup.

Fix it and the recovery is not instant. The page has to be recrawled and the signals re-evaluated, which is days on an established site and can be considerably longer on a new one. There is nothing to resubmit and nothing to wait for beyond the crawl.

Questions people ask about canonical tags

What is a canonical tag?

A link element in the head of a page naming which URL is the authoritative version of that content. Its job is to consolidate ranking signals spread across near identical URLs onto one address, so that links and history pointing at variants are credited to the page you meant to publish.

Should every page have a self referencing canonical?

As a default, yes. It costs nothing, it settles parameter, case and trailing slash variants before they become duplicates, and it removes any ambiguity about which version of a URL you meant. The exceptions are genuine duplicates, which should point at the original instead.

Is a canonical tag a directive?

No, and this is the most consequential thing to know about it. Google treats it as one signal among several, weighed against redirects, sitemap entries, internal links and which variant it encountered first. Where those disagree, a search engine can and does choose a different URL from the one you named.

Canonical tag or 301 redirect?

Redirect when only one URL should ever be reachable, because the page genuinely moved. Canonicalise when both URLs have to keep working for a visitor but only one should be indexed, which covers filters, sort orders, tracking parameters and print views. A redirect removes the other URL; a canonical leaves it working.

Why is my canonical tag being ignored?

Usually one of three reasons. The pages are not similar enough for a search engine to accept that they are duplicates. Your other signals contradict the tag, so it is outvoted. Or the tag is injected by JavaScript and was not in the HTML that was fetched, so nothing that does not render ever saw it.

What happens if my canonical points at a redirect?

The instruction still resolves and it costs a redirect hop on every crawl of every page, forever. More importantly it means your stated preference disagrees with your own infrastructure, which weakens it as a signal. Request the canonical URL directly: if it does not answer 200, the canonical is wrong rather than the redirect.

Can a canonical point to another domain?

Yes, and it is the correct tag for syndicated content: a partner republishing your article can point the canonical at your original. It is also how sites accidentally give a page away, so a cross domain canonical is worth confirming was deliberate every time you find one.

Do canonical tags work on paginated pages?

Only pointed at themselves. Page two of a listing is not a duplicate of page one, it holds different items, so canonicalising the sequence to the first page asks for the rest of it not to be indexed. Let each page be its own canonical.

How long does a canonical change take to have an effect?

As long as it takes for the pages to be recrawled and the signals re-evaluated, which is days on an established site and can be weeks on a new one. Google publishes guidance on the re-evaluation timing, and there is nothing to submit to make it happen sooner beyond requesting a recrawl of the important URLs.

Find out what your canonical actually points at

The audit reads the tag on every page it crawls, resolves what it names, and tells you whether that URL answers directly or through a redirect. It is the most broken thing we measure and it takes two minutes to rule out. Free, no card.

Check what your canonical
points at right now

Free account, no card. Paste your URL and get a real, scored report of your AI and search visibility.

Measuring rankings in