What can a canonical tag actually do?
It can tell Google which URL you would prefer, and that is genuinely all. Google's own documentation calls a canonical preference a hint rather than a rule, and says Google may choose a different page as canonical than you do. A great deal of SEO advice is written as though the opposite were true.
That distinction matters because it changes what you should do when something goes wrong. If the tag were a directive, a wrong canonical would be a bug in your markup. Since it is a hint, a wrong canonical is usually a disagreement about which page is the real one.
Here is what the documentation actually says, and how I work through it when a client's pages are not being indexed the way they expected.
What is canonicalization, in Google's own words?
Google defines it as the process of selecting the representative canonical URL of a piece of content, and defines a canonical URL as the URL of a page that Google chose as the most representative from a set of duplicate pages. Note the verb in that second definition. Google chose.
That framing puts your tag in its proper place. You are one input into a selection process that runs whether or not you participate. The tag is your submission, not the decision.
Once you read it that way, most of the confusion around canonical tags disappears. You are not configuring behaviour, you are making a case, and cases can be lost.
Why does your site have duplicate URLs at all?
Because most sites generate them without anyone deciding to. Google's documentation lists five causes: region variants such as separate URLs for the USA and the UK, device variants such as mobile and desktop versions, protocol variants meaning HTTP and HTTPS, site functions such as sorting and filtering results, and accidental variants such as a demo site left accessible.
The site functions one is where content sites get caught. Every filter, every sort order, and every tag combination can produce a distinct URL serving substantially the same content, and a CMS will happily generate thousands of them.
The accidental variants cause is the one I find most often on real projects. A staging copy that was never locked down, a development subdomain that got indexed, or an old preview URL that still resolves. None of those are canonical problems exactly, but they are all duplicate problems, and a tag is the wrong tool for them.
Is rel=canonical a rule or a hint?
A hint, and Google says so in those words. The documentation states that indicating a canonical preference is a hint, not a rule, while also describing rel canonical as a strong signal that the specified URL should become canonical. Strong, but still a signal.
Both halves of that matter. The tag is not decorative, and you should still set it deliberately on every page type. It is also not a guarantee, and you should not build a process that assumes compliance.
In practice I treat it like any other declaration to a system I do not control. State your intent clearly, then verify the outcome rather than assuming it. That is the same posture I would take toward a redirect, which I wrote about in what a 301 actually tells a search engine.
What happens if you specify nothing?
The selection still happens. Google's documentation says that if you do not specify a canonical URL, Google will identify which version of the URL is objectively the best version to show to users in Search. Declining to express a preference is not neutral, it is delegating.
For a small site with no duplicates that is often fine. For a CMS driven site with filters, tags, and paginated archives, it means the most representative URL for a piece of content gets picked by a process you have not informed.
So the argument for setting canonicals is not that they force an outcome. It is that leaving them unset removes your only input into a decision that will be made regardless.
Which other signals feed the decision?
More than the tag, and two are named in the documentation directly. Google states a preference for HTTPS over HTTP, and takes account of URLs appearing in hreflang clusters. Your declared canonical sits alongside those rather than above them, competing for the same decision.
This is why a canonical tag pointing at an HTTP URL on an HTTPS site is a contradiction rather than an instruction. You have told Google two different things, and the documented preference is not the one your tag expressed.
The lesson generalises. When your signals disagree, the tag does not automatically win, so the real work is making every signal point the same way. Internal links, the sitemap, the redirects, and the tag should all name the same URL.
Why does Google sometimes pick a different URL than you did?
The documentation says it may do so for various reasons and does not enumerate them, so anyone who gives you a definitive list is going beyond the source. What follows is my own diagnostic order rather than Google guidance, and I run it in this sequence because it moves from cheapest to slowest.
I check four things. Whether the canonical target actually returns a successful response. Whether internal links point at the URL you declared or at the variant. Whether the sitemap lists the same URL as the tag. And whether the two pages are genuinely the same content, because a canonical between meaningfully different pages is a claim that will not survive inspection.
In my experience the second one is the culprit far more often than the tag itself. A site that declares one URL and links internally to another has given conflicting evidence, and it is not surprising that the evidence wins over the declaration.
When should you use a redirect instead?
When there is genuinely only one page and you want everyone sent to it. A canonical tag leaves both URLs reachable by humans, which is correct for a filtered view of a collection and wrong for a page you have replaced.
The decision is about visitors as much as crawlers. If a person landing on the old URL should see the old URL, use a canonical. If they should end up somewhere else, redirect them, because a canonical will not move anybody.
On a large CMS site you will usually need both, applied to different problems. The Webflow specific mechanics of setting the tag are a separate question, and I covered them in canonical tags and duplicate content in Webflow.
What does this mean for your rankings?
Neither of the pages I am quoting says anything about canonicalization and ranking, so I am not going to tell you it helps or hurts. What I will say is that it affects which URL gets shown, and that is a real outcome without needing to be a ranking story.
That matters because a canonical problem often presents as a traffic problem. A page that looks like it stopped performing may simply have had its impressions attributed to a variant URL you were not watching.
Which is why I check the canonical before I look at anything else when reporting disagrees with itself. The same class of problem sits behind a mismatch between what you submitted and what got indexed, which I went through in why your sitemap and your index coverage disagree.
What should you do next?
Pick one template on your site and check three things against each other: the canonical tag it outputs, the URL in your sitemap, and the URL your internal links use. On most sites those three will not all match, and fixing that costs nothing.
Then look for the accidental variants. A staging subdomain, a preview URL, or an old domain still resolving is a duplicate problem that no tag will solve, and it is a five minute check.
After more than 350 published articles on a single site, the canonical issues I have had were never exotic. They were always two parts of my own setup disagreeing. If your pages are being indexed as something other than what you declared, reach out and let's chat about where the signals are crossing.
Get found, cited and the back office automated
Let's make your site the source AI engines quote and wire up the systems behind it.
Read more blogs
Let's get your website found and cited by AI
Tell me what you're working on, whether AI search is skipping your product, your back office is buried in manual work, or you need a build that does both.