sfw/fix
Duplicate without user-selected canonical medium

Duplicate without user-selected canonical

Several near-identical URLs exist with no rel=canonical declared, so Google chooses its own canonical and excludes the rest.

What you see

Page indexing > Why pages aren't indexed
Duplicate without user-selected canonical
Google chose a different canonical than the user

What’s actually happening

In Search Console's Page indexing report, a batch of URLs sits under "Duplicate without user-selected canonical." The page isn't penalized, but the version you care about may not be the one Google shows in results. Open the URL Inspection tool and you'll see "Google-selected canonical" pointing at a different address than the one you submitted. Traffic and link signals get consolidated onto Google's pick, not yours.

Common causes

  • No rel=canonical tag in the <head>, so Google has nothing to follow and guesses from content similarity.
  • URL parameters (?utm_source=, ?ref=, ?sort=) generate dozens of crawlable variants of one page.
  • Both http:// and https:// or both www and non-www resolve with 200 instead of one redirecting to the other.
  • Trailing-slash and case variants (/about vs /about/ vs /About) all return the same page.
  • Faceted navigation or pagination produces overlapping content with no canonical pointing back to the main view.

How to fix it

  1. Add a self-referencing canonical to every pagePut <link rel="canonical" href="https://example.com/page"/> in the <head> with the absolute, https, final-destination URL. Every page should declare itself canonical unless it genuinely duplicates another.
  2. Pick one host and protocol, 301 the restDecide on https + non-www (or whatever you prefer), then 301-redirect every other variant to it at the server or CDN. Don't rely on the canonical tag alone to fix protocol/host duplication — redirect it.
  3. Strip or canonicalize tracking parametersMake parameterized URLs canonical to their clean version. ?utm_* and ?ref= should still render the page but declare the parameter-free URL as canonical so signals consolidate.
  4. Re-inspect and validate the fixRun the URL through Inspection, confirm "User-declared canonical" and "Google-selected canonical" now match, then click Validate Fix on the report. Reprocessing the batch takes days to weeks.

Stop it recurring

Ship a self-referencing absolute-https canonical tag in your page template so every new URL declares its own canonical from day one.

Related errors