Canonical Checker - Verify rel=canonical

Compare the URL you asked for, the URL you actually landed on and the canonical the page declares, then get a plain verdict: self-referencing, pointing elsewhere, missing, or broken by a trailing slash or protocol mismatch.

Paste the messy version of the URL, tracking parameters and all. That is the case a canonical exists to solve.

This check is made from a ToolForte server.

Unlike the browser-only tools on the rest of the site, this one has to fetch the page server side, because a browser is not permitted to read another site HTML for you. The request identifies itself as ToolForteBot/1.0 and site owners are free to block that user agent, in which case the check fails even though the page loads fine for you. Only the delivered HTML is parsed. A canonical injected later by JavaScript will not show up here, which is also true of many real crawlers on their first pass.

Making sense of a rel=canonical link

This tool answers one question properly instead of many questions loosely: does this page tell search engines to index itself, and if not, what does it point at. It shows the address you asked for, the address you were redirected to, and the canonical the delivered HTML declares, then compares them and names the outcome. Self-referencing, pointing at another page, pointing at another domain, missing entirely, or differing only by a trailing slash or a protocol, which are the two mistakes that hide best.

It is the check you want after a migration, a template change or a CMS upgrade. Site owners run it when a page stopped ranking without any content change. Developers run it when a staging value survived a deploy. SEO specialists run it across a sample of templates, because canonical bugs are almost never one page: they are one template repeated a few thousand times. Anyone who has seen the Search Console message about Google choosing a different canonical is in the right place.

The canonical link was introduced in 2009 to solve duplication that site owners cannot avoid. The same product appears under two categories, a listing exists in a sorted and an unsorted form, a newsletter link adds utm parameters, and a print stylesheet gets its own path. Without a canonical each of those is a separate URL competing for the same ranking. With one they consolidate. Note that a canonical is a strong hint, not a command: search engines can and do override it when the rest of the evidence disagrees.

A handful of rules cover almost every real case. Every indexable page carries a self-referencing canonical. The canonical is absolute, not relative. It uses the same protocol and host that the server actually serves, which is where the http and www variants trip people up. It never points at a URL that redirects. It is not combined with noindex on the same page, because the two directives contradict each other. In an hreflang set every page self-canonicalises and the canonical appears in the set.

When the canonical turns out to be the symptom rather than the cause, follow it up: check the whole tag set with the Meta Tag Checker, inspect the response itself with the HTTP Headers Checker, and build a correct multilingual set with the Hreflang Tag Generator. If you are consolidating variants after this audit, the Robots.txt Tester helps confirm the versions you no longer want are still crawlable enough for the canonical to be seen.

How the Canonical Checker Works

  1. 01Paste the page address, tracking parameters and all. The messy version is the one a canonical exists to solve.
  2. 02A ToolForte server requests it as ToolForteBot and records every redirect hop until a page actually answers.
  3. 03The delivered HTML is parsed for the rel=canonical link and any rel=alternate hreflang links, and relative values are resolved to absolute addresses.
  4. 04The requested address, the final address and the declared canonical are compared, and you get a named verdict plus any conflict between the canonical and the hreflang set.

Reading the verdict and knowing what to change

Self-referencing is the answer you want on any page that should rank under its own address, and it is what makes tracking parameters harmless. When the verdict says the canonical points elsewhere, the question is whether you meant it. Pointing a filtered listing at the unfiltered one, or a print view at the article, is correct and deliberate. Pointing a product page at its category, or every page at the homepage, is a template mistake that quietly removes those pages from the index. A cross domain canonical is legitimate only for syndicated content where another site is the original publisher, and it is otherwise one of the most damaging bugs on this list. The two near misses deserve more attention than they usually get. A canonical that differs only by protocol is normally an http value left in a template after a move to HTTPS. A canonical that differs only by a trailing slash means the template and the server disagree about the slash form, so the canonical is not self-referencing even though it looks right at a glance. Both send crawlers to an address that redirects back, which wastes crawl budget on large sites and leaves the wrong variant indexed on small ones. Fix them in the template, not page by page.

When to Use the Canonical Checker

Use it after any migration, replatform or template change, because canonicals are template output and they break in bulk. Use it when Search Console reports that Google chose a different canonical than the one you declared, since seeing the three addresses side by side usually explains why in seconds. Use it when a page has lost visibility with no content change, and when you have just added tracking parameters to a campaign and want to be sure they consolidate. Use it on multilingual sites whenever hreflang stops working, because a canonical that disagrees with the language set is the most common reason an entire hreflang cluster gets ignored.

Common Use Cases

  • Explaining a Search Console message about Google choosing a different canonical than the one your page declares.
  • Checking that campaign URLs with utm parameters consolidate back to the clean address instead of competing with it.
  • Catching an http canonical left behind in a template after the site moved to HTTPS.
  • Verifying that a multilingual page self-canonicalises and appears in its own hreflang set. Hreflang Tag Generator - International SEO
  • Confirming after a replatform that product pages canonicalise to themselves rather than to their category.

Expert Tips

  • Test the ugliest version of a URL you can construct, with tracking parameters, a trailing slash and mixed case. A canonical that survives that is doing its job.
  • Never point a canonical at a URL that redirects. The redirect and the canonical then disagree about the destination, and search engines have to guess which one you meant.
  • Make internal links point at the canonical version. A canonical that every link on the site contradicts is a signal fighting the rest of your architecture.
  • Paginated listings should canonicalise to themselves, not to page one. Canonicalising page four to page one tells search engines the items on page four do not exist.

Frequently Asked Questions

Is a canonical a command or a suggestion?
A strong hint. Search engines weigh it against other signals such as internal links, redirects, sitemaps and the content itself, and they will override a canonical they find implausible. That is why a canonical is most effective when nothing else contradicts it: point internal links at the canonical version, list only that version in your sitemap, and do not redirect it anywhere.
Should I combine a canonical with noindex on the same page?
No. The two directives say different things. Noindex says do not index this page at all, while a canonical says index this content under a different address. Google has advised against combining them for years because the signals conflict and the outcome becomes unpredictable. Pick one: noindex for pages that should vanish, canonical for duplicates that should consolidate.
Why does my canonical show as missing when I can see it in the page source?
Most often because it is added by JavaScript after load. Only the HTML delivered by the server is parsed here, and no scripts run, which matches how many crawlers behave on a first pass. The other common cause is a canonical placed outside the head, for example inside the body, where it is ignored by search engines as well as by this tool.
Does the canonical need to be an absolute URL?
It should be. Relative canonicals do technically resolve against the current page, but they break the moment the same content is reachable from a second path, which is exactly the situation a canonical exists to handle. Writing the full absolute address, including the protocol and the host you actually serve, removes an entire class of ambiguity.

Related tools

12 suggested