Canonical URL Checker
Follows the redirects, reads the canonical tag, and says whether it agrees with the URL that was actually served, the robots rules and og:url.
This tool needs JavaScript: the server makes the request, because a browser cannot read another site headers.
The exact URL to check. Redirects are followed and listed, because the canonical has to agree with where you end up rather than where you started.
This is one of the few tools here that asks the server rather than your browser, because a browser cannot do it. Nothing you put in is stored; the request is rate limited by address and the answer is not cached.
A canonical tag says “this is the original, index that one instead”. Most of the time it should point at the page it is on, and most of the time that is exactly what it does. The interesting cases are the other ones, and they are invisible without following the redirects first.
This fetches the page, follows every redirect, and then asks whether the canonical agrees with where you actually ended up.
How to use
Put in the exact URL. The redirect chain is part of the answer: a canonical has to agree with the page that was finally served, not the one you asked for.
Example
Asked for https://example.com/blog/post
Ended at https://www.example.com/blog/post/
Redirects 2, which the canonical has to agree with
1 https://example.com/blog/post
2 https://www.example.com/blog/post/
Status 200
Canonical
href https://example.com/blog/post
absolute yes
self-referencing no: this page says the original is somewhere else, so it is
asking not to be indexed on its own
Indexing
meta robots not set, which means index, follow
That is the common failure: the canonical was written before the site moved to www and a trailing
slash, so every page now points at a URL that redirects back to itself. Search engines can usually work
it out, and they should not have to.
Pitfalls
A canonical is a hint, not an instruction. Google follows it when the pages really are duplicates and ignores it when they are not. A canonical pointing at an unrelated page does nothing at all, except make the report in Search Console confusing.
Self-referencing is the right default. Every indexable page should name itself, so that a version with a tracking parameter or a session ID still consolidates to the clean URL.
Canonical plus noindex is a contradiction. One says “index this other page instead and pass the signals across”, the other says “drop this page”. Crawlers cannot do both, and which one wins is not something to rely on.
A canonical that redirects is a signpost pointing at a signpost. If the canonical URL 301s somewhere else, name the destination directly.
Two canonical tags cancel each other out. It happens when a theme and an SEO plugin both write one. Google ignores both when they disagree.
A relative canonical is legal and unwise. href="/page/" resolves differently depending on the base
URL and is read inconsistently. Use the absolute URL.
The Link: rel=canonical header is a second source. Useful for PDFs and images, easy to forget when
the HTML changes, and it has to say the same thing.
http and https are different pages. So are www and bare, and in most setups so are /a and /a/.
A canonical is how you say which one is real, and a redirect is how you make it stick.
Compatibility
One request from the server, following up to three redirects, with each hop checked before it is followed. This is one of the few tools here that asks the server, because a browser cannot read another origin’s headers or its response after redirects.
No JavaScript runs. The page is read as delivered, which is also what a crawler sees first: a canonical injected in the client is a canonical that may or may not be seen, and this shows the document without it.
Comparison ignores the differences that do not change what is served — case in the host, a default port,
a missing trailing slash on the root — and keeps the ones that do, because /a and /a/ genuinely can
be different pages.
The x-robots-tag header is read as well as the meta tag, since the header is the one people forget is
there.
Frequently asked questions
Should every page have a canonical?
noindex
instead, not a canonical pointing elsewhere.Does a canonical stop duplicate content penalties?
Canonical or redirect?
Do parameters need their own canonical?
?utm_source=x then consolidates automatically.