When several URLs show the same content, Google indexes one of them, the canonical, and leaves the rest out. You suggest which one with a tag in the page:
<link rel="canonical" href="https://example.com/products/blue-mug">Search Console reports duplicates under two statuses, and they mean very different things:
| Status | What happened | Usually |
|---|---|---|
| Alternative page with proper canonical tag | This URL points to another as canonical, and Google agreed | Fine: your setup works |
| Duplicate, Google chose different canonical than user | This URL points somewhere, but Google picked a different URL | Worth a look: a signal is wrong |
"Alternative page with proper canonical tag": when it's fine
This is Google confirming your canonicals work. Expect tracking URLs (?utm_source=, ?fbclid=), sorted and filtered listings, print and AMP versions, and product variants that point to the main product.
It only needs attention when the count is far bigger than your duplicates could explain, which usually means a template bug: every page canonicalised to the homepage, page 2 of every list canonicalised to page 1, or translations canonicalised to the English page. Spot-check a few example URLs; if real, unique pages are in the list, find the template or plugin setting that writes the tag.
"Google chose different canonical than user": why your hint lost
A canonical tag is a hint. Google weighs it against redirects, internal links, the sitemap, HTTPS, hreflang and the content itself, and goes with the strongest overall picture. When the tag disagrees with everything else, or points somewhere Google can't use, it gets overruled.
Worked example: a canonical that pointed at a redirect
We reproduced this on Ridgeline Supply Co., a made-up shop at ridgeline-supply.example (a domain reserved for examples). Its backpack had been renamed: the old address /products/summit-pack-40l now redirects to /products/summit-40-pack. But the product template still printed the old address as the canonical.
Here's what the page and its canonical target actually returned:
$ curl -s http://ridgeline-supply.example/products/summit-40-pack | grep -o '<link rel="canonical"[^>]*>'
<link rel="canonical" href="http://ridgeline-supply.example/products/summit-pack-40l">
$ curl -sI http://ridgeline-supply.example/products/summit-pack-40l | grep -iE "^(HTTP|location)"
HTTP/1.1 301 Moved Permanently
location: http://ridgeline-supply.example/products/summit-40-packThe page says "the main version is over there", and over there says "go back". Google can't use a canonical that redirects, so it picks the URL that actually serves the content. In URL Inspection this is the tell-tale pair of lines:

A real AHX audit of the shop caught it from the other side: the sitemap listed the product, but the product's canonical pointed elsewhere.

The same audit found a second weakness that splits signals between addresses: variants of a URL that answer instead of redirecting.

The www. host also served pages without redirecting:
$ curl -sI http://www.ridgeline-supply.example/shop | grep -iE "^(HTTP|location)"
HTTP/1.1 200 OKAHX didn't flag that one, and rightly so: every www. page still declared the main address as its canonical, which is one of the two accepted ways to handle a variant. A redirect is stronger, though, so we added one anyway.
The fix we tested: make every product canonicalise to itself, return a real 404 for addresses that don't exist (which removes the slash and capital-letter variants), and 301 the www. host to the main one. After the change:
$ curl -s http://ridgeline-supply.example/products/summit-40-pack | grep -o '<link rel="canonical"[^>]*>'
<link rel="canonical" href="http://ridgeline-supply.example/products/summit-40-pack">
$ curl -sI http://www.ridgeline-supply.example/shop | grep -iE "^(HTTP|location)"
HTTP/1.1 301 Moved Permanently
location: http://ridgeline-supply.example/shopThe next audit no longer reported the canonical in the sitemap or the duplicate addresses.
Other common reasons Google overrules you
- Internal links point to the other URL. Our shop's colour links went to
?color=greenversions while their canonical pointed to the clean URL. A canonical can survive that, but hundreds of internal links to one version outweigh one tag. Link to the canonical URL everywhere. - The sitemap lists the other version. List only canonical URLs: nothing that redirects, is noindex, or points its canonical elsewhere.
- The pages aren't really the same. A canonical between different products, translations, or page 2 and page 1 is often ignored. Use it only between pages with the same main content; use hreflang for languages.
- Near-duplicates you wanted indexed separately. Location pages that differ by one word look like one page twice. Make them genuinely different, or accept one will rank and canonicalise the rest yourself.
- Copied or syndicated content. A stronger site republishing your article can become the canonical. Ask for a canonical back to your original.
How AHX helps
As in the example, an AHX audit checks the signals on your side: canonicals that point to broken or redirecting pages, sitemap URLs that redirect, are noindex or canonicalise elsewhere, duplicate titles, and addresses (http, www, trailing slash, capitals) that answer without redirecting or declaring a canonical. With Search Console connected, it also inspects a sample of your pages and lists every one where Google chose a different main URL, with yours and Google's side by side.
Discussion
Questions, corrections or your own experience: all welcome.