Duplicate, Google chose different canonical than user

Where you see it: Search Console → Indexing → Pages → Why pages aren’t indexed

This URL declares a canonical, but Google weighed the other signals around it and indexed a different URL from the same group. A canonical tag is a hint, and here the hint lost. When Google’s pick is the wrong page, you win it back by making every signal name the same URL.

Act if your choice was the right one; otherwise accept Google’s.

Compare the two canonicals in URL Inspection. If Google chose an http address, a thin tag archive or an old copy of a post, line your signals up behind your choice. If it chose the stronger of two near-identical posts, merge them.

Check a URL nowCan RankHive fix it? Partly

Check the URL Search Console listed

Run the check on the listed URL, then on the URL Google selected. You want one canonical on the listed page, and a target that answers 200 and names itself.

Canonical report

Run a check to inspect canonical tags and robots directives.

Reading the result

  • Two different canonical URLs: Google can set conflicting tags aside and choose on its own. Remove the extra one, usually the theme’s.
  • Canonical URL status reads “HTTP 200 after redirecting to …”: your tag names an address that sends Google elsewhere, and Google follows the redirect.
  • A www and non-www mismatch, usually with a redirect warning beside it: the tag names one host while the server redirects to the other.
  • Canonical looks healthy on both URLs: the tags are fine, so look at internal links, the sitemap and how alike the pages are.

The same tool with its full guide: Canonical Checker

Why it happens on WordPress

Google weighs redirects and rel="canonical" as strong signals, a sitemap listing as a weak one, and prefers HTTPS unless something undermines it. On WordPress each is set on a different screen, often by a different plugin, which is how they drift apart.

A self-canonical on a page that copies another

SEO plugins give every page a canonical naming itself, including a tag archive holding one post, or a second post you wrote on the same topic. The tag says “I’m the original”, the content says otherwise, and Google often rightly sides with the content.

Internal links voting for the other version

Menu Custom Links, page builder buttons and older posts often hold hard-coded addresses: http:// from before the HTTPS move, or the host without www. Google asks you to link to the canonical consistently; these links vote for the other version.

A sitemap that lists the losing URL

A leftover static sitemap.xml in the site root or a second sitemap plugin can list the address you didn’t choose. A sitemap is a weak signal, but Google says not to name different canonicals through different methods.

A redirect pulling the other way

A rule left from an old merge, or a host rule that adds or strips www, can redirect the URL your canonical names. Your tag and the redirect then disagree, and the redirect wins.

HTTPS that Google doesn’t trust

Google prefers https URLs except when the certificate is invalid, the https page redirects to http, its canonical points to http, or it loads scripts or stylesheets over http. After a move, hard-coded http:// assets in theme options are the usual culprit.

Translations that are mostly the same text

A multilingual site where only the menus and footer are translated. Google treats language versions as duplicates when the main content stays untranslated, and picks one URL per group.

How to fix it

Decide first whether this is a fight worth having. Then align the signals from strongest to weakest.

  1. 1. Read both canonicals in URL Inspection

    Paste the listed URL into the inspection bar and expand Page indexing. User-declared canonical is your tag; Google-selected canonical is what Google indexed. Open both side by side.

  2. 2. Choose: accept, merge, separate or contest

    Each group gets one answer.

    • Accept, when Google’s pick is a page you’d want anyway: point this URL’s canonical at it, except on translated pages.
    • Merge, when two posts compete for one topic: fold the better parts into one and 301 the other to it.
    • Separate, when the pages are meant to differ: rewrite so each says something the other doesn’t. A one-post tag archive can be noindexed in your SEO plugin instead.
    • Contest, when Google picked an http address or a stale copy: work through the steps below.
  3. 3. Make sure your chosen URL answers 200

    If it redirects, change the canonical to the final address, or delete the rule in your redirect plugin, SEO plugin or host panel.

    Redirect checker

  4. 4. Point internal links at your choice

    Replace the losing address in post content with a search-and-replace plugin or WP-CLI, after a backup. Then fix Custom Links in Appearance → Menus or the Site Editor’s navigation.

    Internal link checker

  5. 5. List only your choice in the sitemap

    Delete a static sitemap.xml left in the site root, keep one sitemap generator, and resubmit it in Search Console → Indexing → Sitemaps.

    Sitemap checker

  6. 6. Clean up HTTPS

    Every http URL should reach https in one 301 at your host or CDN, and the certificate must cover the exact host you use, www included. Replace scripts and stylesheets still loaded over http.

The signals, and the WordPress screen behind each

Google says the methods stack: using more than one raises the chance your preferred URL is shown. On WordPress no single screen shows them all.

SignalWeight in Google’s docsWhere it is set on WordPress
RedirectStrongRedirect plugin, SEO plugin, host panel, CDN or .htaccess
rel="canonical"StrongSEO plugin and each post’s Advanced tab; core on posts and pages; sometimes the theme
Sitemap listingWeakSEO plugin sitemap, core’s /wp-sitemap.xml, or a static file
HTTPSPreferred unless underminedSettings → General, your certificate, the http to https redirect
Internal linksHelps Google read your preferencePost content, menus and widgets

Check the fix in Search Console

The live test in URL Inspection doesn’t check duplicates, so it can’t say which URL will win. Use it to confirm your signals are live.

  1. Run Test live URL on both pages and open View tested page. Both should carry one canonical naming your choice.
  2. Request indexing for your chosen URL once; Google says asking again doesn’t speed up crawling.
  3. Click Validate fix on the status in Indexing → Pages only when every listed URL should leave it. If you let some groups stand as Google chose, skip it: those keep the status and would fail the run, and the report moves on its own as Google recrawls.
  4. By Google’s estimate a validation can run for up to about two weeks. If it fails, inspect one of the URLs it still lists before changing anything else.
  5. When both canonicals match after a recrawl, the URL becomes indexed or moves to Alternate page with proper canonical tag.

If Google keeps choosing the other URL once every signal agrees, it is judging the content, and merging the pages settles it.

Can RankHive fix this?

Partly. On posts and pages RankHive changes the signals it can reach: the canonical field, links in your content, a 301 from a merged post, and the text of a near-duplicate. Sitemaps, HTTPS and archives stay with you.

What it writes, once you approve

  • A canonical URL on a post or page, saved in Yoast SEO, Rank Math or SEOPress.
  • Internal links in post content, repointed at the URL you chose.
  • A 301 redirect from a merged-away post to the one you keep, served by the RankHive plugin.
  • A rewrite of a near-duplicate post.

What it can’t do here

  • Edit, regenerate or submit your XML sitemap.
  • Fix certificates or http to https and www redirects at your host or CDN.
  • Change canonicals on tag, category, author or date archives, or set noindex anywhere.
  • Edit menus, widgets or WooCommerce products.
  • Add hreflang, or click Validate fix or Request indexing for you.

Every change is drafted next to the current value and waits for your approval. Each one written is logged in the Change Log, with Revert.

Check the rest of your site while you’re here

The free site check reads your public pages for titles, meta descriptions, headings, canonical tags and schema, and shows what needs fixing. If you sign up, RankHive reads your Google Search Console data every week, drafts the fixes, and writes the ones you approve to WordPress. Nothing changes on your site until you say yes.

Free site check. No sign-up needed.

Common questions

Why did Google ignore my canonical tag?

Because a canonical is a hint, not a rule. When redirects, sitemaps, HTTPS or links point elsewhere, or the pages aren’t true duplicates, Google picks for itself.

Is “Duplicate, Google chose different canonical than user” bad for SEO?

Not always: one version of the content is indexed. It costs you when that version is one you don’t want people landing on.

Should I change my canonical to match Google’s choice?

Sometimes. If Google’s pick is a page you’d happily rank, pointing your tag at it ends the conflict. Don’t do it on translated or regional pages, which should keep naming themselves.

Why does Search Console show clicks for a URL I didn’t choose?

Because Search Console reports performance under the canonical Google selected. Once Google switches to your choice, new clicks and impressions are counted under that URL instead.