"Alternate page with proper canonical tag" is a reason in Google Search Console's Pages report. It means the URL declares a canonical pointing to a different page, Google accepted that canonical, and so Google indexed the other page instead of this one. In most cases this is exactly what you asked for and needs no fix: tracking parameters, sorted and filtered views, AMP and m-dot versions are meant to appear here. It needs attention only when a page you want in search shows up in the list, which means its canonical points somewhere it should not. This guide shows how to tell the two apart in ten minutes. For how canonicals work in general, read canonical tags explained.
Quick answer
- It is a "Not indexed" reason, not an error. Your canonical tag worked: Google indexed the URL it names.
- Expected entries: URLs with
?utm_,?sort=,?variant=and similar parameters, filtered views, AMP pages, m-dot mobile pages, print versions, syndicated copies. - Problem entries: pages you want in search, such as products, categories, articles, language versions or page 2 and beyond of a listing.
- Check the pattern: export the examples, group them by URL pattern and inspect one URL per group with URL Inspection.
- The fix for a problem entry is a self-referencing canonical on that page, usually a template or plugin setting.
- Do not chase a count of zero. A growing number here is normal for shops and sites with campaign links.
What does "Alternate page with proper canonical tag" mean?
Google's help for the Page indexing report describes this reason as a page that is an alternate of another page, which correctly points to the canonical, and says there is nothing you need to do. Three things are true at once:
- The URL has a canonical (in a
<link rel="canonical">tag or aLinkHTTP header) that names a different URL. - Google agreed. It checked its other signals, such as redirects, internal links, the sitemap and the content itself, and they did not contradict the tag.
- The canonical URL is indexed, and this URL is folded into it. Links and other signals pointing at this URL count towards the canonical.
The word "alternate" here does not mean rel="alternate" or hreflang. It means "another address for the same content".
How it differs from the other canonical statuses
| Status | Your page's canonical | What Google did | Usually |
|---|---|---|---|
| Alternate page with proper canonical tag | Another URL | Agreed and indexed that URL | Fine |
| Duplicate without user-selected canonical | None | Picked another URL itself | Fine if Google picked right |
| Duplicate, Google chose different canonical than user | Another URL or itself | Disagreed and picked a third | Needs a look |
The second and third are covered in duplicate without user-selected canonical. This one is the only status where Google did exactly what your tag said.
Which URLs are expected in this list?
These appear here by design, and you can leave them:
| URL pattern | Example | Why it is an alternate |
|---|---|---|
| Tracking parameters | /shoes/?utm_source=newsletter | Same page, tagged for analytics |
| Sort and view parameters | /shoes/?sort=price&view=grid | Same products in another order |
| Filter combinations you chose not to index | /shoes/?colour=red&size=42 | Thin variations of the category |
| Product variants | /products/runner?variant=4172 (Shopify) | One product page for all variants |
| Products under a category path | /collections/sale/products/runner (Shopify) | Canonical is /products/runner |
| AMP versions | /article/amp/ | Canonical is the normal article |
| Separate mobile URLs | m.example.com/shoes/ | Canonical is the desktop URL |
| Print or plain versions | /article/?print=1 | Same content, different layout |
| Syndicated copies | A partner's copy with a cross-domain canonical | Credit goes to your original |
If most of your list looks like this table, the status is telling you your canonicals work. A rising count usually just means Google discovered more parameter URLs, for example after a newsletter or an ad campaign.
For shops with filters, faceted navigation and parameter URLs explains which combinations to index and which to canonicalise.
Which URLs are a problem?
A URL in this list is a problem when you want it in search results on its own. The common cases:
- Every page canonicalised to the home page. A theme or custom template hard-codes the site URL in the canonical. The list then fills with articles, products and categories.
- Paginated pages pointing to page 1.
/blog/page/2/with a canonical to/blog/hides every post that is only linked from page 2 onward. Each page in a series should point to itself; see pagination after rel prev/next. - Language or country versions pointing to one language. A German page with a canonical to the English page is dropped, even with correct hreflang, because hreflang only works between pages that are each canonical.
- Distinct pages sharing a canonical. Two different products, colour pages you do want indexed, or city landing pages all pointing at one URL.
- Canonical to the wrong protocol or host, such as a staging domain or
http://, left over after a migration. The live URLs then appear as alternates of addresses that redirect. - A canonical set by hand and forgotten in an SEO plugin's Advanced tab after a content merge that never happened.
How to check the list, step by step
1. Export the examples
In Search Console, open Indexing → Pages, click "Alternate page with proper canonical tag" and export the examples. The report shows up to 1,000 URLs, which is enough to see the patterns.
2. Group them by pattern
Sort by URL and group: parameters, /amp/, /page/2/, language folders, product paths and so on. Most lists fall into two to four groups. Anything in the "expected" table above can be ticked off.
3. Inspect one URL per remaining group
Run URL Inspection on one example from each group. It shows "User-declared canonical" and "Google-selected canonical". For this status they are the same URL; the question is whether that URL is the one you want.
4. Check the page itself
The canonical checker reads every canonical tag in the page, so a second tag from a theme or plugin shows up, and tests whether the canonical URL answers 200 without redirecting. It also compares og:url and tries the http and www variants. Paste a problem URL from your export to see where its canonical points and which template produced it.
5. Fix the source, not the URL
Every problem group comes from one template, plugin setting or rule. Fix it there:
- Home page canonical on every page: switch the theme's canonical off and let your SEO plugin print it, or build it from the page's own URL.
- Pagination: set self-referencing canonicals on paginated pages. Yoast SEO and Rank Math do this by default; a custom template may not.
- Language versions: each language page gets a canonical to itself, plus hreflang to the others.
- Migration leftovers: correct the site URL setting or the base URL in your config.
Where each platform prints the canonical and how to change it is in canonical tags in WordPress and Shopify.
Should the page be a canonical, a redirect or noindex?
Some URLs in the list do not need to exist at all. Old URLs from a restructure that still return 200 with a canonical to the new page would be cleaner as 301 redirects, which visitors follow too. Pages with no search value, such as internal search results, are better with noindex than with a canonical. Canonical vs redirect vs noindex walks through the choice case by case.
How to verify the fix
- The canonical checker shows a self-referencing canonical on the fixed page, and exactly one canonical tag.
- URL Inspection → Test live URL shows the new user-declared canonical.
- Request indexing for the most important fixed pages.
- Over the following weeks, the fixed pages move from "Alternate page with proper canonical tag" to Indexed. The report updates only as Google recrawls each URL, and there is no "Validate fix" needed for a status that is not an error.
Common mistakes
- Trying to empty the list. Parameter and variant URLs will always be here. That is the canonical doing its job.
- Removing canonicals to "get pages indexed". A tracking-parameter URL without a canonical becomes "Duplicate without user-selected canonical" or, worse, a competing duplicate.
- Blocking the alternates in robots.txt. Google can no longer read their canonical, so their links and signals no longer consolidate.
- Adding
noindexto alternates as well. One tag says "drop this", the other "merge this into that". Pick one. - Reading "alternate" as hreflang. The status is about duplicates, not language versions, although wrong canonicals on language versions do land here.
Questions people ask
What does "Alternate page with proper canonical tag" mean?
It is a Search Console status, not an error: the page correctly points its canonical at another URL, and Google has accepted that choice, so this page is not indexed on its own. It is expected for parameter variants, AMP pages and filtered views. Only act if the list contains pages that should be indexed; then their canonical points somewhere it should not, often a template bug sending every page to the home page.
Do I need to fix "Alternate page with proper canonical tag"?
Usually not. If the listed URLs are parameter, variant, AMP, mobile or print versions of pages that are indexed, the status confirms your canonicals work. Fix it only for URLs you want in search on their own, such as products, articles, language versions or paginated pages, by giving them a self-referencing canonical at the template or plugin level.
Why did the number of alternate pages go up suddenly?
Most often because Google discovered new parameter URLs, for example from a newsletter, an ad campaign with tracking tags, a new filter or a feed. That is harmless if the URLs canonicalise correctly. A sudden jump right after a release or migration is different: inspect a few new examples in case a template now points real pages at the wrong canonical.
Does an alternate page pass link value to the canonical?
Yes, that is the point of the canonical. Google consolidates signals such as links from the duplicate URLs into the canonical URL it indexes. That is why a canonical is better than blocking duplicates in robots.txt: a blocked URL cannot be read, so its canonical is never seen and its links are not consolidated.