# Alternate page with proper canonical tag: what it means and when to fix it

**Report:** Page indexing · **Status:** Not indexed · **Source:** Google Search Console

<!--QA-->
> **Quick answer:** Search Console shows "Alternate page with proper canonical tag" when a URL points its rel=canonical at a different page and Google agrees with it. The alternate is left out of the index on purpose, so usually nothing is broken. Fix it only if a page you want ranked is listed, or the count jumps after a deploy.
<!--/QA-->

"Alternate page with proper canonical tag" is one of the reasons Google Search Console lists under **Why pages aren't indexed** in the Page indexing report. It sounds like an error. Most of the time it is the opposite: it is Google confirming that your canonical tags are doing their job.

## TL;DR

- **What:** The URL has a `rel=canonical` pointing at a different page, and Google accepted that page as the canonical.
- **Is it a problem?** Usually not. The URL is a duplicate or near-duplicate, and it is excluded from the index because you asked for that.
- **When to act:** A page you actually want to rank is on the list, the count jumps sharply after a deploy or theme change, or your sitemap and internal links point at these alternates instead of the canonicals.

## What does "Alternate page with proper canonical tag" mean?

Every indexable page should have one canonical URL, the version Google should index and rank. When several URLs show the same content, you mark the preferred one with a canonical tag:

```html
<!-- On https://example.com/products/linen-shirt?variant=4412 -->
<link rel="canonical" href="https://example.com/products/linen-shirt">
```

Search Console reads that tag, compares the two pages, and if it agrees that they are the same content, it indexes the canonical and records the other URL as an **alternate**. The word "proper" is the important part: the tag is valid, and Google followed it.

So the status means three things at once:

1. This URL is **not** in Google's index.
2. It declares a different URL as its canonical.
3. Google **agreed** with that declaration.

If Google had disagreed, you would see a different status instead: "Duplicate, Google chose different canonical than user". That one deserves a closer look.

## Is "Alternate page with proper canonical tag" an error?

No. It sits under the "Not indexed" heading because the URL is, by design, not indexed. Google's own Page indexing help says the alternate points to a canonical that is already indexed, so there is nothing you need to do.

A large count is normal on any site with URL variations. A store with 500 products and four variants each can easily show 2,000 alternate URLs and be perfectly healthy. The number itself tells you nothing; the URLs in the list do.

## Which URLs normally show up as alternates?

These are expected and correct. Leave them alone.

- **Parameter URLs:** tracking tags (`?utm_source=`, `?gclid=`, `?fbclid=`), sort and filter parameters (`?sort=price`, `?color=blue`), session or referral IDs.
- **Product variants:** `?variant=` URLs that all canonicalize to one product page.
- **Duplicate paths to the same content:** a product reachable at both `/collections/shirts/products/linen-shirt` and `/products/linen-shirt`.
- **AMP pages and separate mobile URLs** (`m.example.com`) that canonicalize to the regular page. These are the two examples Google's own help page gives.
- **Print, share or preview versions** of an article.
- **HTTP or trailing-slash variants**, when your canonical tags consolidate them but redirects do not.

## How do I fix "Alternate page with proper canonical tag"?

For the expected URLs above, there is nothing to fix. For everything else, work through the list in this order.

1. **Export the examples.** In Search Console, open **Pages**, click the **Alternate page with proper canonical tag** reason, and export the table.
2. **Group the URLs by pattern.** Most lists collapse into a handful of patterns: a parameter, a variant, a path prefix. Look at patterns, not individual URLs.
3. **Find any real content page.** A blog post, a category page, a product, a location page: anything you expect to see in search results. Those should not be here.
4. **Inspect it.** Paste the URL into **URL Inspection** and compare **User-declared canonical** with **Google-selected canonical**. If the page points at a different URL on purpose, it is working. If it points somewhere by mistake, fix the tag.
5. **Make the canonical self-referencing.** A page that should rank needs a canonical pointing at its own URL. Then click **Request indexing**.
6. **Clean up the signals around it.** Your XML sitemap should list canonical URLs only, and internal links should point to canonicals, not to parameter or variant URLs.

## When is "Alternate page with proper canonical tag" a real problem?

These patterns mean a template or plugin is canonicalizing pages it should not:

- **Every page canonicalizes to the homepage.** A hardcoded `<link rel="canonical" href="https://example.com/">` in a shared layout. The whole site shows up as alternates of `/`, and only the homepage ranks.
- **Paginated pages canonicalize to page 1.** `/blog/page/2` pointing at `/blog` hides every post that is only linked from later pages. Each page in a series should canonicalize to itself.
- **Language versions canonicalize to the default language.** A French page pointing its canonical at the English page drops the French page from the index, and it contradicts any hreflang tags. Each language version canonicalizes to itself.
- **Staging or old-domain canonicals.** A canonical still pointing at a staging host or a pre-migration domain.
- **A sudden jump in the count after a release.** Canonical tags are almost always emitted by a template, so one bad change affects thousands of URLs at once. Compare the report's chart with your deploy dates.

## What does this look like on Shopify?

Shopify stores are among the most common sites to show a long list here, and almost all of it is expected. Themes output the canonical from Liquid:

```liquid
<link rel="canonical" href="{{ canonical_url }}">
```

`canonical_url` strips variant parameters and collection prefixes, so:

- `/products/linen-shirt?variant=4412` canonicalizes to `/products/linen-shirt`
- `/collections/summer/products/linen-shirt` canonicalizes to `/products/linen-shirt`

Every one of those URLs appears as an alternate, which is Shopify working correctly. Two things are worth checking. First, that your theme's internal product links use `product.url` rather than a collection-scoped URL, so Google crawls the canonical version directly. Second, that no app or custom snippet has added a second canonical tag. Two conflicting canonicals on one page make Google ignore both.

## What does this look like on WordPress?

The canonical is usually emitted by an SEO plugin (Yoast, Rank Math, All in One SEO) or by WordPress core if no plugin is active. Typical alternates are comment-reply links (`?replytocom=`), tracking parameters, and AMP versions, all of which are fine.

Problems usually come from a plugin setting, not from core: a canonical manually set on a page and then copied when the page was duplicated, or two SEO plugins active at the same time, each printing its own canonical. View the page source and search for `rel="canonical"`. There should be exactly one.

## Should I click "Validate fix" for this status?

Not for expected alternates. Validation checks whether the listed URLs are now indexed. A correctly canonicalized alternate will never be indexed, so validation reports **Failed** and the status looks worse than it is. Only start validation after you have fixed pages that should have been canonical, and expect it to take up to two weeks, sometimes longer.

## How do I check the canonical tag on a page?

- **View source** and search for `rel="canonical"`. There should be exactly one, it should be an absolute URL, and it should return 200.
- **URL Inspection** in Search Console shows both the canonical you declared and the one Google selected.
- **Lighthouse** runs a `canonical` audit that catches invalid tags: a relative URL, a canonical pointing to a different domain, or several conflicting canonicals. It cannot see which canonical Google picked, so pair it with URL Inspection. See [Document does not have a valid rel=canonical](/audits/canonical-tag) for that audit.

## Related

- [Document does not have a valid rel=canonical](/audits/canonical-tag), the Lighthouse audit for the tag itself
- [Hreflang](/audits/hreflang-tag), where language versions and canonicals must agree
- [Avoid multiple page redirects](/audits/avoid-multiple-redirects), the other way to consolidate duplicate URLs

---

Audit your URL at https://lighthouse-md.com.
