"Duplicate, Google chose different canonical than user": what it means and what to do
Your canonical tag is a request, not an order. When Google overrules it, it's usually because your other signals disagree with it.
"Duplicate, Google chose different canonical than user" is a Search Console status. In plain words: Google found two or more addresses that show the same page, put them in one group, and picked one address to keep in its results. Your page told Google which address it wanted kept. Google picked a different one.
On 8 October I checked 77 pages from 22 online shops: home pages, products, collections and help pages. For each one I fetched the page with curl and read its canonical tag. Then I asked for the same page at other addresses: http://, with or without www., with or without the final slash, and with ?utm_source=test on the end. All 77 answered the ?utm_source=test address with the full page, not a redirect. That's normal, since ad and newsletter links add bits like that. It also means the canonical tag is the only thing telling Google which address is the main one. 5 of the 77 pages, at 4 shops, had no canonical tag at all, even after their JavaScript ran in Chrome.
The other mistakes were rarer, and they're the kind this status is made of. A restaurant menu page pointed its canonical tag at the home page, which is a different page. On one shop, two pages answered both with and without the final slash, and each version named itself as the main copy: two addresses, each claiming to be the original. The http:// address redirected on all 77. I can't see these shops' Search Console, so I don't know which of these Google overruled. The steps below show how to check your own.
The address in the report is not in Google's index. The one Google chose is. Often that's fine, because the two addresses really are the same page and people still find it. Sometimes Google picked the wrong page, or an address you don't want people to see. This guide shows how to tell which case you're in and what to change.
The words, translated
- Canonical means "the main copy". When the same content is reachable at several addresses, Google indexes one and treats the rest as duplicates. Google's own definition: the canonical URL is "the URL of a page that Google chose as the most representative from a set of duplicate pages."
- User is you, the site owner. "User-declared canonical" is the address your page says is the main copy, usually through a line in its code:
<link rel="canonical" href="...">. Most site builders add that line for you. - Google chose different means Google read your line and decided otherwise. It's allowed to. Google's page on canonicals says your preference "is a hint, not a rule."
Search Console has three neighbours of this status, and they're easy to mix up. Alternate page with proper canonical tag: this address points to another one, and Google agreed. Duplicate without user-selected canonical: this address points nowhere, and Google picked a main copy itself. Duplicate, submitted URL not selected as canonical: an address you listed in your sitemap is a duplicate, and Google kept another one. The first is almost always fine. This guide is about the one where Google disagreed with you.
Step 1: see what Google picked
- Open Search Console, then Indexing → Pages. Under Why pages aren't indexed, click Duplicate, Google chose different canonical than user. You get a list of example addresses.
- Hover over one and click the magnifier, or paste the address into the search bar at the top of Search Console. That's URL Inspection.
- Open Page indexing and read two lines: User-declared canonical (what your page asked for) and Google-selected canonical (what Google kept).
Don't click Test live URL for this. Google's help says the live test can't tell you the canonical: "the live test cannot predict whether or not the tested version will be considered canonical." Read the indexed result.
If the Google-selected address is on a site you don't own, Search Console may not show it. Google's help says the tool shows the canonical "if the canonical version is in a property that you own." Search for a sentence from your page in quotes on Google and see whose address comes up.
Step 2: decide whether Google is right
Put the two addresses side by side and ask one question: are these the same page to a visitor?
Usually yes, and Google picked a variant of your address. These are the common ones:
http://andhttps://- with and without
www. - with and without a slash at the end
- with tracking or filter bits after a
?, like?ref=ador?sort=price - a product reachable from two categories, like
/men/shoes/runnerand/sale/runner
In that case Google's choice is often the one people already reach and link to. If you don't mind which address shows in search, leave it. If you do mind, go to Step 3.
Sometimes no, and the cause is on your side. Google's page on fixing canonical problems lists the common causes. In plain words:
- A plugin or theme writes the wrong canonical tag. For example, every product page points to the shop's home page, or every blog page points to page 1 of the blog. Google sees the pages aren't the same, so it ignores the tag. That's when you see this status on dozens of pages at once.
- Two sites serve the same pages. An old domain, a test copy of the site, or a host that answers for a domain it shouldn't. Google calls the test copy an "accidental variant".
- Pages that are almost the same. City pages with the town name swapped, or product pages that differ only by colour. Google clusters pages whose main content looks the same.
- Language versions where only the menu and footer are translated. Google says those count as duplicates.
- Someone copied your content, or a partner republished it. Google says it picks the copy "in rare situations".
- A hacked site. Some attacks add a canonical tag or a redirect pointing to a spam site.
Step 3: count your own addresses
Before you change anything, check how many addresses your page answers at. I ran this on one of my own posts. Five ways to type the same page:
for u in \
http://taktekbot.com/blog/find-and-remove-old-pages-from-google/ \
https://www.taktekbot.com/blog/find-and-remove-old-pages-from-google/ \
https://taktekbot.com/blog/find-and-remove-old-pages-from-google \
"https://taktekbot.com/blog/find-and-remove-old-pages-from-google/?utm_source=test" \
https://taktekbot.com/blog/find-and-remove-old-pages-from-google/index.html
do
curl -s -o /dev/null -w "%{http_code} %{redirect_url} <- $u\n" "$u"
done
What came back, trimmed:
301 https://taktekbot.com/blog/find-...-google/ <- http://
301 https://taktekbot.com/blog/find-...-google/ <- www.
301 https://taktekbot.com/blog/find-...-google/ <- no slash
200 <- ?utm_source=test
200 <- /index.html
Three variants redirect to the main address. Two still answer with the full page. For those two, the only thing telling Google which address is the main one is the canonical tag, which on this page points to the address with the slash. No page of mine has had this status yet. If one does, those two are where I'd look first.
On Windows, the same check in PowerShell. Put your own five addresses in the list; curl.exe comes with Windows 10 and 11:
$urls = "http://example.com/shoes/",
"https://www.example.com/shoes/",
"https://example.com/shoes",
"https://example.com/shoes/?utm_source=test",
"https://example.com/shoes/index.html"
foreach ($u in $urls) {
curl.exe -s -o NUL -w "%{http_code} %{redirect_url} <- $u\n" $u
}
No terminal: paste each variant into your browser. If the address bar changes to your main address, that variant redirects. If it stays as typed and the page loads, it's a duplicate that relies on the canonical tag. Two catches. Chrome hides https:// and www. in the address bar, so right-click the address bar and tick Always show full URLs first. And since Chrome 154, the browser tries https:// by itself before it asks your site, so the http:// variant can't be checked this way. Use the terminal lines for that one. Then right-click the page and choose View Page Source (or press Ctrl+U; on a Mac, Cmd+Option+U in Chrome and Edge, Cmd+U in Firefox), press Ctrl+F (Cmd+F on a Mac) and search for canonical to see which address the page asks for.
Step 4: make every signal point the same way
Google doesn't only read your canonical tag. Its page on choosing a canonical lists what it weighs, "in order of how strongly they can influence canonicalization": redirects (strong), the canonical tag (strong), and being in your sitemap (weak). It also prefers HTTPS over HTTP, and it watches which address your own pages link to. The signals "can stack". When they disagree, your tag is one vote among several.
So line them up for the address you want:
- Redirect the variants you don't need. http to https, www to non-www (or the other way), no slash to slash. These are settings in most hosts and site builders, not code. Google says to use a redirect "only when deprecating a duplicate page", which is exactly the case for these.
- Put the canonical tag on every version, including the main one. The main page should point to itself. Use the full address with
https://, not a path like/shoes/. Google says it accepts the tag only inside the page's<head>. - List only the main address in your sitemap. Google's rule: don't name one address in the sitemap and another in the canonical tag for the same page.
- Link to the main address from your own pages. Menus, buttons and old blog posts included. Google: "Linking consistently to the URL that you consider to be canonical helps Google understand your preference."
Three things Google says not to use for this: a robots.txt rule (Google can still index a blocked address, just without reading it), the removal tool (it hides every version, including your main one), and noindex on the duplicate (it "will completely block the page from Search").
If the pages should be different, the fix is content, not tags. Give each city page or product page enough of its own text, photos and details that a visitor would see two different pages. Google's troubleshooting page: pages "will generally split out faster if the difference between the new content and the other clustered pages is clear and significant."
Where the canonical tag comes from in your site builder
- WordPress prints the tag itself on single posts and pages (it has since version 2.9), pointing at the post's own address. SEO plugins write their own tag instead. In Yoast, the per-page field is in the Yoast SEO sidebar under Advanced, Canonical URL; leave it empty unless you mean it. Yoast also leaves the tag out on any page set to noindex, so a missing tag there is expected. If dozens of pages point to the wrong place, check that plugin's settings first, and check you don't have two SEO plugins both writing a tag.
- Shopify themes print the tag from a built-in
canonical_urlvalue. A theme someone edited by hand can break it, so check one product page withCtrl+U. - Squarespace, Wix and other builders: Google's page on canonicals says a builder "might have a search engine settings page or some other mechanism" for this, and suggests searching for your builder's name plus "set the canonical element".
Whatever the builder, the Ctrl+U check from Step 3 tells you what it actually printed.
How long it takes
Google decides the canonical when it indexes a page, so nothing changes until it reads the pages again. Google's troubleshooting page says it "might hold pages in a duplicate cluster for up to two weeks" after you fix content. To nudge one important page, inspect it in Search Console and click Request indexing. Google's advice is to save that for your most important addresses, because the button has a quota.
If a page you care about isn't in Google at all, this status isn't your problem yet. Start with "Crawled – currently not indexed" or "Discovered – currently not indexed".
The short version
- In URL Inspection, compare User-declared canonical with Google-selected canonical. Use the indexed result, not the live test.
- Same page to a visitor? Google's choice is often fine. Leave it, or line up your signals for the address you prefer.
- Different pages? Look for a wrong tag from a plugin, a second site or test copy, near-identical pages, or a copy elsewhere.
- Redirect the variants, self-canonical the main page, sitemap only the main address, and link to it everywhere.
- Never robots.txt, noindex or the removal tool for this. Then wait up to two weeks.
Sources: Google's What is canonicalization (updated 20 Aug 2026: the definition, "a hint, not a rule", the kinds of duplicates, language versions), How to specify a canonical URL (updated 10 Jul 2026: signal strength, stacking, best practices, absolute URLs, the tag only in the head, internal links, HTTPS preference), Fix canonicalization issues (updated 21 Aug 2026: the common causes, "up to two weeks", "clear and significant", Request Indexing quota), Search Console's URL Inspection help (the two canonical fields, the live-test limit, properties you own) and Page indexing report help. WordPress: rel_canonical() ("Outputs rel=canonical for singular queries", introduced in 2.9.0). Yoast: How to change the canonical URL (the Advanced field; no tag on noindex pages). Shopify: the canonical_url Liquid object.
taktekbot