A canonical tag is a hint, not a command
Search Console shows a canonical you did not tag? The tag worked. Google read it and picked another URL. How to read that verdict, and what changes it.
Your page says the canonical is /shoes. Search Console says it is
/shoes?color=red. The usual reading is that something broke: the tag did not
fire, a plugin overwrote it, Google is not seeing it.
It fired. Google saw it. Google disagreed.
You can indicate your preference to Google using these techniques, but Google may choose a different page as canonical than you do, for various reasons. That is, indicating a canonical preference is a hint, not a rule.
That sentence is in Google's own documentation, on What is canonicalization. Search Console repeats it in the field that reports your tag: “There is no guarantee that Google will choose your preferred canonical, but we will take this into consideration.”
A hint Google is allowed to ignore is not a broken switch.
First, read the verdict
Open URL Inspection on the URL and look at the indexed version, not the live test. Two fields:
| Field | What it is |
|---|---|
| User-declared canonical | The URL your page asked for |
| Google-selected canonical | The URL Google kept |
If they differ, Google overrode you, and that is the fact to work from. The live test cannot tell you which one will win: the choice is made when Google indexes the page, not when it fetches it. Reloading the HTML and staring at the tag is answering a question nobody asked.
Why Google overrides you
Google groups pages whose main content looks the same, then picks one URL to represent the group. Its own wording for the pick: the page that, based on the signals collected while indexing, is “objectively the most complete and useful for search users”.
Your tag is one of those signals. It is not the decision.
The URL that wins gets crawled more often than the rest, and becomes “the main source to evaluate content and quality”. Search results usually point at it, unless a duplicate fits the searcher better, such as a mobile URL on a phone.
So the tag does not mean “this is the URL I want indexed”. Google already decided there is one piece of content here. The tag only argues about which URL carries it.
The status that names the override
Search Console has a string for exactly this: “Duplicate, Google chose different canonical than user.” The page indexing report explains it as: you marked this page as canonical for a set of pages, Google thinks another URL is the better canonical, and Google indexed that one instead.
The neighbouring status, “Duplicate without user-selected canonical”, is the same grouping with no tag from you at all. Google’s note on it is that this is working as intended, because it does not serve duplicate pages.
Neither status is an implementation failure. Both are the documented outcome.
Three ways to state a preference, weakest last
If you do want to argue, Google ranks the methods by how much they influence the choice:
| Method | How Google describes it |
|---|---|
| Redirect | A strong signal that the target should become canonical |
rel="canonical" |
A strong signal that the specified URL should become canonical |
| Sitemap entry | A weak signal |
Point them at the same URL. A sitemap naming one URL, a tag naming another and a redirect naming a third is three answers to one question, and the same document asks you not to do that.
None of them is required. Google’s wording: your site will likely do just fine without specifying a canonical preference, because Google will identify the best version on its own.
Two signals that beat your tag
Both sit outside that list and both are common:
- HTTPS wins over HTTP. Unless the HTTPS page has an invalid certificate, insecure dependencies, a redirect through HTTP, or a canonical pointing back at HTTP.
- A page inside a reciprocal
hreflangcluster wins over the same content outside one.
A self-referencing canonical on the HTTP URL, or on a language version left out of the cluster, argues against the URL Google was already inclined to keep.
Four things that do not work
Google lists these as prohibitions, and each is a common attempt to force the choice:
- robots.txt. Google can still index a blocked URL, without its content. That is the opposite of picking a representative.
- The URL removal tool. It hides every version, including the one you wanted kept.
noindex. It drops the page from Search entirely instead of pointing Google at your preferred version.- Rewriting the canonical in JavaScript. Canonicalization happens before and after rendering, so a page that prints one canonical in the HTML and swaps it in the browser hands Google two different answers at the two moments it looks. The JavaScript SEO guide says not to. Set it in the HTML and leave it, or leave it out of the HTML and set it only in JavaScript.
What actually changes the outcome
If Google’s pick is a worse landing URL — tracking parameters, a session id, the HTTP version, a pagination state — the argument is worth making, and the strongest form is a redirect, not a tag.
If the two URLs are two real articles that overlap, a tag is the wrong tool. Google’s troubleshooting guide is blunt about what splits a group: pages generally split faster when the difference in content is clear and significant. The page indexing report says the same from the other side: make the content “substantially different” between the two pages. A duplicate, it adds, has to resemble the canonical. That is what duplicate means.
Then wait. Google may hold pages in a duplicate group for up to two weeks after the content is fixed. You can request indexing on the important URLs; it is quota-limited and it does not skip the grouping.
If Google’s pick is a reasonable page for a searcher to land on, do nothing.
This is the same family of mistake as reading a crawl as an index: fetching a page and keeping it are different events, and being crawled is not being indexed. Canonicalization is the decision, inside that second event, about which URL gets kept. A tag cannot stand in for a difference in the content.
The short version
Inspect the indexed URL, read the Google-selected canonical, and judge that URL on its own merits. If it is a fine page to land on, the tag did not fail and there is nothing to fix. If it is not, redirect, or make the pages genuinely different. Adding another canonical tag to a group that already disagrees with you is sending the same hint twice.
Frequently asked questions
Why does Search Console show a different canonical than my tag?
Because the tag is a hint. Google’s documentation says it may choose a different page than you do, and URL Inspection says there is no guarantee it will honour the URL you declared. The status “Duplicate, Google chose different canonical than user” is that outcome, named.
Should I add a self-referencing canonical to every page?
Google lists it as a best practice, not a requirement. It will pick a canonical without one. On a unique page the tag is harmless. On a page that is substantially the same as another, it is a signal Google can still ignore.
Can I use robots.txt or noindex instead of a canonical?
Not for this. robots.txt can leave the URL indexed without its content, and
noindex removes the page from Search rather than pointing Google at the version
you prefer. Google’s best practices say not to use either for the job.
How long does it take after I change a canonical?
There is no published time for the tag itself. Once you have made the content different enough to split a group, Google says it may still hold the pages together for up to two weeks. And you will not see the result in a live test: only the indexed version reports the Google-selected canonical.
Does a sitemap set the canonical?
It is a weak signal. Sitemap URLs are suggested as canonicals; Google still
decides which pages are duplicates based on how similar the content is. A sitemap
entry that contradicts the rel="canonical" on the same page is a conflicting
answer, and Google asks you not to send one.
Sources
- What is canonicalization, “a hint, not a rule”; how grouping and selection work; the canonical as the main source for quality evaluation
- How to specify a canonical URL, signal strength, the methods being optional, the HTTPS and
hreflangpreferences, and what not to use instead - Fix canonicalization issues, why Google picks a different canonical, and the two weeks a re-evaluation can take
- Page indexing report, the two duplicate statuses
- URL Inspection tool, user-declared versus Google-selected canonical, and why the live test cannot predict it
- JavaScript SEO basics, do not change the canonical in JavaScript
- Latest documentation updates, 17 December 2025 and 10 July 2026