Fix Duplicate Without User-Selected Canonical

What Search Console’s “Duplicate without user-selected canonical”, “Alternate page with proper canonical tag” and “Duplicate, Google chose different canonical than user” mean, and how to fix each one on WordPress.

Cover Image for Fix Duplicate Without User-Selected Canonical

“Duplicate without user-selected canonical” means Google found the same, or nearly the same, content at more than one URL, none of those URLs said which one is the original, and Google indexed a different URL from the one in the report. The listed URL is left out of the index; the one Google picked is in it.

That is often fine. It becomes a problem when Google picked a URL you did not want in search results, or when WordPress is generating duplicates that should not exist at all. This guide covers the three canonical statuses Search Console reports, the WordPress settings that usually cause them, and the fix for each.

Three canonical statuses, three different situations

All three appear under Indexing → Pages, in the table of reasons pages are not indexed. They sound alike and mean quite different things.

Search Console statusWhat happenedFix it?
Duplicate without user-selected canonicalThis URL declares no canonical, and Google chose another URL as the originalOnly if this URL is the one you want in search, or if it should not exist
Alternate page with proper canonical tagThis URL points its canonical at another URL, and Google agreedUsually not: this is the tag working
Duplicate, Google chose different canonical than userThis URL declares a canonical, and Google picked a different oneYes, if your choice was right: your signals disagree

The first job is always the same: find out which URL Google chose. Click the status, pick an example URL and open it in URL Inspection (the magnifier icon next to the URL, or paste it into the search bar at the top of Search Console). The page indexing section shows two fields side by side: User-declared canonical and Google-selected canonical. The difference between them is your diagnosis.

Here is what that looks like on an illustrative shop at https://www.example.com:

Example URLUser-declaredGoogle-selectedWhat it tells youFix
http://example.com/blue-mugs/https://www.example.com/blue-mugs/The sameGoogle agrees, but the old http, non-www version still answers instead of redirecting301 to the https www version
https://www.example.com/blue-mugs/?utm_source=newsletterhttps://www.example.com/blue-mugs/The sameThe tag works; this is “Alternate page with proper canonical tag”Nothing
https://www.example.com/tag/blue-mugs/Itselfhttps://www.example.com/blue-mugs/A one-post tag archive that copies the postNoindex thin tags
https://www.example.com/mugs-guide-2/Itselfhttps://www.example.com/mugs-guide/Two posts on one topic; Google prefers the older oneMerge, then 301

“None” in the User-declared field means the page printed no canonical tag at all, or Google could not read one; without an SEO plugin, WordPress prints canonicals only on single posts and pages, so archives show None. To check by hand, view the page source and search for rel="canonical". There should be exactly one; if a theme and an SEO plugin both print one and they disagree, Google may ignore both.

Where WordPress creates duplicate URLs

WordPress serves the same post at more URLs than most site owners realize. The usual sources:

  • http and https, www and non-www. If more than one version answers with a page instead of redirecting, every post exists four times. This usually comes from the host or a CDN rather than WordPress itself.
  • Trailing slash variants. WordPress redirects to the slash style of your permalink setting, but caching layers and custom rewrite rules sometimes serve both.
  • Tag and category archives. A post filed under six tags appears, in excerpt, on six archive pages. Tags with one or two posts are close to duplicates of those posts.
  • Attachment pages. Every uploaded image can get its own page holding little more than the image. Current versions of Yoast SEO redirect these to the image file by default and Rank Math has a setting that does the same, but older settings, other plugins and some themes leave them live.
  • Paginated archives. /category/news/page/2/, /page/3/ and so on are not really duplicates of page 1, because each lists different posts. When they land in a canonical status, it is usually because a plugin or theme points their canonical at page 1. Google’s pagination guidance is the opposite: each page keeps a canonical to itself and stays indexable, since those pages are how crawlers reach older posts.
  • Parameter URLs. ?replytocom= from threaded comments, ?utm_source= from campaign links, ?amp, internal search (?s=), and on WooCommerce sort and filter parameters such as ?orderby=.
  • Real duplicate content. Two posts on the same topic, location pages that differ only by the town name, or a staging site that Google found.

How to fix it, step by step

  1. Group the example URLs by pattern. Open the status in the Page indexing report and look down the examples. Tag archives, ?replytocom= URLs and http:// URLs each need one fix, not one per URL.
  2. Inspect one URL from each group. Compare the user-declared and Google-selected canonical. If Google picked the right page, there is nothing to fix for that group.
  3. Decide what each pattern should be.
    • The URL should not exist (an http version, an old duplicate post): 301 redirect it to the right URL.
    • The URL is useful to visitors but not to searchers (thin tag archives, internal search): noindex it.
    • The URL is a variant of a page you want indexed (a tracking or sort parameter): canonical to the main URL.
    • The URL is page 2 or later of an archive: leave it indexable with a canonical pointing to itself. Do not noindex it or point it at page 1.
  4. Make every signal agree. The canonical, your internal links, your sitemap and any redirects should all name the same URL. Google weighs them together.

In Yoast SEO

Yoast SEO prints a self-referencing canonical on every indexable page automatically. To point one post somewhere else, open it in the editor, expand the Yoast SEO box, open Advanced and fill in Canonical URL. Leave it empty to use the post’s own URL.

To keep thin tag archives out of the index, go to Yoast SEO → Settings → Categories & tags, open Tags and switch off Show tags in search results. Attachment pages are controlled under Yoast SEO → Settings → Advanced → Media pages; with media pages turned off, attachment URLs redirect to the file.

In Rank Math

Open the post, click the Rank Math icon in the editor toolbar, go to the Advanced tab and fill in Canonical URL. For archives, go to Rank Math SEO → Titles & Meta → Tags (or Categories) and set the robots meta to No Index. Attachment redirects are under Rank Math SEO → General Settings → Links → Redirect Attachments.

In SEOPress or without a plugin

SEOPress has the same per-post field in the Advanced tab of its SEO box. Without an SEO plugin, WordPress prints a canonical on single posts and pages only, and offers no field to change it; you would need a plugin or theme code.

For http, https and www duplicates

Go to Settings → General and check that WordPress Address (URL) and Site Address (URL) use the exact version you want, for example https://www.example.com. Then make sure every other version 301-redirects there in one hop; that redirect lives at your host, CDN or in .htaccess. The redirect checker shows each hop.

When Google chose a different canonical than yours

“Duplicate, Google chose different canonical than user” means your tag lost to other signals. Work through them:

  • Internal links. If menus, related-post widgets or old posts link to a different version of the URL, Google sees you preferring that version. Update the links.
  • Sitemap. List only the canonical URL. A sitemap that lists the duplicate contradicts the tag.
  • The canonical target itself. It must return 200, not redirect, not be noindex and not be blocked in robots.txt. A canonical pointing at a redirect or an error is ignored.
  • How similar the pages are. A canonical is meant for duplicates and near-duplicates. If the two pages are substantially different, Google may treat them as separate pages and pick on its own.
  • Two posts on one topic. If Google keeps picking the other post, it may simply be the better page. Merge the two into one and 301 the weaker URL to it.

The canonical tags guide covers how the tag works in more depth, including chains and cross-domain canonicals.

Edge cases

  • Translations. Pages in different languages are not duplicates of each other, so each keeps a canonical to itself, with hreflang tags linking the versions. If Google picks another language version as canonical, check that the main content really is translated, not just the menus.
  • Sites that republish your posts. If a partner syndicates your content, a cross-domain canonical is not reliable: Google’s canonicalization troubleshooting recommends that the partner block indexing of their copy with noindex instead.
  • A staging or development copy. If Google found a staging site, password-protect it or noindex it. Do not canonical a staging site to the live one and leave it open, since Google may index the wrong copy while it sorts out the signals.
  • Print and AMP versions. Old print-friendly URLs (?print=1) and /amp/ pages should canonical to the main post. If you no longer use AMP, redirect the /amp/ URLs to the post.

Validate the fix in Search Console

After you change a pattern, check one URL with URL Inspection → Test live URL to confirm the live page now shows the canonical, noindex or redirect you intended. Then go back to the status in Indexing → Pages and click Validate fix. Search Console rechecks the listed URLs over the following days or weeks and reports whether validation passed or failed.

Do not validate “Alternate page with proper canonical tag” for URLs that are meant to point elsewhere. Those are expected entries, and they will stay in the report.

How RankHive handles this

On a connected WordPress site, RankHive reads Search Console every week, including URL Inspection data for your pages, and flags the ones with a missing canonical, a canonical pointing at the wrong URL, or a duplicate that should be redirected. Each fix is drafted with the current value next to the proposed one. When you approve it, the RankHive plugin writes it to WordPress: the canonical goes into the canonical field of Yoast SEO, Rank Math or SEOPress, and a redirect goes in as a redirect rule. Every change is logged in the Change Log, where Revert puts the old value back. RankHive works on posts and pages, not WooCommerce products.


Your job is to decide which URL should be indexed for each pattern and make every signal name it. Work through the patterns by hand with the steps above, or let RankHive find the canonical problems in your Search Console each week and ship the fix after you approve it.

Frequently asked questions

Not on its own. It means Google found the same content at more than one URL and indexed one of them. It only costs you something when Google indexed the wrong URL (an http version, a tag archive, a URL with a tracking parameter) or when the duplicates should not exist at all. Check which URL Google chose in URL Inspection before changing anything.