Skip to content
AgileLogics

Canonical URL Checker

Fetches a page from our server and reports the URL its <link rel="canonical"> tag points to, if any.

How it works

Enter a URL and click Check.

What is a canonical URL?

A canonical URL is the address you want search engines to treat as the main copy of a page when the same content is reachable at several URLs. You declare it with <link rel="canonical" href="..."> in the page's <head>. This checker fetches a page and shows the href of that tag, or tells you there isn't one.

Duplicate URLs creep in easily: ?utm_source= tracking parameters, ?sort=price, trailing-slash variants, http:// and https://, www and bare domains, print views. Google groups the duplicates and picks one to show in results. The canonical tag is how you state which one you'd prefer.

How the checker works

Paste a full URL and click Check. The URL goes to our server, which requests the page (following up to ten redirects, waiting up to eight seconds per response) and parses the HTML it gets back. Private and reserved IP addresses are refused before any request is made.

The parser looks for the first <link> element whose rel attribute contains the token canonical, in any capitalisation, and returns its href unchanged. For a page with a self-referencing canonical, the whole output is one line:

https://www.example.com/shoes/trail

With no canonical tag at all, you get:

No canonical tag found on that page.

Because redirects are followed, the canonical you see belongs to the page the chain ended on. Enter http://example.com/shoes and you're reading the tag on wherever that redirects. The redirect checker shows that path hop by hop.

Reading the result

What you see What it means Action
The same URL you entered Self-referencing canonical Usually correct for a primary page
A different page on your site You're telling Google this page is a duplicate of that one Fine for parameter variants; a mistake if this page has unique content
An http:// URL on an https site Template is hard-coding the old scheme Update the template; it contradicts your redirects
A staging or localhost domain Environment config leaked into production Fix the base URL setting and redeploy
A path like /shoes/trail Relative canonical Works, but switch to an absolute URL
"No canonical tag found" Nothing declared Add one to any page that can be reached by more than one URL

Google's rules for canonicals

Google's guide to consolidating duplicate URLs is the reference here. The points that matter most when reading this tool's output:

  • A redirect and a rel="canonical" link are both described as strong signals; listing a URL in a sitemap is a weak one. Google treats all of them as preferences, not orders.
  • The link element is only accepted in the <head>. This checker searches the whole document, so a canonical that a broken template dumped into the <body> is still reported here even though Google ignores it. If the result surprises you, view source and check where the tag sits.
  • Use absolute URLs. Relative paths are supported but Google says they can cause problems over time.
  • Don't send mixed messages. Listing one URL in your sitemap and a different one in the canonical tag for the same page is called out as a mistake.
  • Don't use robots.txt or noindex to pick a canonical. A robots.txt block stops Google seeing the canonical tag at all, and noindex removes the page from Search entirely.

Auditing a set of duplicate URLs

  1. List the variants of one page: with and without www, http and https, trailing slash, common query parameters.
  2. Run each through this checker. Every variant should name the same canonical URL.
  3. Run that canonical URL itself. It should return its own address (self-referencing), not point onward to yet another page.
  4. Confirm the canonical answers 200 directly, with no redirect in front of it.
  5. Check that the sitemap lists the canonical version and not the variants.

What the checker won't catch

It reads only the first matching tag, so a page carrying two conflicting canonical tags (often two SEO plugins fighting) shows just the first; search the source for rel="canonical" to find both. The rel match follows HTML's rules, so rel="Canonical" or a combined value like rel="alternate canonical" is detected, but a <link> placed in the body is reported too even though Google only honours canonicals in the head. HTTP Link header canonicals aren't read, and neither are canonicals added by JavaScript after load.

On multilingual sites, check that canonicals and hreflang don't contradict each other: a translated page whose canonical points at the English version is asking to be folded into it. The hreflang checker lists the alternates a page declares so you can compare the two. For a broader look at the same page's title, description and robots rules, use the on-page SEO checker.

Last updated

Frequently asked questions

What does it mean if the checker finds no canonical tag?
The page's HTML has no link element with rel="canonical". That isn't an error in itself, since Google picks a canonical anyway, but on pages that exist under several URLs (tracking parameters, sorting options, http and https) a self-referencing canonical makes your preference explicit.
Does Google always use the canonical URL I declare?
No. Google's documentation describes rel="canonical" as a strong signal, not a command. If other signals disagree, for example internal links, redirects or sitemaps pointing at a different URL, Google can choose another page as canonical.
Why does the checker show a relative path instead of a full URL?
It prints the href exactly as it appears in the HTML, without resolving it. If you see /page instead of https://www.example.com/page, that's what your page declares. Google supports relative canonicals but recommends absolute URLs.
Does it check a canonical sent in an HTTP Link header?
No, only the HTML link element is read. Header canonicals are mostly used for PDFs and other non-HTML files; check those with your browser's network panel or curl -I.