sfw/fix
Non-Indexable Canonical high

Canonical Points to a Non-Indexable URL

Your rel=canonical targets a URL that is noindex, redirected, 4xx/5xx, or robots-blocked, so Google ignores it and may pick its own.

What you see

URL Inspection > Page indexing
User-declared canonical: https://example.com/target
Google-selected canonical: (varies)
Indexing allowed? No: 'noindex' detected in 'robots' meta tag

What’s actually happening

You point rel=canonical at a URL you think is the strong version, but that target can't actually be indexed — it returns a 301, a 404, carries a noindex, or is blocked in robots.txt. Google reads the contradiction ("consolidate to this page, which I'm not allowed to index") and throws the whole canonical out. From there it either crowns its own pick or indexes nothing, and the equity you tried to funnel goes wherever Google decides.

Common causes

  • Canonical points at a URL that carries a noindex meta tag or X-Robots-Tag — the most common version of this conflict.
  • The canonical target 301/302-redirects somewhere else, so Google has to chase a hop instead of landing on a final URL.
  • The target returns 404/410 or a 5xx, often because a page was deleted or moved but the canonical reference in the template never updated.
  • The canonical URL is disallowed in robots.txt, so Google can't crawl it to confirm it's a valid consolidation target.
  • Protocol/host drift — canonical points at the http:// or www version that itself redirects to https://non-www, turning a one-line tag into a redirect chase.

How to fix it

  1. Inspect the target, not the sourceRun URL Inspection on the URL named in your rel=canonical. Check three lines: HTTP response (must be 200), 'Indexing allowed?' (must be Yes), and any redirect. If the target fails any of those, that's your bug — the source page is fine.
  2. Point canonicals only at 200, indexable, final URLsA valid canonical target returns 200, has no noindex (meta or X-Robots-Tag), isn't disallowed in robots.txt, and doesn't redirect. Curl it: `curl -sI https://example.com/target | grep -iE 'HTTP/|location|x-robots'`. Fix the target or re-point the canonical at whichever URL actually meets all four conditions.
  3. Resolve the redirect at the sourceIf the canonical target 301s to a new URL, update the tag to point straight at the final destination. Don't make Google follow canonical → redirect → page; it often just ignores the tag instead.
  4. Don't mix noindex and canonical on the same pageThese two directives fight: canonical says 'consolidate signals here,' noindex says 'drop this from the index.' Pick one intent per URL. If a page should be excluded, noindex it and remove the canonical pointing at it; if it should rank, drop the noindex.
  5. Re-crawl and confirm the matchAfter the target is clean, re-inspect the source URL and verify 'User-declared canonical' equals 'Google-selected canonical.' Then Validate Fix on the affected group. Reconciliation runs over a crawl cycle or two, not instantly.

Stop it recurring

Generate canonical tags from the same routing logic that issues your redirects, so a canonical can never point at a URL the server is already redirecting or noindexing.

Related errors