Alternate page with proper canonical tag: is it a problem?
·4 min read
"Alternate page with proper canonical tag" is a Search Console status for a URL that points at another page with rel=canonical, where Google agreed and indexed that other page. In almost every case the status means your canonicals work, and Google's help page says there is nothing you need to do. It becomes a problem only when the listed URL is a page you want in search results. Then the canonical on that page points at the wrong URL, and you fix the tag.
What "alternate page with proper canonical tag" means
The status sits in the Page indexing report under "Why pages aren't indexed", which makes it look like an error. It is not one. Google's Page indexing report help describes the URL as an alternate of another page, such as an AMP page with a desktop canonical or a mobile version of a desktop canonical. The alternate correctly points to the canonical, the canonical is indexed, and Google says there is nothing you need to do.
Compare it with its siblings. If the URL declared no canonical and Google picked one anyway, you get duplicate without user-selected canonical. If you declared one and Google overruled it, you get "Duplicate, Google chose different canonical than user". This status is the one where your signal won.
A big count is normal. A shop with 300 products and a few sort and tracking parameters can easily list thousands of alternates.
Common sources of alternate pages
Most URLs in this bucket are variants you created on purpose, or ones your marketing tools create for you.
| Source | Alternate URL | Canonical it points to |
|---|---|---|
| Tracking links | /pricing?utm_source=newsletter |
/pricing |
| Ad click IDs | /shoes/?gclid=abc123 |
/shoes/ |
| Sort and filter parameters | /shoes/?sort=price-asc |
/shoes/ |
| AMP | /news/story.amp |
/news/story |
| Separate mobile URLs | https://m.example.com/about |
https://www.example.com/about |
| Session or referral IDs | /signup?ref=partner42 |
/signup |
Google's canonicalization guide uses the same ?gclid= example and says a separate mobile site should link both ways, with rel="alternate" on the desktop page and rel=canonical on the mobile page.
Hreflang variants are the exception. Google's help says Search Console does not detect alternate language pages, so a correct French or German version should not land here. If /fr/tarifs shows up as an alternate of /pricing, its canonical points across languages. The same guide tells you to use a canonical in the same language. Give each language version a self-referencing canonical and let hreflang connect them. The hreflang checker flags canonical conflicts in a page's hreflang set.
When alternate page with proper canonical tag is a problem
It is a problem when a URL you want ranked appears in the list. Export the example URLs and scan for clean paths with no parameters. Those are the ones to worry about.
Patterns I see on real sites:
- Every blog post canonicalizes to the blog index, because a theme hard-coded the canonical in a shared template.
- Product pages point at the category page, so only the category is indexed.
- A staging canonical, such as
https://staging.example.com/pricing, shipped to production. - Pages 2 and up of a paginated list point at page 1. Google treats each page in a series as its own page, so each one needs its own canonical.
A sudden jump in the count after a deploy is the other warning sign. Parameters grow slowly. Template bugs move thousands of URLs overnight.
How to check which URL Google picked
URL Inspection shows both your canonical and Google's choice.
- In Search Console, open Indexing > Pages and click "Alternate page with proper canonical tag".
- Click an example URL and inspect it.
- Under Page indexing, read "User-declared canonical" and "Google-selected canonical". For this status the two match, and neither is the inspected URL.
- Ask whether that canonical is the page you want in results. If yes, move on. If not, the tag is wrong.
The report shows up to 1,000 example URLs. Sort the export by path pattern so one template bug reads as one row, not 20,000.
How to fix a wrong canonical
Change the tag on the page that should rank so it points at itself.
<!-- On https://www.example.com/blog/canonical-guide -->
<link rel="canonical" href="https://www.example.com/blog/canonical-guide" />Use the absolute URL with the right scheme and host. Fix it in the template, not page by page, since a template bug caused the problem. Then:
- Make internal links and the sitemap list the self-canonical URL, so your signals agree.
- Request indexing in URL Inspection for a few key pages to speed up recrawl.
- Watch the count. Fixed pages should leave this status and appear as indexed.
If a fixed page then lands in "Crawled" or "Discovered, currently not indexed", that is a quality or crawl question, covered in our post on discovered, currently not indexed.
Do not touch correct alternates. Removing canonicals from utm and sort URLs only hands the choice back to Google, and adding noindex to them adds nothing.
Check a page's canonical before Google does
Our Indexing & Canonical Checker reads the canonical a URL declares in its HTML and in its Link header. It tells you whether the canonical is self-referencing or points at another URL, and flags several different canonicals, a canonical outside <head>, or HTML and header canonicals that disagree. It then fetches the target and reports one that errors, redirects, carries noindex, or forms a loop or chain. The same run covers HTTP status, robots.txt, meta robots and X-Robots-Tag, plus snippet controls. A run costs 8 credits.
Run it on a URL that should rank and appears in this status. "Canonical points at another URL" confirms the template bug. The checker reads only what the page declares. It cannot tell you which canonical Google chose, and it does not render JavaScript, so use URL Inspection for Google's view.