Is the Canonical Tag Checker free?
Yes. This tool is free to use with no sign-up, and it runs entirely in your browser.
Does it upload my HTML?
No. The markup is parsed locally in your browser, so your HTML never leaves your device.
Does it fetch a live page URL?
No. The first version is paste-first and browser-only, so you provide the HTML or head markup yourself.
Does it flag relative canonicals?
Yes. Relative or suspicious canonical values are surfaced as practical warnings, since canonicals should normally be absolute URLs.
Can it detect multiple canonical tags?
Yes. If a page declares more than one canonical, the checker flags it, since multiple canonicals can confuse search engines.
Why do I get 'Missing canonical' when the page has one?
Three usual causes. You pasted only part of the head. The canonical is injected client side by JavaScript, so it is absent from the served HTML that this tool sees, and Google may or may not pick it up on render. Or the canonical is sent as an HTTP Link header rather than a link tag, which this checker does not read.
Should a page canonicalize to itself?
Yes. A self-referencing canonical on every indexable page is the standard setup. It gives Google an explicit preferred URL and quietly kills the duplicates created by tracking parameters, trailing slashes and uppercase variants, without you having to enumerate them.
Is a canonical with query parameters wrong?
It depends on the parameter. If the parameter changes the content, such as a paginated page or a filtered category you genuinely want indexed, the canonical should include it. If the parameter is a tracking tag such as utm_source, the canonical must not include it. The tool flags both cases so you make the call.
What happens if there are two canonical tags?
Google treats conflicting canonical tags as unreliable and ignores them, falling back to its own choice of canonical URL. The result is that you lose control of consolidation without any error message anywhere. Ship exactly one.
Does it fetch the page or send my HTML anywhere?
No. The markup is parsed by your browser's built-in DOMParser and never leaves the tab. You can paste head markup from a private staging build, an internal tool or a client site under NDA without any of it touching a server.
Can I paste only the head section?
Yes. The parser wraps a bare fragment in a minimal HTML document before reading it, so a snippet of link tags works as well as a whole page. Paste the full head where you can, since a canonical duplicated further down the document is exactly what you want to catch.