Skip to content

How-to guideGoogle indexing & pages not indexed

Duplicate, Google chose different canonical than user: why and how to fix it

"Duplicate, Google chose different canonical than user" is a Page indexing report status for a URL whose declared canonical (the version you asked Google to index) Google overruled. Google indexed (added to the library it answers from) a different URL instead. Act only if Google's choice is wrong, and then make every signal on your site point to one URL.

The story · 3 steps
Check my preferred URLsFree plan: 10 free links to try (once you verify your email), then 100 free checks a month, no card.
On this page · 7 sections
  1. 01What does "Duplicate, Google chose different canonical than user" mean?
  2. 02Is it a problem when Google chooses a different canonical?
  3. 03Why did Google override your canonical?
  4. 04How do you confirm it with URL Inspection?
  5. 05How do you fix it?
  6. 06How do you validate the fix?
  7. 07When should you push for a recrawl?

The canonical is the version Google indexes and normally shows in search and in the AI features built on its index, so an overruled canonical can send visitors, links and reports to a URL you didn't choose. This guide quotes Google's definition, shows when to accept Google's choice, covers the conflicting signals behind it, and explains how to confirm, fix, validate and recrawl.

What does "Duplicate, Google chose different canonical than user" mean?

"Duplicate, Google chose different canonical than user" means you declared a canonical for this URL, Google considered it, and Google indexed another URL as the canonical instead. "User" here means you, the site owner. As of October 2026, Google's help page says: "This page is marked as canonical for a set of pages, but Google thinks another URL makes a better canonical. Google has indexed the page that we consider canonical rather than this one" (Page indexing report help).

The same entry explains what Google decided:

  • "This error means that Google thinks that the tested page isn't a duplicate of the user-declared canonical. Instead, Google thinks that the tested page is a duplicate of the Google-selected canonical."
  • "If the Google-selected canonical is the tested page, then Google thinks that the tested page isn't similar to any other pages."
  • "If the user-declared canonical is not similar to the current page, then Google won't ever choose that URL as canonical. A duplicate page must be similar to the canonical. (That's what duplicate means.)"

This status differs from its two neighbors by one question: did Google go along with you? If you declared no canonical at all, read why Google picks a canonical when you don't. If you pointed to another URL and Google agreed, see what "Alternate page with proper canonical tag" means. Here you declared one and Google disagreed.

Is it a problem when Google chooses a different canonical?

It's a problem only when Google's choice is a URL you don't want people to land on, or when it folded together pages you meant to keep separate. Google's own troubleshooting starts by asking you to "think about whether the Google-selected canonical makes more sense than your preferred canonical URL for your users coming from Google Search" (Fix canonicalization issues).

Accept Google's choice when:

  • It picked a URL you'd be happy to see in search, such as the clean version of a page you had tagged with a parameter URL by mistake.

Treat it as a problem when Google's choice is:

  • An http://, parameter or old URL instead of your clean https:// page.
  • A different page you wanted indexed on its own, such as one city page folded into another.
  • A URL on another domain, such as a staging host, a syndication partner or a copycat site. Google warns that "If a canonical URL is in a Search Console property that you don't own, you won't be able to see any of the traffic for your duplicate page."

If this is happening across several client sites, check which preferred URLs Google has indexed free before you start changing tags.

Why did Google override your canonical?

Google overrides a declared canonical when the page isn't really a duplicate of it, or when your other signals point somewhere else. Google says that "Even if you explicitly designate a canonical page, Google might choose a different canonical for various reasons, such as the quality of the content or technical signals" (Google Search Central). The factors it names are "whether the page is served over HTTP or HTTPS, redirects, presence of the URL in a sitemap, and rel="canonical" link annotations" (Canonicalization).

Conflicting signal

What it looks like

Google's guidance

Content mismatch

Canonical points to a page with different main content

A duplicate "must be similar to the canonical"

Redirects and HTTPS

Canonical URL redirects elsewhere, or HTTPS redirects to HTTP

301 is a "strong signal", 302 a "weak signal"

Sitemap and internal links

Sitemap or menus list a different URL from the tag

"link to the canonical URL rather than a duplicate URL"

hreflang

Canonical points to another language, or outside the hreflang cluster

"specify a canonical page in the same language"

A tag Google can't trust

Tag outside <head>, changed by JavaScript, set wrongly by a plugin, or injected by a hack

Put it in the HTML source; don't let JavaScript change it

The pages aren't true duplicates

Content mismatch is the cause Google spells out most plainly: it won't pick a declared canonical that isn't similar to the page. Pointing every product variant, paginated page or blog post at one hub page fails for this reason.

Redirects and HTTPS send another message

Redirects outweigh most hints. Google's HTTP status guide says a 301 is a "strong signal that the redirect target should be processed" and a 302 a "weak signal" (How HTTP status codes affect Google's crawlers). Google also says content from a redirecting URL "is ignored, and the final target URL's content is processed instead", so a declared canonical that redirects really points Google at the redirect target. HTTPS conflicts matter too: Google says to "Avoid bad TLS/SSL certificates and HTTPS-to-HTTP redirects because they cause Google to prefer HTTP very strongly. Implementing HSTS cannot override this strong preference" (Consolidate duplicate URLs).

Sitemaps and internal links are weaker signals, but they add up. Google says "don't specify one URL in a sitemap, but a different URL for that same page using rel="canonical"", and "When linking within your site, link to the canonical URL rather than a duplicate URL" (Google Search Central). A sitemap generator that lists trailing-slash URLs while templates declare non-slash canonicals is a typical mismatch.

hreflang points the other way

Language annotations can outvote a canonical tag. For canonicalization, Google "prefers URLs that are part of hreflang clusters", and says that if you use hreflang, you should "make sure to specify a canonical page in the same language, or the best possible substitute language if a canonical page doesn't exist for the same language." A French page whose canonical points to the English page sends two opposite messages.

The tag itself isn't reliable

A canonical Google can't read or trust doesn't count for much. Google says the element "is only accepted if it appears in the <head> section of the HTML," and that with client-side rendering you should "specify the canonical URL in the HTML source code and make sure that JavaScript doesn't change the canonical link element"; our React indexing guide covers this for client-rendered apps. Google also notes that "Some content management systems (CMS) or CMS plugins can make incorrect use of canonicalization techniques" (Fix canonicalization issues); on WordPress, check which theme or SEO plugin prints the tag. If Google picked a URL on a site you don't own, the same guide lists hacked pages, syndication, copycats and misconfigured servers, including servers that return identical soft 404 pages Google fails to recognize as errors.

How do you confirm it with URL Inspection?

Confirm this status by comparing the two canonical fields in URL Inspection's indexed result, then checking your own signals from outside. Google's help gives the steps: "Inspect this URL to see the Google-selected canonical URL under Page indexing > Google-selected canonical", "Look at the canonical you chose under Page indexing > User-declared canonical", and "In your browser, look at the current page, the user-declared canonical, and the Google-selected canonical" (Search Console Help).

  1. Open an example URL from the report and inspect it. Our URL Inspection tool guide explains each field.
  2. Read both canonical fields. Google notes the Google-selected value "can be a few hours out of date from our index value" (URL Inspection tool help).
  3. Don't use Test live URL for this. Google says "the live test cannot predict whether or not the tested version will be considered canonical."
  4. Compare the three pages side by side. If the main content differs, that's your answer.
  5. Check whether your signals agree. This script prints the five signals for the URL you want as canonical:
Shell
#!/usr/bin/env bash
# Usage: canon-check.sh <preferred-url> <sitemap-url>
URL="$1"; SITEMAP="$2"
echo "1) Status and final URL after redirects:"
curl -sL -o /dev/null -w "   %{http_code} %{url_effective}\n" "$URL"
echo "2) Canonical link element in the HTML:"
curl -sL "$URL" | grep -ioE "<link[^>]*rel=[\"']?canonical[^>]*>" | sed 's/^/   /'
echo "3) Canonical in the HTTP Link header (blank if none):"
curl -sIL "$URL" | grep -i "^link:.*canonical" | sed 's/^/   /'
echo "4) Is this exact URL in the sitemap?"
if curl -s "$SITEMAP" | grep -q "<loc>$URL</loc>"; then echo "   yes"; else echo "   no"; fi
echo "5) Do the variants redirect to it?"
HOST=$(echo "$URL" | sed -E 's#https?://([^/]+).*#\1#'); PATHQ=$(echo "$URL" | sed -E 's#https?://[^/]+##')
for v in "http://$HOST$PATHQ" "https://www.$HOST$PATHQ"; do
  curl -s -o /dev/null -w "   %{http_code} $v -> %{redirect_url}\n" "$v"
done

We ran it on October 17, 2026 against one of our own pages:

Text
1) Status and final URL after redirects:
   200 https://freshlycited.com/about
2) Canonical link element in the HTML:
   <link rel="canonical" href="https://freshlycited.com/about"/>
3) Canonical in the HTTP Link header (blank if none):
4) Is this exact URL in the sitemap?
   yes
5) Do the variants redirect to it?
   308 http://freshlycited.com/about -> https://freshlycited.com/about
   301 https://www.freshlycited.com/about -> https://freshlycited.com/about

Every line names the same URL, which is what you want. A conflict shows up as a different final URL in line 1, a canonical naming another URL in line 2, "no" in line 4, or a variant that redirects somewhere else in line 5. Internal links and hreflang need a crawl or a template review.

How do you fix it?

Fix it by deciding which URL should win, then making every signal name that URL. If Google's choice is better, the fix is to adopt it.

  1. Decide. If the Google-selected canonical is a fine URL, change your tag to match it and stop there.
  2. Point the tag at a true duplicate. The declared canonical must carry the same main content. Pages that aren't duplicates should be canonical to themselves.
  3. Make redirects agree. Use server-side 301 or 308 redirects from http://, the other host and old paths to the canonical. Remove any redirect away from it, and any HTTPS-to-HTTP hop.
  4. List only canonical URLs in your sitemap, with the same protocol, host, case and trailing-slash style as the tag.
  5. Update internal links, menus, breadcrumbs and pagination to use the canonical URL.
  6. Align hreflang so each language version is canonical to itself, or to a page in the same language.
  7. Serve the tag in the HTML <head> as an absolute URL, and stop JavaScript or a second plugin from changing it:
HTML
<!-- On https://example.com/services/seo-audit -->
<link rel="canonical" href="https://example.com/services/seo-audit" />
  1. If Google merged pages you want separate, make them differ. Google's advice is that pages "will generally split out faster if the difference between the new content and the other clustered pages is clear and significant."

How do you validate the fix?

Validate by clicking Validate fix on the reason once the signals agree, then re-inspecting a few URLs over the following weeks. Google says validation "typically takes up to about two weeks, but in some cases can take much longer" (Search Console Help).

  • Allow for re-clustering. Google says "Even after fixing content issues, Google might hold pages in a duplicate cluster for up to two weeks" (Fix canonicalization issues).
  • Expect a status change, not always "Indexed". A URL that is now its own accepted canonical can be indexed. A URL pointing to another canonical that Google accepts moves to "Alternate page with proper canonical tag", which is fine.
  • Re-run the signal check after each deploy; a template or plugin update can undo the fix.

When should you push for a recrawl?

Push for a recrawl only for the URL you want as canonical, after every signal agrees, and only if Google doesn't have it indexed yet. Requesting indexing for the duplicate doesn't help, because Google indexes the canonical.

  • A few important URLs: Google's own guide says that once you fix the content, "use the "Request Indexing" feature in the Search Console URL Inspection tool to ask Google to re-evaluate the pages that are clustered," but "since this feature is subject to quotas, reserve it for your most important URLs."
  • Many URLs: resubmit a sitemap of canonical URLs with accurate <lastmod> dates.
  • Then wait. Google says crawling "can take anywhere from a few days to a few weeks" (Ask Google to recrawl).

Our guide to submitting a URL to Google compares the routes. Across many sites, you can run a visibility check on your preferred URLs to see which ones Google has indexed, then push only the canonical URLs it can't see. FreshlyCited re-checks each pushed link on days 1, 3 and 7, and an index credit is used only if the link gets indexed, and comes back after the day-7 re-check if it isn't (exclusions apply, such as pages that return an error or carry noindex). A URL whose canonical points elsewhere isn't covered, and the pre-flight check flags it first so you can skip it for free. Google still decides which URL is canonical.

Aligned your canonical signals? Check your preferred URLs free to see which ones Google has indexed, and push only those it still can't see.

Rakesh Patel

Written by

Founder & CEO, Space-O Technologies · Founder, TextBolt

Rakesh Patel founded Space-O Technologies in 2010 and leads it as CEO, with 25 years of leadership experience; he has overseen the delivery of more than 3,000 mobile app projects. He is also the founder of TextBolt, a business email-to-SMS service, and the author of "Enterprise Mobility Strategy and Solutions" and "A Guide to Open311". Space-O built FreshlyCited to solve the "shipped but not seen" problem on its own and its clients' sites: pages and links that are live but that Google hasn't looked at yet.

Founded Space-O Technologies in 2010 · 25 years of leadership experience · author of 'Enterprise Mobility Strategy and Solutions' and 'A Guide to Open311'

Written for FreshlyCited, which helps Google and Bing find new and updated pages sooner. About FreshlyCited

FAQ

Questions people ask

Is "Google chose different canonical than user" an error?

No. Google indexed a different URL from the set of duplicates. It matters only if the URL Google picked is the wrong one for your visitors and reports.

Can I force Google to use my canonical?

No. Google treats rel=canonical as a strong hint, not a rule. Making redirects, internal links, sitemaps and hreflang all point to the same URL is the reliable way to win it back.

How long until Google switches to my canonical?

After a recrawl, which can take days to weeks. Google says it may hold pages in a duplicate cluster for up to two weeks, and validation typically takes up to about two weeks.

Check my pages free.

See which of your pages Google has indexed, free.