Duplicate Without User-Selected Canonical: How to Fix It
Duplicate without user-selected canonical: why Google filed a URL as a copy, when to leave it, and how to fix the host, slash, case and parameter causes.
"Duplicate without user-selected canonical" means Google decided a URL is a copy of another page, found no canonical declared on it, and chose the version to show in Search by itself. When the flagged URL is a variant nobody should land on, such as a tracking-parameter or HTTP copy, and Google chose your preferred page, this is the intended outcome and needs no action. It needs a fix when Google chose a URL you do not want in results, or when the flagged URL is the page you meant to rank.
What Google says this status means
The status sits in the Page Indexing report under "Why pages aren't indexed". Google's Page Indexing report documentation (checked October 2026) says the page "is a duplicate of another page, although it doesn't indicate a preferred canonical page." The same entry says Google will not serve the flagged URL in Search, describes this as working as intended rather than an error, and gives 2 remedies: mark the canonical explicitly if Google chose the wrong URL, or make the content differ substantially if the page is not really a duplicate.
"Duplicate" is Google's judgment after it groups similar pages into a cluster. "Without user-selected canonical" means the flagged URL gave Google no canonical it could read, which separates this status from its 2 neighbours:
| "Duplicate without user-selected canonical" | No readable canonical | Picked another URL itself |
| "Alternate page with proper canonical tag" | A canonical pointing to another page | Agreed and indexed that page |
| "Duplicate, Google chose different canonical than user" | A canonical, usually itself | Chose a different URL anyway |
Google's canonicalization documentation adds that a declared canonical is "a hint, not a rule": Google still weighs redirects, sitemap entries and HTTPS before it decides.
Where the duplicate URLs come from
Almost every flagged URL is one page reachable at more than one address. Google's URL structure documentation states that its URL handling is case sensitive, and a Google Search Central blog post on trailing slashes (April 2010) says Google treats /shoes and /shoes/ as 2 separate URLs (the site root is the exception). Each difference below creates a new URL for the same content.
- No canonical on the preferred page. When your page declares no canonical, none of its variants carry one either, so every copy Google finds lands here. WordPress core, for example, prints a canonical tag only on single posts and pages; archive, category, tag and blog-home views get none unless a theme or plugin adds one.
- Protocol and host variants.
http://andhttps://, orwwwand the bare domain, all answering with status 200 instead of redirecting to one address. - Trailing slash and letter case.
/shoes,/shoes/and/Shoes/serving the same page. - Parameters and alternate views. Tracking tags such as
?utm_source=, sort and filter options, session IDs, and print or grid views of the same content. - Accidental copies. A demo version of the site left open to crawlers, which Google's documentation names as a cause, a staging host, or an old domain still serving the same pages.
- A canonical Google cannot read. Google accepts
rel="canonical"only in the<head>, and its page metadata documentation says an invalid element there, such as aniframeorimg, makes Google assume the head has ended and ignore what follows. A canonical placed after one is effectively missing. - Pages you consider distinct. Product colours with identical descriptions, or location pages that share every sentence except the city name.
In 45 external websites SEOReport audited between May and October 2026, 14 (31%) served a homepage with no canonical tag in the HTML the server returned, and 1 served more than one. In the same sample, 2 of 45 (4%) did not redirect HTTP to HTTPS.
Is it a problem? Fix, leave or monitor
The verdict rests on which URL Google selected and whether you want the flagged URL in Search.
| The flagged URL is a variant (parameter, HTTP, uppercase) and Google selected your preferred page | Leave. Google is filtering the copy as designed. Tidy the pattern with a canonical or redirect if it is large. |
| The flagged URL is your preferred page and Google selected a variant | Fix. Your own signals point Google at the wrong address. |
| Google selected a staging host, an old domain or a copy on another site | Fix first. Searchers see a URL you do not intend. |
| The flagged URLs are pages you consider different | Fix by making the content differ substantially. |
| The count grows each week from one URL pattern | Monitor and find the source of the links before it multiplies. |
Diagram source
flowchart TD
A["URL flagged: Duplicate without user-selected canonical"] --> B["URL Inspection: read the Google-selected canonical"]
B --> C{"Is Google's choice the URL you want in Search?"}
C -->|yes| D{"Do your links or sitemap point to the flagged URL?"}
D -->|no| E["Leave it: the copy is filtered as intended"]
D -->|yes| F["Point links and sitemap at the preferred URL"]
C -->|no| G{"Is the content truly the same?"}
G -->|no| H["Make the pages differ substantially"]
G -->|yes| I["Declare the preferred URL: canonical, redirects, links, sitemap"]
F --> J["Test live URL, then Validate fix"]
H --> J
I --> JHow to confirm which cause applies
- Group the examples by pattern. The example table shows at most 1,000 rows and may not list every affected URL, so look for patterns (all
http://, all?utm_, all uppercase) rather than counting. - Inspect a flagged URL. In URL Inspection, compare "User-declared canonical" with "Google-selected canonical". For this status the indexed result usually shows "None" as the user-declared canonical. If "Test live URL" now shows a canonical there, it was added after Google's last crawl of that URL.
- Compare the 2 URLs character by character. Protocol, host, letter case, trailing slash and parameters. The difference names the cause.
- Find where Google met the variant. In the inspection result, "Referring page" shows a page Google possibly used to discover the URL, and "Sitemaps" lists any sitemap that names it.
- Fetch the variants as a crawler would. A browser hides redirects; the raw response does not.
# Status code and redirect target for each variant of one pagefor u in http://example.com/shoes/ https://example.com/shoes/ \https://www.example.com/shoes https://www.example.com/Shoes/ \"https://www.example.com/shoes/?utm_source=newsletter"; docurl -s -o /dev/null -w "%{http_code} -> %{redirect_url} $u\n" "$u"done# The canonical tag in the HTML the server returns, before any JavaScript runscurl -s https://www.example.com/shoes/ | grep -io '<link[^>]*canonical[^>]*>'
Every variant should answer 301 to the preferred URL, or 200 with a canonical naming it. A variant that answers 200 with no canonical can keep landing in this status.
How to fix each cause
Missing canonical. Give every indexable page a self-referencing canonical with an absolute URL, early in the <head> of the HTML the server sends. Google's documentation recommends both the self-referencing form and absolute URLs.
<head><meta charset="utf-8"><link rel="canonical" href="https://www.example.com/shoes/"><title>Trail running shoes</title></head>
Build the canonical from the page's own preferred address, never from the requested URL. A template that echoes the request turns /shoes/?utm_source=newsletter into its own canonical, and the variants can move to "Duplicate, Google chose different canonical than user" instead of consolidating.
Protocol and host variants. Redirect every variant with one 301 that keeps the path and query string. On nginx the HTTP side looks like this; give the HTTPS bare-domain server block the same return line.
server {listen 80;server_name example.com www.example.com;return 301 https://www.example.com$request_uri;}
Google prefers HTTPS pages as canonical unless something conflicts, such as an invalid certificate or a redirect from HTTPS back to HTTP. Send each variant to the final address in one hop; our redirect chains guide shows how protocol, host and slash rules stack into chains when each is added separately.
Trailing slash and letter case. Choose one style, 301 the other to it, and make the CMS generate links in that style. Google's URL guidance recommends a single letter case.
Parameters and alternate views. A correct self-referencing canonical on the clean URL covers tracking parameters, because every tagged copy then names the clean page. Stop linking internally to parameter URLs, move session IDs into cookies, and give print and alternate views a canonical to the main page. Do not use robots.txt to hide duplicates: Google says a blocked URL can still be indexed without its content, and Google cannot read the canonical on a page it may not fetch. Google also advises against noindex for choosing a canonical within a site, and the URL removal tool hides every version of a URL.
Accidental copies. Put staging hosts behind a login; redirect old domains page by page.
Pages that are not duplicates. Give each page content the others lack: specifications, availability, local details. Google's troubleshooting documentation notes that pages can stay in a duplicate cluster for up to 2 weeks after the change.
Align every signal. List only preferred URLs in your XML sitemap, and link internally to the same URL your canonical names. Google warns against naming one URL in a sitemap and a different one in rel="canonical". Our analysis of sitemaps that disagree with their pages and the canonical tags guide cover the other conflicts.
How to verify the fix
- Run "Test live URL" on a flagged URL and its preferred page. The live test shows the user-declared canonical; per Google, it cannot predict which URL Google will select.
- Use "Request indexing" on a few important preferred pages; there is a daily limit.
- Click "Validate fix" on the status once every instance of the pattern is fixed. Google's documentation says validation typically takes up to about 2 weeks and sometimes much longer, and it stops if Google finds a remaining instance.
- Expect the URLs to move rather than vanish. Variants that now redirect are reported as "Page with redirect"; variants with a canonical that Google accepts usually appear under "Alternate page with proper canonical tag". Both are normal states for a copy.
- After a few weeks, inspect your preferred pages again and confirm the "Google-selected canonical" matches the URL you declared.
Search Console tells you which URLs Google filed as copies, not which site-wide setting keeps producing them. A full SEOReport diagnosis checks those site-wide sources from the outside: www and the bare domain both serving the site, HTTP that does not redirect to HTTPS, mixed trailing-slash style across sitemap, canonical and hreflang URLs, and a homepage with no canonical or more than one. It also names near-duplicate articles. Parameter copies and interior pages without a canonical still need URL Inspection and the checks above. Checking every template's variants is site-wide work, which is why one AI chat session rarely gets through it.
Common questions
Does this status hurt my rankings?
Google calls it working as intended, and some duplicate content is normal. The cost appears when Google selects a URL you do not want in results, or when crawling time goes to copies. Google notes that the canonical page is crawled most regularly and duplicates less often.
Why does the report list URLs my site never links to?
Google discovers URLs from external links, tagged campaigns, old sitemaps and earlier versions of your site. A correct canonical on the clean URL handles these copies wherever they came from.
Should the duplicate URLs disappear from Search Console after the fix?
Usually they stay listed under a different status, as the verification steps describe. A URL that is not indexed matters only when you want it in Search, the same test that applies to Crawled – Currently Not Indexed.
What is this status called in other Search Console languages?
Google's localized help pages (checked October 2026) give "Duplikat – vom Nutzer nicht als kanonisch festgelegt" in German, "Duplicada: el usuario no ha indicado ninguna versión canónica" in Spanish, and "Page en double sans URL canonique sélectionnée par l'utilisateur" in French. The meaning and the fixes are identical in every language.
Get the complete diagnosis of your site
An evidence-backed report and a prioritized action plan, on a plan with monthly credits.