Skip to content

Report this document

Describe the issue — this goes directly to our review queue.

0/500

Why Google will not index a URL whose canonical tag points at another page

Google treats rel=canonical as a hint that another URL should represent this document in Search. When the hint is clear and the target is a healthy indexable page, Google usually stores the target and skips the source. URL Inspection then shows a user-declared canonical that is not the URL you pasted, and Search results show the other address. The tag is not a law: Google can pick a different canonical when signals fight. You still should not expect the source URL to appear as its own result while you are telling Google to prefer someone else. Submitting the source for indexing does not override a working canonical. Check the live HTML, the HTTP Link header, the sitemap, and internal links. If they disagree, Google may ignore the tag. A canonical that points at a 404, a redirect, or a noindex URL is a broken hint, and Google often discards it.

How rel=canonical became a hint Google can refuse

Google, Yahoo, and Bing introduced rel=canonical in 2009 so publishers could name a preferred URL among duplicates: HTTP versus HTTPS, trailing slash, tracking parameters, printer views, sort orders. The annotation was always a hint. Engines kept the right to pick another URL when the hint looked wrong.

Google’s 2013 post on common rel=canonical mistakes already warned against pointing the tag at a 404, a soft 404, or a URL with noindex. Those targets cannot carry the document in Search, so the hint fails. Later Search Console coverage labels made the two live outcomes visible. “Alternate page with proper canonical tag” means Google agreed with you: the source is a duplicate, the target is the one on Google. “Duplicate, Google chose different canonical” means Google disagreed: it stored some other URL than the one in your tag.

Shop platforms and SEO plugins spread accidental cross-canonicals. A filter URL canonicalizes to a category. A paginated page canonicalizes to page 1 and then Google drops page 2+. A CMS writes the homepage as canonical on every template. Parameter URLs all point at a clean URL that does not contain the filtered content. In each case the source URL is asking not to be the indexed document.

The common SERP answer is right: the tag is a hint; Google may pick another URL; Inspection shows user-declared versus Google-selected canonical. What those pages under-serve is the official consolidation guidance, the sitemap and internal-link audit against the tag, and the failure mode where the canonical target is a 404, a redirect, or noindex. Google’s canonicalization docs are the rule sheet for that audit.

What a wrong canonical costs when you still want that URL in Search

If the business needs /blue-widgets in Google and the HTML canonical says /widgets, Google is being told to show /widgets. Ads, merchandising, and Search Console Performance will attach to the target. The filtered URL can look “not indexed” forever while the team pays for recrawl. Recrawl will refetch the same hint.

The other failure is worse: you wanted consolidation, Google ignored a broken target, and both URLs compete. A canonical to a redirect or a noindex URL often dies as a hint. Then you get duplicate titles in Search, split links, and a Coverage row you did not plan for.

Tokens spent on the source URL are tokens spent on a document you marked as secondary. SpeedyIndex still charges only for indexed URLs, and it will not magically index a URL Google is consolidating away. Precheck exists to catch dead and already-indexed rows. It cannot rewrite your <link rel="canonical">.

If the live HTML says the canonical is another page, do not buy a Google submit on the source and expect a separate result. Inspection will keep showing the target. Fix the tag, or accept that the target is the URL in Search. We refund unindexed Google URLs on day 7 because we do not sell a fight with your own canonical.

— SpeedyIndex team

Decide first: should this URL exist in the index as itself? If yes, self-canonical and consistent links. If no, leave the tag, drop the source from the sitemap, and stop submitting it.

Workflow: prove the tag is why Google skipped this URL

Work one URL at a time. Write down the source, the tagged target, and the Google-selected canonical. They are allowed to be three different strings.

  1. Read the HTML canonical. Action: view source on the live URL. Tool: browser view-source or curl. Setting: <head> <link rel="canonical" href="...">. Observable: absolute target URL. When: first, before Inspection. Success: you know the declared target. Failure: missing tag, bad relative URL, or several canonical tags (Google may ignore the set).

  2. Read the HTTP header canonical. Action: inspect response headers. Tool: curl -I. Setting: Link with rel="canonical". Observable: header target matches or fights the HTML tag. When: HTML looks fine and GSC disagrees, or the file is a PDF. Success: one target. Failure: header points at A, HTML at B. Google may discard both.

  3. Compare rendered DOM versus raw HTML. Action: check a JS-injected canonical. Tool: GSC live test HTML plus the browser DOM. Setting: raw versus rendered. Observable: Googlebot Smartphone sees the same href. When: the site writes head tags in JS. Success: both match. Failure: raw self-canonical, rendered points away, or the reverse.

  4. Inspect user-declared versus Google-selected canonical. Action: paste the source URL. Tool: GSC URL Inspection. Setting: indexed results plus live test. Observable: both canonical fields. When: after you know the tag. Success for this diagnosis: Google-selected is the other page. If Google-selected is still the source, other signals won and the hint was ignored.

  5. Fetch the canonical target. Action: request the target URL. Tool: curl and a browser. Setting: no cookies that change the response. Observable: status, robots, canonical on the target. When: every time the source points away. Success: 200, indexable, self-canonical, matching content. Failure: 404, 410, 451, noindex, or a page with redirect error as the target. A redirect target is a second hop Google may refuse as the hint.

  6. Diff sitemap membership. Action: search both URLs in the sitemap index. Tool: sitemap.xml plus nested files. Setting: exact paths, trailing slashes. Observable: source listed, target listed, both, or neither. When: after Inspection. Success: sitemap lists only the URL you want stored. Failure: sitemap still pushes the duplicate while the tag points away.

  7. Diff internal links. Action: search templates, nav, and body links. Tool: crawl export or CMS menus. Setting: count links to source versus target. When: sitemap is clean and Google still disagrees. Success: links support the same URL as the tag. Failure: the nav prefers the duplicate. Google may follow the graph.

  8. Check which URL is actually in Google. Action: test source and target. Tool: Inspection on both, plus a Google index checker that does not need GSC verification. Setting: exact URLs, Google engine, date stamp. Observable: target in / source out, both, or neither. When: you need a record outside Coverage. Checking does not submit and does not override the hint.

  9. Repair one signal set, then recrawl the URL you want. Action: pick one preferred URL. Tool: CMS canonical field, headers, sitemap, internal links. Setting: self-canonical on the preferred URL; duplicates point at it or 301 to it. Observable: live HTML and headers agree. When: after steps 6–7. Success: user-declared and Google-selected converge. Failure: a leftover 301 the other way, or noindex on the new target.

  10. Retest on a calendar. Action: inspect both URLs again. Tool: Page Indexing plus the checker. Setting: day 3 and day 7 after recrawl. Observable: “Alternate page with proper canonical tag” if you wanted consolidation; source “on Google” only if you self-canonicalized. Failure: still “Google chose different canonical.” Re-read links, hreflang, and near-duplicate bodies before another submit.

Self-canonical versus pointing away versus Google’s pick

Hold these states:

  • Self-canonical, aligned links. HTML canonical equals this URL. Sitemap and internal links agree. Google often indexes this URL if it is eligible. Submit this one if it is missing.

  • Canonical points at another healthy URL. Source tells Google to store the target. If Google agrees, the source does not appear as its own result. Submitting the source asks Google to recrawl a duplicate hint. Expect the target in Search.

  • Canonical points at a dead or blocked URL. Target is 404, redirect chain, or noindex. Google may ignore the hint and pick some other URL, including the source. You get neither clean consolidation nor a predictable index row. Fix the target first.

  • Google-selected canonical differs from the tag. Inspection names a third URL: HTTPS over HTTP, a parameter-free twin, a localized version, or a stronger duplicate. Your submit of the tagged source will not drag Google off that pick until you change the graph: links, sitemap, redirects, content overlap.

  • Two engines, two picks. Bing may honor the tag while Google does not, or the reverse. Index status is per engine. Do not use a Bing screenshot as proof Google stored the source.

Troubleshooting a URL that will not index because of canonical

Inspection: alternate page, proper canonical. Google obeyed you. Stop submitting the source. If you actually want the source in Search, change the tag to self-canonical and support it with links.

Inspection: duplicate, Google chose different canonical. The hint lost. Audit sitemap, hreflang, internal links, and whether the tagged target is weaker or blocked. Do not add a second canonical tag.

Canonical to homepage on every template. A CMS default. Google may treat articles as duplicates of /. Set per-URL self-canonicals.

Filter and sort URLs point at a category that lacks the filtered text. Google stores a category that does not match the query. Either self-canonical the valuable filter URL and give it real content, or 301 useless combinations and keep them out of the sitemap.

Canonical to a redirect. You asked Google to index a URL that immediately leaves. Replace the target with the final 200 URL, or 301 the source to that final URL and drop the tag fight.

Canonical to noindex. You pointed at a URL that forbids storage. Google cannot use that target as the indexed document. Remove noindex on the true preferred URL, or point canonical at an indexable URL.

Canonical to 404/410. Same class as noindex: the target cannot represent the content. Google may ignore the tag. Restore the target or retarget the hint.

HTML and header disagree. One tag, one story. Delete the extra signal.

hreflang cluster with a wrong canonical. Each locale should canonical to itself, then hreflang across the set. Point every locale at the US URL and Google may drop the others.

You paid to index the source anyway. If Google still agrees with the tag, the source stays out. Pay-per-Result refunds an unindexed Google URL on day 7. Spend the next tokens on the indexable target.

Three illustrative scenarios (not real clients)

Illustrative scenario 1 — Faceted shop URL. A store advertises /shoes?color=red in a campaign. The template canonicalizes every facet to /shoes. Google indexes /shoes. The red facet never appears as a result. Request indexing on the facet recrawls the same tag. The fix is a self-canonical on /shoes?color=red plus indexable content, or an acceptance that /shoes is the only Search URL.

Illustrative scenario 2 — Staging domain leftover. A headless CMS writes staging.example.com/article as canonical on production. Production URLs look live in the browser. Google-selected canonical points at staging, which is noindex or auth-walled. Google ignores the broken target or stores nothing useful. Search stays empty until production self-canonicals.

Illustrative scenario 3 — Parameter twin Google prefers. The tag on /blog/post points at /blog/post. Internal links and ads use /blog/post?utm_source=email. Google-selected canonical becomes the parameter URL or a slash variant. Inspection says Google chose a different canonical. The publisher keeps submitting /blog/post and wonders why Coverage disagrees. Align links and 301 the twins; do not add more tags.

Illustrative model: tag, graph, and Google’s pick

Illustrative model (not a live site, not a client crawl):

URL A  (the address you want in Search)
    HTML rel=canonical --> URL B
    sitemap lists A, B, or both
    internal links --> A and/or B
    HTTP status of B --> 200 | 404 | redirect | noindex

Google-selected canonical
    = B     if the hint is clean and B is indexable
    = A     if the hint is rotten or the graph prefers A
    = C     if a third duplicate is stronger (HTTPS, locale, slash)

Search result URL = Google-selected canonical
Source A as its own result: only if Google-selected is A

Submit-to-index acts on the fetch. It does not redraw this diagram.

FAQ

Will Google index a URL whose canonical tag points at another page?

Usually no, not as its own result, when Google accepts the hint and the target is indexable. Google stores the target. The source can still be crawled.

Is rel=canonical a directive?

No. It is a hint. Strong, consistent signals make Google likely to follow it. Conflicting sitemaps, links, or a bad target make Google likely to ignore it.

What if Google-selected canonical differs from the user-declared tag?

Believe Inspection. Change links, sitemap, redirects, and content until Google-selected matches the URL you want. Repeating “Request indexing” on the discarded URL rarely flips the pick.

What happens when the canonical target is a 404?

Google may ignore the hint. The source might be indexed, or Google might pick a different duplicate. Point canonical only at a 200 indexable URL.

What if the canonical URL has noindex?

The target cannot be the indexed document. Google often discards that hint. Put noindex only on URLs you want out, and never as the canonical target for a URL you want in.

Can a sitemap entry override a canonical tag?

It can conflict with the tag and contribute to Google picking another URL. It does not force Google to index a duplicate you canonicalized away. List the preferred URL.

Do internal links to the duplicate force Google to index it?

They raise the chance Google ignores your tag or picks the duplicate. They do not guarantee a separate result. Align the graph with the tag.

Why does URL Inspection say Google chose a different canonical?

Because other signals beat the tag: HTTPS, a redirect, hreflang, duplicate body, or a cleaner URL. Open the Google-selected URL and compare.

Should I submit the duplicate URL for indexing anyway?

Not if you want consolidation. Submit the preferred URL after it is indexable. A submit on the duplicate recrawls a page that tells Google to look elsewhere.

How do I fix a shop filter page that canonicalizes to a parent?

Either give the filter URL its own content and a self-canonical, or accept the parent as the only indexed URL and stop advertising the filter in Search. Mixed signals produce mixed Coverage.

Forecast for canonical tags and Google indexing

CMS defaults will keep writing homepage and category canonicals on URLs that marketing wants in Search. Google will keep treating the tag as a hint and exposing the disagreement in Inspection. Expect more “not indexed” tickets that are actually successful consolidation.

Near-duplicate templates will push Google to lean on the graph more than on a single tag. If you want a specific URL in Search, make that URL the obvious one: self-canonical, sitemap row, internal links, 200, indexable. Paid indexing stays a process around eligible URLs. SpeedyIndex still rechecks Google on day 7 and refunds a miss. It will not become a canonical override.

The previous note in this series covers the step before this one: Why an IndexNow ping does not put the URL in Google search results. Read that first if you landed here on a related long tail.

About SpeedyIndex

SpeedyIndex is a Pay-per-Result indexing service for Google and Yandex. One indexed URL costs 100 tokens. If Google has not indexed the URL by day 7, those tokens refund; Yandex refunds on day 15. Standard submission fits a short list. Drip-feed paces large sets. Optional precheck removes 404, 410, 451, robots and noindex blocks, and URLs already indexed. Crawling uses Googlebot Smartphone. Domain verification in Search Console is not required. Trial balance is 200 tokens.

The product is submit, recheck, refund. It does not promise 100 percent indexing and it does not override rel=canonical. Run the checker on the URL you actually want stored. If that URL’s canonical points at another page, fix the tag before you spend tokens on a duplicate Google is unlikely to keep.