Canonical Tag Checker
Paste a page and see every canonical signal it sends, and which of them are arguing with each other.
Nothing you type here is uploaded, stored or sent anywhere. It all runs in your browser.
The combination that deletes pages: canonical plus noindex
Put noindex and a canonical pointing at another URL on the same page and you have given Google two contradictory instructions: "do not index this" and "treat this as the same page as that one". Google resolves the contradiction by picking one, and which one it picks is not something you control. The documented risk is that the noindex gets carried across to the canonical target — so the page you were trying to consolidate into drops out of the index as well.
This happens most often by accident, when a plugin adds canonicals site-wide and someone separately noindexes a template. If you want a page out of the index, use noindex and no canonical. If you want it consolidated, use a canonical and let it be indexable. Never both.
A canonical is a hint, and hints get ignored
Google treats the canonical tag as one signal among several — internal links, the sitemap, redirects, hreflang, which version has the links. If your other signals disagree with your canonical, Google will often go with them and Search Console will report the page as "Duplicate, Google chose a different canonical than user". That message is not a bug in the tag. It means the rest of your site is voting the other way.
The fix is consistency rather than force. Link internally to the canonical version only. Put only the canonical version in the sitemap. Make sure the canonical URL returns 200 and not a redirect. Then the tag stops being a lone dissenting vote.
The quiet mistakes
- A relative canonical.
href="/pricing"is legal and resolves against the current URL — or against<base>if the page has one, which is where it goes wrong. On a staging domain it canonicalises to staging. - A canonical in the body. Only the
<head>counts. A tag pushed below the first body content by an unclosed element earlier in the head is ignored completely, and DevTools will not show you that because the parser repairs it. - Two canonicals. A theme adds one, a plugin adds another, and Google ignores both rather than picking. This is the most common canonical bug on WordPress sites and it produces no error anywhere.
- A canonical that disagrees with hreflang. Every language version must canonicalise to itself. A Russian page whose canonical points at the English URL is asking not to be indexed, and the hreflang cluster will not save it.
- A trailing-slash or case difference.
/Pricing/and/pricingare different URLs to Google. A canonical that differs from the served URL by nothing but punctuation usually means two systems disagree about URL formatting, and the redirect that should resolve it is missing.
What this tool does not check
It reads the HTML you paste. It cannot fetch the canonical target to see whether that URL actually returns 200, is itself canonicalised somewhere else, or redirects — and a canonical pointing at a redirect is a real and common problem. It also cannot see a canonical injected by JavaScript after load, which Google will see on the render pass and which will not appear in view-source. If you suspect that, check the rendered HTML in Search Console's URL Inspection instead.
Questions people ask
Does every page need a self-referencing canonical?
It is not required, and Google works fine without one. It is still worth having, because it settles the URL-variant question before it starts: session parameters, tracking parameters, uppercase paths and trailing-slash variants all resolve to the one URL you nominated. The cost is nothing and the failure mode it prevents is duplicate content you did not know you were generating.
Why does Search Console say Google chose a different canonical?
Because your other signals outvoted the tag. Look at what you link to internally, what is in the sitemap, and whether the canonical URL redirects. It also happens when the two pages really are near-identical and Google has picked the one with more links — in which case the tag is not wrong, the site structure is.
Can a canonical point to a different domain?
Yes, and it is the correct answer for syndicated content — a partner republishing your article should canonicalise to your original. What it cannot do is move a site. For that you need 301 redirects. A cross-domain canonical with no redirect leaves both URLs live and relies entirely on Google agreeing with you.
Do canonical tags pass link equity?
Broadly yes. Google consolidates the signals from the duplicate onto the canonical, which is the whole point of the tag. It is not identical to a 301 — a redirect is an instruction and a canonical is a hint — but where Google accepts the canonical, the links pointing at the duplicate count towards the canonical version.
Should paginated pages canonicalise to page one?
No. That was common advice years ago and Google has said explicitly that it is wrong. Page two is not a duplicate of page one — it has different content. Each paginated page should canonicalise to itself. Canonicalising them all to page one tells Google the rest of your archive does not exist.
Is the HTML I paste sent anywhere?
No. The parsing happens in your browser and this page makes no network requests. Paste a staging page or a logged-in page with a clear conscience.
Related tools
Consolidating signals only helps if there are signals
A canonical decides where authority lands. Whether there is any to land is a different question, and the answer is links.