Technical SEO

Google Says Your Pages Are Duplicates. Here’s What to Do

Search Console says pages aren’t indexed: “Duplicate without user-selected canonical” and “Alternate page with proper canonical tag”. What the three duplicate statuses mean, which one needs work, how to find the pages behind them in five minutes, and what we changed on our own site.

On this page
  1. Three statuses, and only one usually needs work
  2. Is it hurting your site?
  3. Find the pages behind the email in five minutes
  4. Causes and fixes
  5. Our own email: what we found and changed
  6. Validate fix, and when to bother
  7. How DeepSpider helps
  8. Frequently asked questions
  9. What we’d do differently
  10. Sources
Four addresses of one recipe page on the fictional site copperfern-kitchen.test (http instead of https, no trailing slash, a sorting parameter and a newsletter tracking link) all point to one canonical URL, https://www.copperfern-kitchen.test/recipes/, the version Google indexes

The subject line sounds serious: “New reasons preventing your pages from being indexed”. Below it sit two lines in a grey box: “Duplicate without user-selected canonical” and “Alternate page with proper canonical tag”. It reads like a warning. Mostly it’s a receipt. Google found pages that look like copies, picked one version to show, and wants you to know. It just words it like a parking ticket.

We got this exact email for deepspider.ai on 29 October 2026. So this post uses our own site as the example: what the two lines mean, which one needed a fix, and what we changed.

In short
“Alternate page with proper canonical tag” means your canonical tag works. Google says there is nothing to do. “Duplicate without user-selected canonical” means Google found copies that don’t say which version is the main one, so it picked one itself. That’s only a problem if it picked the wrong one, or if the copies shouldn’t be there at all. Open the reason in Search Console, look at the example URLs and fix them by what each URL is for: a redirect, a canonical tag or noindex. The status to really watch is a third one, “Duplicate, Google chose different canonical than user”.

Three statuses, and only one usually needs work

Search Console’s Page indexing report sorts every URL Google knows into “Indexed” or “Not indexed”, with a reason. Three of the reasons are about duplicates. They sound alike, which is half the confusion:

What the three duplicate statuses mean
Status in Search ConsoleWhat Google says it meansDo you need to act?
Alternate page with proper canonical tag“This page correctly points to the canonical page, which is indexed, so there is nothing you need to do.”No
Duplicate without user-selected canonicalThe page is a duplicate of another page and “doesn’t indicate a preferred canonical page”, so Google chose the canonical itself. Google calls this “not an error, but is working as intended”Only if Google chose the wrong version, or the copy shouldn’t exist
Duplicate, Google chose different canonical than userThe page says it is the canonical, but “Google thinks another URL makes a better canonical”Yes, look into it

The canonical is the version Google treats as the main one. It’s the URL Google indexes, shows in results and counts links for. Google is surprisingly relaxed about the rest: “Having a page marked duplicate or alternate is usually a good thing; it means that we’ve found the canonical page and indexed it.” A duplicate that isn’t indexed is doing exactly what a duplicate should do.

Three Search Console statuses side by side: Alternate page with proper canonical tag means your canonical tag works and there is nothing to do; Duplicate without user-selected canonical means the copies have no canonical so Google chose one, check Google’s choice; Duplicate, Google chose different canonical than user means your page says it is the main one but Google disagrees, look into it
The three duplicate statuses in Search Console’s Page indexing report, with Google’s own advice in short.

Is it hurting your site?

Usually not. Google’s Martin Splitt said duplicate content doesn’t change how Google judges a site’s quality. It “isn’t something that you should lose sleep over” (Search Engine Journal). On large sites it’s still worth a clean-up, because copies compete with each other and slow crawling down. For URLs that differ only by tracking parameters, John Mueller’s advice was to set a canonical “and leave them alone”.

Ahrefs and other practitioners add that duplicates can split links across several URLs and waste crawling. Fair point on big sites. But it’s their reading, not a ranking effect Google has published.

So when does it matter? When the URL you want in results is the one marked as a duplicate. When the copies shouldn’t be reachable at all, like a staging site or old http:// pages. And when a page is meant to stand on its own, but it’s so close to another one that Google files it as a copy. Two near-identical location pages are the classic case.

If your site has fewer than about 500 pages, Google says you “probably don’t need to use this report” at all. One look after an email like this is plenty.

Find the pages behind the email in five minutes

  1. Open the reason. In Search Console, go to Indexing → Pages, scroll to “Why pages aren’t indexed” and click the row. You get example URLs, up to 1,000 of them.
  2. Look for a pattern. Group them in your head: the same path with different parameters, http and https, www or not, a trailing slash or not, login or search pages. Most sites have two or three groups. Not hundreds of separate problems.
  3. Inspect one URL per group. URL Inspection shows two lines under Page indexing. “User-declared canonical” is the one your page names. “Google-selected canonical” is the one Google picked. If the page names none and isn’t meant to be an alternate, Google says “None” is fine. If Google picked the URL you want in results, nothing is broken.
  4. Skip the live test. Google says plainly that “duplicate or canonical conditions are not tested in the live test”. You only see the canonical choice on the indexed version.
Two simplified URL Inspection cards. Left: for the sorted recipes URL the user-declared canonical is None and Google selected the clean recipes URL, which is fine. Right: for the clean recipes URL Google selected the sorted variant instead, the wrong version, so add a canonical
A simplified drawing, not a screenshot. Look at Google-selected canonical on the indexed version; the live test doesn’t show it.

Causes and fixes

Almost every case lands in one of these rows. The fix comes down to one question: should this URL exist for people, and should it be in Google?

Common causes and the usual fix
What you see in the example URLsWhy it happensUsual fix
The same page with ?sort=, ?color= or ?utm_source=Filters, sorting and tracking links create new URLs for the same contentCanonical tag on each variant pointing to the clean URL
http:// and https://, or www and non-wwwThe server answers on more than one addressPermanent (301) redirect to one version, and internal links to that version
/page and /page/, /Page and /page, /index.htmlURLs differ by a slash, a capital letter or a file name301 redirect and consistent internal links
Print, AMP or mobile versionsTwo templates for one piece of contentCanonical to the main version
A staging or test copyA copy of the site left open to crawlersPassword protection (HTTP authentication); noindex if it was already indexed
Page 2, 3, 4 of a listPaginationEach page names itself as canonical, not page 1
Sign-in, sign-up or account pagesForms that look the same to Google and have no reason to be in resultsnoindex (and let Google crawl the page so it can see it)
A large share of the whole siteA template lost its canonical, the head is broken, or JavaScript changes the canonicalFix the template, then check a few pages again

Our trailing slash post goes deeper on the slash case. After adding a redirect, the free Redirect Chain Checker shows whether the old addresses reach the main URL in one hop.

Whatever you pick, make every signal agree. Google treats a canonical tag as “a hint, not a rule” (Google Search Central). It also weighs redirects, sitemaps, internal links and https (how to specify a canonical). If your canonical says one thing and your menu, sitemap and hreflang say another, don’t be surprised when Google sides with the majority. Mueller’s version: make your preference “very obvious, by making sure everything on your site expresses that preference”.

Decision diagram for a URL from the example list: if people should not be able to open it, use a 301 redirect to the main URL; if they should and it belongs in search results as its own page, give it a self-referencing canonical and distinct content; if it is a copy, add a canonical to the main URL; if it should never be in search, such as login, sign-up or thank-you pages, use noindex. Never use robots.txt for this
Match the fix to the URL’s job. noindex is for pages that should never be in Search, not for choosing between copies.

What not to do

  • Blocking the copies in robots.txt. Google says “Don’t use the robots.txt file for canonicalization purposes”. robots.txt is the duct tape of SEO: it holds things shut, including the door Google needed to read your canonical or noindex. A blocked URL can even stay indexed, just without its content.
  • Using noindex to choose which copy wins. Google advises against it “because it will completely block the page from Search”. noindex is for pages that should never be in Search. Copies of pages that should rank get a redirect or a canonical.
  • Putting noindex and a canonical to another page on the same page. Ahrefs calls that “contradictory instructions”, which is the polite way of saying you told Google two things at once.
  • Reaching for the URL removal tool. It hides every version of the page from Search, not just the copy.
  • Looking for the old “preferred domain” setting in Search Console. It’s gone. Use redirects.

Our own email: what we found and changed

deepspider.ai is our public website. app.deepspider.ai is the product people sign in to. Our Search Console property is a domain property for deepspider.ai, so one report covers both, and the app’s pages show up right next to the blog. We exported the example URLs of both reasons. They told a clearer story than our first guess.

Alternate page with proper canonical tag: one URL. It was deepspider.ai/contact/?topic=custom, the link from our Pricing page that opens the contact form with “custom package” already chosen. Its canonical names https://deepspider.ai/contact/. Google followed it. Nothing to do.

Duplicate without user-selected canonical: 57 URLs, all on app.deepspider.ai. The count went from 0 to 41 on 17 October and to 57 three days later. Every single one was our sign-up or sign-in page:

  • 54 versions of the sign-up page, mostly like /signup?from=/blog/click-depth-seo/, plus a few with the chosen plan, such as /signup?plan=pro&interval=monthly.
  • 3 versions of the sign-in page, including /login?redirect_url=/choose-plan?plan=….

Here’s the funny part. Our sign-up links carry the page a visitor came from, so we can see which article or tool brought them. We built a feature to learn which pages bring sign-ups. Google saw 54 sign-up pages. Fair enough: every article, help guide and free tool with a sign-up link minted a new address. The pages had no canonical and no noindex, the same title and description, and a form our sign-in provider draws in the browser. To Google, that’s one page wearing 57 name tags. It’s the tracking-parameter row from the table, with a twist: the parameters were on our own links.

Should those pages be in Google? No. deepspider.ai is what people should find, and nobody searches for a sign-up form. So on 30 October we added noindex to the sign-up and sign-in pages, in every variant. We also added it to the product page app.deepspider.ai shows signed-out visitors. That one wasn’t in the list yet, but it answered on two addresses (/ and /welcome) and was next in line. We kept the from parameter, because it still tells us where sign-ups come from. We didn’t block anything in robots.txt, so Google can still fetch the pages and see the noindex, and people can still open them. The free Indexability Checker is a quick way to confirm that a page sends noindex and that robots.txt isn’t hiding it.

Then we clicked Validate fix. Google says validation “typically takes up to about two weeks, but in some cases can take much longer”. If it works, the URLs move to “Excluded by ‘noindex’ tag”, which is exactly where we want them.

Validate fix, and when to bother

Validate fix asks Google to recheck the known examples of one reason after you’ve changed something. Fix every instance first: Google stops the validation the moment it finds a single URL that still has the issue. Then be patient. Search Console checks a few pages straight away and works through the rest, from Started to Looking good to Passed, or to Failed if enough pages still have the problem.

It’s also optional. Google updates the counts as it recrawls anyway; validation mainly gets you a clear “Passed”. And there’s no point validating “Alternate page with proper canonical tag”. Nothing is wrong there.

How DeepSpider helps

A crawl shows the causes before Search Console mails you about them. In a DeepSpider audit, checks such as Canonical missing, Canonical tags Google ignores, Internal links to non-canonical URLs, Internal links with tracking or cart parameters, www and non-www both serve the site and Trailing slash URL consistency point at the patterns from the table, with the pages where each one was found.

Connect Google Search Console, and DeepSpider also asks Google’s URL Inspection API about the indexable pages from your audit: up to 1,800 a day, within Google’s limit of 2,000 per property. The reports “Pages where Google chose another canonical” and “Audited pages Google has not indexed” then show where Google disagrees with you. DeepSpider doesn’t read the Page indexing report itself, and it skips pages that already point their canonical elsewhere. Treat it as a second opinion on your important pages, not a copy of the report.

For one page at a time, the free Canonical Checker shows where a page’s canonical points and whether the target works, is indexable and names itself as canonical. No account needed.

Frequently asked questions

Should every page have a canonical tag?

It’s good practice. A canonical that names the page itself costs nothing and removes guesswork. Google says none of its methods are required and most sites “will likely do just fine” without one. But with parameters, filters or several hosts, a self-referencing canonical on every page makes Google’s choice much easier to predict.

My “duplicates” have different content. Why does Google call them copies?

Google compares the main content, not the whole page. If two pages share a template and differ by one sentence or a product colour, Google may treat them as one. Make the content properly different, or merge the pages and redirect one to the other.

Can I just ignore the email?

If the examples are parameter, slash or tracking variants of pages that are indexed in the version you want, yes. Look once, shrug, move on. If they include pages you want in results, or pages that shouldn’t be public, act on those.

How long until the numbers change?

Google has to recrawl the pages first, so a handful of URLs settles sooner than thousands. Validation “typically takes up to about two weeks”, and the counts can keep moving after that as Google rediscovers old URLs.

What we’d do differently

We’d still track which page brings each sign-up. We’d just put noindex on the sign-up form on day one, before Google got curious. And we’d glance at the Page indexing report once a month, so we hear about our duplicates from ourselves, not from an email that reads like a parking ticket.

Sources