"Duplicate without user-selected canonical" in Search Console
Google found several URLs with the same content, you did not say which one counts, so it picked for you. Here is how to take the decision back.
This URL is not indexed and it should be. Something is in the way.
Is it still happening?
Paste the URL Search Console flagged. We read the canonical from the HTML and the response headers, resolve it, and tell you whether this URL now declares a preference at all.
Whether a canonical is declared on this URL right now, where it resolves to, and whether that target is a page Google can index.
We cannot see which URL Google picked instead, or judge whether two pages are similar enough to be treated as duplicates. URL Inspection names the Google-selected canonical, and that is the fastest way to see what it chose.
What this error actually means.
Google found this URL to be a duplicate of another page on your site, found no canonical tag telling it which version to prefer, and chose one itself. This URL is not the one it chose.
The choice is not random, but it is not yours either. Google weighs internal links, sitemap entries, redirects, URL structure, and which version it saw first. The winner is often a parameter variant, a non-www address, or whichever URL happened to be linked most.
The fix is cheap and the consequence of not fixing it is not. Until you declare a preference, ranking signals split across the duplicates and the URL that ends up indexed can change without warning.
5 things that produce this error.
Ordered by how often they turn out to be the cause, not by how obvious they look.
No canonical tag anywhere on the site
The most common reason, and it is a template gap rather than a mistake on this page. Nothing in the layout emits a canonical, so every URL variant the site can produce competes on equal terms.
Parameters generating endless addresses for one page
Filters, sort orders, pagination tokens, session ids, and tracking tags each create a distinct URL serving the same content. A category page with four filters can produce hundreds of duplicate addresses without a single duplicate page being written.
/shoes
/shoes?page=1
/shoes?sort=newest
/shoes?color=black&sort=newest&utm_source=adsThe same content reachable through several paths
A product in two categories, an article under both a date-based and a slug-based URL, or a page served at both /about and /about/index.html. Each route is a separate URL to Google even though the content is identical.
Protocol and host variants left unconsolidated
http and https, www and non-www, and on some hosts an uppercase and lowercase path. Without a redirect or a canonical, these are four or more addresses for every page on the site.
Near-duplicate pages that differ only in a name
Location pages, or product variants, generated from one template with a single word swapped. Google treats them as duplicates because they effectively are, and no canonical was offered to say which should win.
How to clear it.
Add a self-referencing canonical to every indexable page
This is the whole fix for most sites, and it belongs in the layout rather than on individual pages. It costs nothing on a page with no duplicates and settles the question wherever duplicates appear later.
<!-- On https://example.com/shoes, rendered from the layout -->
<link rel="canonical" href="https://example.com/shoes" />Point genuine duplicates at the version you want ranking
Parameter variants, alternate paths, and print views should each carry a canonical naming the clean URL. Use absolute URLs including the protocol and host, never a relative path.
Consolidate host and protocol variants with redirects
Pick one form, enforce it with a 301 in exactly one layer of your stack, and let everything else pass through. A canonical alone leaves the duplicate reachable; a redirect removes it. Doing this in two layers at once is how redirect loops start, so pick one.
Make your other signals agree with the tag
List only canonical URLs in your sitemap, and link internally to the canonical version rather than to a parameterised copy. A canonical is a hint, and it is weighed against everything else you tell Google. Contradicting it is how you end up in the "Google chose a different canonical" row instead of this one.
Next to check.
LintPage rules covering this: canonical-url, canonical-self-referencing, duplicate-meta, title-uniqueness
Questions, answered.
Which URL does Google pick when there is no canonical?
Does duplicate content carry a penalty?
Should I block duplicate URLs in robots.txt instead?
Do tracking parameters really create duplicates?
How long until Search Console updates after I add canonicals?
Catch this one before Search Console does.
Search Console tells you weeks after the fact. LintPage runs 60 checks against a URL in about 30 seconds. Free, no signup.
run a full scan →