The Page indexing report lists URLs under one of three canonical-related reasons: Duplicate without user-selected canonical, Duplicate, Google chose different canonical than user, or Alternate page with proper canonical tag. They sound alike. They mean very different things, and only two of them ever need work.
All three come from the same process. When Google finds several URLs with the same or very similar content, it groups them and picks one as the canonical, the version it indexes and shows in search. The others are treated as duplicates. Your job is to tell Google clearly which URL you prefer, and to make every other signal on the site agree with that choice.
This guide explains each status, shows you how to check what Google picked, and walks through fixing canonical tags, redirects, internal links and sitemaps so your preferred URLs get indexed.
Quick answer
- Alternate page with proper canonical tag: usually nothing to do. Your canonical tag works.
- Duplicate without user-selected canonical: add a
rel="canonical"tag on each duplicate pointing at your preferred URL, and a self-referencing one on the preferred URL. - Duplicate, Google chose different canonical than user: inspect the URL, compare User-declared canonical with Google-selected canonical, and remove the conflicting signals.
- Make redirects, internal links, sitemaps and hreflang all point to the same preferred URL.
- Request indexing for key URLs and recheck after about two weeks.
Before you start
You need access to Search Console (any permission level to view; Owner or Full user to request indexing). You also need a way to edit canonical tags, which on most sites means an SEO plugin or your platform's SEO settings. Many platforms handle canonicals automatically. Shopify, Squarespace and Wix add self-referencing canonicals by default, and WordPress SEO plugins such as Yoast and Rank Math let you override the canonical per page.
To check the HTML yourself, use your browser's View page source or developer tools. If you plan to add redirects, export the current redirect list from your server, plugin or platform first, so you can undo changes.
Understand the three statuses
| Status | What it means | Action |
|---|---|---|
| Alternate page with proper canonical tag | This URL points to another canonical URL, and Google agreed and indexed that one | None, unless the canonical is wrong |
| Duplicate without user-selected canonical | Google sees this URL as a duplicate, you didn't declare a canonical, and Google picked a different URL | Declare the canonical you want |
| Duplicate, Google chose different canonical than user | You declared a canonical, but Google decided another URL is a better choice | Find and fix the conflicting signals |
Google's help page says plainly that Alternate page with proper canonical tag needs no action. URLs there are working as intended: a mobile version, a parameter variant or a print page that correctly points at the main URL. Check a few samples to make sure the canonical target is the page you want, and then move on to the rows that need work.
- Start with Duplicate without user-selected canonical, then handle the Google chose different canonical row.
Step 1: Find out which URL Google picked
Open the duplicate reason in the Page indexing report and copy a few example URLs. Paste each into URL inspection at the top of Search Console. Expand Page indexing and look at the indexing section.
- User-declared canonical shows what your page says. Google-selected canonical shows what Google chose.
- Inspect the Google-selected URL too, to confirm that one is indexed.
Now decide. If Google's choice is the URL you want indexed, the duplicate status is harmless, though you should still make it explicit. If Google picked the wrong URL, you have work to do.
Typical duplicate groups include:
- The
httpandhttpsversions, orwwwand non-wwwversions of the same page. - URLs with and without a trailing slash (
/servicesand/services/). - Tracking or filter parameters (
?utm_source=,?ref=,?sort=). - Uppercase and lowercase variants.
- Product URLs reachable through several category paths.
- Printer-friendly, AMP or old mobile versions.
- Near-identical pages, such as location pages with one word changed.
Step 2: Add canonical tags
A canonical tag goes in the <head> of the page and must use the full absolute URL. Put it on the duplicate, pointing at the preferred URL, and also on the preferred URL, pointing at itself.
<!-- On https://www.example.com/services/?ref=footer -->
<link rel="canonical" href="https://www.example.com/services/">
<!-- On https://www.example.com/services/ (self-referencing) -->
<link rel="canonical" href="https://www.example.com/services/">
For PDFs and other non-HTML files, you can send the canonical as an HTTP header instead:
Link: <https://www.example.com/guides/pricing.pdf>; rel="canonical"
Use one method per URL, not both, because Google warns that mixing the tag and the header makes mistakes more likely.
On WordPress, open the page in the editor and find the Advanced tab of your SEO plugin's box, where there's a Canonical URL field. Leave it blank to keep the default self-reference, or enter the preferred URL for a duplicate.
- Enter the full preferred URL only on duplicate pages. Leave it empty on the main page.
- Save, then view the page source to confirm one canonical tag appears.
On Shopify, Squarespace and Wix, canonicals are generated automatically and usually point to the clean URL. If they're wrong, the fix is usually a theme or app issue, so check with your developer.
Rules that trip people up:
- Use absolute URLs (
https://www.example.com/page/), not relative paths (/page/). - Don't point canonicals at URLs that redirect, return 404 or carry
noindex. - Only one canonical per page. Two conflicting tags (often one from the theme and one from a plugin) are often ignored.
- Keep the canonical in the raw HTML
<head>. Changing it with JavaScript after load makes your preference less clear.
Step 3: Use redirects for true duplicates
If a duplicate URL serves no purpose, such as the http version of your site or an old URL after a redesign, redirect it instead of tagging it. A permanent 301 redirect is a strong canonical signal, and it also sends visitors to the right place. Here's an Apache .htaccess example that forces HTTPS and www:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
Many hosts and CDNs have a one-click setting in their dashboard for forcing HTTPS and choosing www or non-www. Use that if it exists, since it's harder to get wrong than a handwritten rule.
Keep canonical tags for duplicates that need to exist for users, like filtered views or tracking URLs. Use redirects for duplicates that shouldn't exist at all.
Step 4: Fix the "Google chose different canonical" cases
When you've declared a canonical and Google still picks another URL, it's because your other signals point somewhere else. Google weighs redirects, canonical tags, internal links, sitemaps and hreflang together, plus the content itself. Check each one in turn, starting with the content itself.
- The two canonicals disagree, so Google is overriding your tag.
- Often the real cause is two pages covering the same thing.
Work through this checklist:
| Signal | What to check | Fix |
|---|---|---|
| Content | Are the two URLs nearly identical? | Merge them and redirect one, or make each clearly distinct |
| Internal links | Do menus, breadcrumbs or posts link to the other URL? | Update links to point at your preferred URL |
| Sitemap | Does the sitemap list the non-preferred URL? | List only preferred, canonical URLs |
| Redirects | Does the preferred URL redirect anywhere, or does the other one redirect to it inconsistently? | Make redirects point one way, in one hop |
| Protocol and certificate | Is the preferred URL on HTTPS with a valid certificate and no mixed content? | Fix the certificate; redirect HTTP to HTTPS |
| hreflang | Do hreflang tags reference the other URL? | Point hreflang at the canonical URLs only |
| Duplicate tags | Does the page output two canonical tags? | Remove the extra one from theme or plugin |
The most common case on small sites is two pages that really are the same. Think of a 2025 and a 2026 version of the same checklist, or two service pages with the same copy, and Google won't index both. Merge them into one page and redirect the other.
A less common but serious case is a canonical pointing to an unrelated or spammy domain. That can be a sign of hacked code injected into your <head>. If the Google-selected canonical is a site you don't recognize, check your theme and plugins for injected code right away.
Step 5: Line up internal links and sitemaps
Even with good canonical tags, internal links are a strong hint. If your menu links to /services but the canonical says /services/, you're sending mixed messages that Google has to sort out on its own.
- Search your site (or a crawl export) for links to non-preferred versions: plain
http, missingwww, missing trailing slash, parameters. - Update menus, footers, breadcrumbs and in-content links.
- Check your XML sitemap. Every URL in it should return 200 and be its own canonical.
- If you run a bilingual site, confirm each language page has a self-referencing canonical and hreflang tags that point to the other language's canonical URL.
<!-- On https://www.example.com/services/ -->
<link rel="canonical" href="https://www.example.com/services/">
<link rel="alternate" hreflang="en" href="https://www.example.com/services/">
<link rel="alternate" hreflang="es" href="https://www.example.com/es/servicios/">
Don't canonicalize your Spanish page to the English one. Translations aren't duplicates, and a cross-language canonical can drop the translated page from search.
Step 6: Don't use these as canonical fixes
Google's docs warn against several shortcuts:
- robots.txt blocking. Google can't see the canonical tag on a blocked URL, and the blocked URL can still be indexed without content.
noindexon duplicates. It removes the page entirely rather than consolidating signals. Userel="canonical"instead. See our robots.txt and noindex guide for whennoindexis the right tool.- The Removals tool. It hides all versions of a URL temporarily. It doesn't choose a canonical.
- Canonicals pointing at URL fragments (
#section). Google ignores fragments.
Still not working? Common causes
| Symptom | Likely cause | Fix |
|---|---|---|
Google picks the http version |
Invalid HTTPS certificate, mixed content, or sitemap lists http URLs |
Fix the certificate; force HTTPS; update the sitemap |
Google picks non-www when you want www |
Internal links and redirects are inconsistent | Pick one version; redirect the other; update links |
| Product pages canonicalized to a category | Theme sets the canonical to the collection URL | Fix the theme template so products self-canonicalize |
Paginated pages (/page/2/) canonical to page 1 |
Plugin setting | Let each paginated page self-canonicalize |
| Spanish page canonicalized to English | Plugin or template copies the English canonical | Self-canonical on each language plus hreflang |
| Two canonical tags in the source | Theme and SEO plugin both output one | Disable one of them |
| Canonical changes after page load | JavaScript rewrites the tag | Set it server-side in the HTML |
| Canonical points to an unknown domain | Hacked or injected code | Clean the site, change passwords, then request indexing |
| Many near-identical location pages | Template pages with a city name swapped | Add unique content or consolidate |
| Status stays after fixes | Google hasn't recrawled yet | Request indexing on key URLs; wait about two weeks |
If you're seeing Crawled - currently not indexed on the pages you consolidated into, the issue may be content quality rather than canonicals. Our guide to fixing Crawled – currently not indexed covers that.
How to confirm it's fixed
- View the page source of both the preferred and duplicate URLs. Confirm exactly one canonical tag with the right absolute URL.
- Run URL inspection on the duplicate and click Test live URL. The live result should show your canonical as the user-declared one.
- Request indexing on the preferred URL.
- Re-inspect after about two weeks. Google's troubleshooting docs say it can keep pages grouped as duplicates for up to around two weeks after you fix things. You want Google-selected canonical to match User-declared canonical.
- Check Page indexing. URLs should move from the Duplicate reasons into Alternate page with proper canonical tag (for duplicates) or Indexed (for preferred URLs).
- Click Validate fix on the Google chose different canonical reason once your changes are live.
Large sites may take longer, because Google has to recrawl many URLs before the report catches up.
FAQ
Is "Alternate page with proper canonical tag" an error?
No. It means your canonical tags work, and those URLs are correctly pointing at their main versions, which are indexed.
Can I force Google to use my canonical?
No. A canonical tag is a strong hint, not a command, and you make it stick by having every other signal agree, especially redirects, links and sitemaps.
Should every page have a self-referencing canonical?
Yes, it's good practice. It protects against parameter and tracking URLs being treated as separate pages.
Does duplicate content cause a penalty?
Not in the usual sense, since Google simply picks one version to show. The cost is that the wrong URL might be shown, or signals get split across copies.
Should I canonicalize my Spanish pages to the English ones?
No. Translated pages aren't duplicates. Give each language a self-referencing canonical and connect them with hreflang.
Stuck on this one? We fix these for clients every week. Book a free audit