rel="canonical" is routinely described as telling Google which URL to index. It does not tell Google anything. It suggests, and Google decides — weighing your suggestion against several other signals that can and do override it.
Nearly every confusing canonical situation resolves once you internalize that.
What Google weighs
When several URLs serve similar content, Google selects a canonical from the set using signals including:
- Your
rel="canonical"declaration - Redirects (a 301 is a much stronger signal than a canonical tag)
- Internal links — which URL you actually link to across your own site
- Sitemap inclusion
- External links pointing at each variant
- HTTPS over HTTP, and generally the cleaner URL
- Which version has better content, if they differ meaningfully
If your canonical tag points at URL A while every internal link and your sitemap point at URL B, you have sent conflicting signals and Google may reasonably pick B. Search Console will then report "Duplicate, Google chose different canonical than user," which is not a bug — it is Google telling you your signals disagree.
The common errors
Canonical to a page with different content. If page A canonicals to page B and their content differs substantially, Google will likely ignore it. Canonicals are for duplicates and near-duplicates, not for consolidating pages you wish were one page.
Canonical chains. A canonicals to B, B canonicals to C. Google may follow one hop; multi-hop chains often break. Point every variant directly at the final target.
Relative URLs with a broken base. A relative canonical resolves against the page URL or a <base> tag. On pages served at multiple paths, this can silently resolve differently per path. Use absolute URLs.
Canonical on paginated pages pointing to page one. Page two is not a duplicate of page one. Self-referencing canonicals on each paginated page is the current correct pattern.
Conflicting with noindex. A page that is both canonicalized to another URL and marked noindex sends contradictory instructions — the canonical says "consolidate signals into that page," the noindex says "drop this page." Behavior is unpredictable. Pick one.
Canonical injected by JavaScript. May be honored, but if the raw HTML contains a different canonical, resolution is unpredictable. Put it in the server response.
Cross-domain canonical for syndication. Legitimate and correct when a partner republishes your article: their copy canonicals to yours. Frequently omitted, which is how syndicated copies end up outranking originals.
When to use what
| Situation | Use |
|---|---|
| Same content, multiple URLs, all should stay accessible | rel="canonical" |
| Content permanently moved | 301 redirect |
| Content temporarily elsewhere | 302 redirect |
| Page must exist but should not be indexed | noindex, follow |
| Genuinely different content on both URLs | Neither — differentiate them |
| URL space you never want crawled | robots.txt disallow |
The row people get wrong most often is the first versus the second. If the old URL does not need to remain reachable, a 301 is stronger, unambiguous, and consolidates signals more reliably than a canonical tag.
Reading Search Console's verdict
The Page Indexing report tells you what Google actually chose. Three states matter:
"Duplicate, Google chose different canonical than user" — your declared canonical was overruled. Inspect the URL to see what Google picked, then look for the conflicting signal. Almost always internal links or the sitemap.
"Alternate page with proper canonical tag" — working as intended. The page is a recognized duplicate and its signals are consolidated. Not a problem to fix.
"Duplicate without user-selected canonical" — you declared nothing and Google picked. Add explicit canonicals so the choice is yours.
The check that catches most of it
For any page you care about, verify these agree:
- The canonical tag in the raw HTML response
- The URL your internal links point to
- The URL in your sitemap
- The URL that actually loads without redirecting
When all four match, canonicalization is not your problem. When they do not, the mismatch is the problem, and no amount of canonical tag adjustment fixes it while the other three disagree.
This is a ten-second check per page and it resolves the overwhelming majority of canonical confusion — because the tag was rarely the thing that was broken.