The Short Answer
A canonical, or rel="canonical", is a tag that names the main address for a group of similar pages. Google treats it as a recommendation: it accepts it when other signals agree, and picks another address when they do not. So a canonical is needed where several URLs must stay available to people but search should keep one. Where the extra URL is not needed at all, the right tool is a 301 redirect.
The second half of the question, why Google ignores a canonical, almost always comes down to one thing: your site has a signal that names a different address. Below, in order, are the signals Google compares and how to find the culprit.
Where a Canonical Is Needed and Where It Hurts
A working rule: canonical is for pages that must live but must not compete. I test each situation with one question: "does a person need this URL?" If not, I set a 301; if yes, a canonical or noindex.
| Situation | What to set | Why |
|---|---|---|
| Address with UTM tags and sort parameters | canonical to the clean URL | The ad link must open, but must not be indexed |
| Product in two categories | canonical to the main path | Both pages are needed in navigation |
| Print version, PDF copy | canonical to the HTML version | The user needs it, search does not |
| Paginated pages 2, 3, 4 | canonical to itself | They hold different products and must not be merged into page one |
| Old page replaced by a new one | 301, not canonical | People no longer need the old address |
| Language: Estonian and Russian versions | self canonical + hreflang | They are not duplicates; hreflang links them |
| Cart, user account | noindex, not canonical | The content differs, but search does not need it |
The kinds of duplicates and how to find them I covered on 20 August 2026 in the article on duplicate content; here it is only the canonical mechanism.
How Google Chooses the Canonical URL
Google says in its Search Central documentation that the canonical is chosen from a set of signals with different weights. Strong signals are a redirect and rel="canonical"; a weak one is the address being included in a sitemap. For internal links and HTTPS the documentation is more cautious: they count too, but the weight is not stated, and I do not invent numbers. I call this "voting": if all the votes go to one address, there is nothing to argue about; if the votes split, the winner is not necessarily the one you voted for.
In practice conflicts appear in three places:
- The sitemap and the canonical disagree. The sitemap holds an address with a trailing slash, and the canonical points to the one without. The rule is simple: only URLs you have named canonical belong in the sitemap. How to build the file is in my article on sitemap.xml and robots.txt.
- Internal links point to a non-canonical variant. The menu links to
/catalog/lamp?sort=pricewhile the canonical points to/catalog/lamp. The crawler sees hundreds of links to one address and one to the other, and leans toward the first. - The canonical points to a page that redirects, is blocked with noindex or returns 404. Google may drop such a tag: it cannot treat as main an address that is not in the index. Redirects turn into chains just as quietly; how to find them is in the material on redirect chains.
A fourth cause is rarer but trickier: the page content genuinely differs. Google Search Central describes canonical as a signal, not a directive, so Google does not merge pages that clearly do not match, even if you ask with a tag. If you have two "almost identical" descriptions with different spec tables, it is entitled to ignore the canonical between them, and that is not an error.
What a Check on My Own Site Shows
I checked how this looks on my site: on 19 October 2026 I opened the article on duplicate pages on adlab.ee and added ?utm_source=test to the address. The server answered 200, and both variants returned the same tag in <head>:
<link rel="canonical" href="https://adlab.ee/blog/dubli-stranic-kak-nayti-i-ispravit"/>
So the page with the tag is not merged by a redirect; it opens, and the canonical tells the crawler the main address. The Estonian and English versions of the same article returned a canonical to themselves. An address with a trailing slash is redirected by the server with a 308 to the version without it. The strengths and weaknesses of the approach are visible here: a template canonical covers the whole mass of tagged addresses at once, but it does not cure the internal links themselves, and I check those separately. The sample is, of course, one page in three languages, not the whole site.
How to Check That Google Accepted Your Canonical
Three steps I take when I suspect a conflict.
- The URL Inspection tool in Search Console. Enter the address: the indexing block shows "User-declared canonical" and "Google-selected canonical". If they match, all is well. If they differ, you have found a page with a conflict.
- The Page Indexing report. The status "Duplicate, Google chose different canonical than user" collects such pages in a list. The status "Duplicate without user-selected canonical" says the opposite: there is no tag at all. For the other statuses and the reasons pages fail to enter the index, see the article on why Google is not indexing your pages.
- The page source. Open the code and search for the word
canonical. There must be one tag, inside<head>(Google does not count it in the body), with an absolute address including the protocol. For non-HTML files such as PDFs, the canonical is sent as an HTTP header:Link: <https://…>; rel="canonical".
If the mismatch is confirmed, go through four items: sitemap, internal links, redirects, noindex on the target page. In my observation one of them is almost always to blame, not Google's algorithm.
Who Should Not Use Canonical
- Anyone who wants a page out of search. Canonical does not remove a page from the index or forbid crawling: the crawler keeps visiting, only less often. Removal needs noindex or a 404/410.
- Anyone treating pagination with it. A canonical from pages 2, 3, 4 to the first hides from the crawler products that exist only there. How to set up a catalogue correctly is in my article on pagination in a catalogue.
- Anyone with hundreds of filters. A canonical to the root category for every filter combination does not scale: Google accepts it selectively. On choosing which combinations to index, see the material on faceted navigation.
- Multilingual sites that point the canonical at one version. An Estonian page whose canonical points to the Russian one drops out of Estonian results. Languages are linked with hreflang.
Checklist: What to Do in One Evening
- Open the Page Indexing report in Search Console and list the pages with the status "Duplicate, Google chose different canonical than user".
- For three to five of them, compare the declared and selected address in the URL Inspection tool.
- Check that the sitemap contains only canonical addresses, uniformly with or without a trailing slash.
- Find internal links to non-canonical variants in the menu and in text and replace them with canonical ones.
- Make sure canonical target pages return 200 and are not blocked with noindex.
- Check that the tag on the page is single, sits in
<head>and is absolute. - Wait a few weeks: Google revisits canonical decisions on the next crawl, so there is no instant effect.
