Skip to main content
Toollyz

Search tools

Search for a command to run...

Canonical URL Checker

Two modes: paste a page's HTML and we extract `<link rel=canonical>` (flagging multiples), `<meta property=og:url>`, `<meta name=twitter:url>`, hreflang alternates (with x-default check and loop validation) and `<base href>` — or paste a single URL and we normalise it (lowercase host, strip default ports, drop tracking params, remove fragments). 100% offline.

What is the Canonical URL Checker?

Canonical URL Checker pairs two practical SEO utilities. **HTML audit**: paste a page's source and we extract every canonical-relevant tag using DOMParser. Multiple `<link rel=canonical>` tags are flagged as errors (Google considers conflicting canonicals and may ignore all of them). The canonical is compared against og:url and twitter:url after normalisation — disagreement means Facebook/LinkedIn and Google index different URLs. All href values are validated: must be absolute (the relative-path mistake breaks indexing), must use https (http canonicals get downgraded warnings), must not have a fragment. Hreflang alternates are checked for: presence of `x-default` (Google recommends it for unmatched locales) and a closed loop with the canonical itself (alternates must self-reference). **URL normaliser**: paste any URL and we apply the canonical-URL transformation rules — lowercase scheme + host, strip default ports (:443 for https, :80 for http), drop tracking params (16+ utm_* / gclid / fbclid / etc.), remove fragments, deduplicate. The output is the URL Google would treat as canonical.

How to use it

  1. Paste a single URL into the top input — see the normalised version instantly.
  2. Paste a page's HTML (head is enough) into the lower textarea.
  3. Read the parsed tags grid: title, base href, canonical, og:url, twitter:url.
  4. Check the Issues panel — errors are conflicts, warnings are best-practice violations, infos are FYIs.
  5. Use the hreflang table to verify every locale has a matching alternate.

Benefits

  • Detects multiple `<link rel=canonical>` tags — a silent SEO killer that Google may resolve unpredictably.
  • Compares canonical vs og:url vs twitter:url after normalisation — catches social/SEO drift.
  • Validates absolute URLs (relative breaks indexing), HTTPS scheme, no fragments.
  • Hreflang loop check — alternates must include the canonical itself, otherwise the loop breaks.
  • x-default check for international SEO — Google's recommendation for unmatched locales.
  • URL normaliser drops 16+ tracking parameters (utm_*, gclid, fbclid, msclkid, yclid, mc_*, _ga, _gl, ref, source).
  • Normaliser lowercase scheme + host, strips default ports (:443/:80), removes fragments.
  • Saves both inputs in localStorage so you can return mid-audit.
  • Runs 100% in your browser — Toollyz has no server.

Frequently asked questions

Why is having multiple canonical tags bad?

Google's documentation is explicit: conflicting `rel=canonical` tags may result in Google picking one arbitrarily or ignoring all of them. The result is either the wrong URL gets ranked, or your page splits link equity across both candidates.

What's the difference between canonical, og:url, and twitter:url?

Canonical is for search engines (Google primarily). og:url is for Facebook, LinkedIn, Slack and other Open Graph consumers. twitter:url is X-specific. They should all agree — drift means different platforms index different URLs.

Why does hreflang need a closed loop?

If page A says 'fr-FR alternate is page B', page B must also list page A in its hreflang block — otherwise Google can't trust the relationship. The tool checks the canonical is listed among the alternates as a basic sanity check.

What's `x-default`?

The hreflang value Google uses when no other locale matches. If a user visits from a country/language combo you don't have a specific page for, x-default tells Google which page to show. Recommended for any multi-locale site.

What tracking parameters does the normaliser strip?

utm_source, utm_medium, utm_campaign, utm_term, utm_content, utm_id, gclid, fbclid, mc_cid, mc_eid, msclkid, yclid, _ga, _gl, ref, ref_src, source. Add more by editing `TRACKING_PARAMS` in the engine.

Should canonical always be HTTPS?

In 2026, yes. HTTP canonicals get a slight HTTPS-preference warning from Google and may eventually be downgraded. Always issue https:// canonicals even if the page is also reachable over http://.

Why are fragments not allowed in canonicals?

Google ignores the fragment when indexing — `https://example.com/page#section` and `https://example.com/page` are the same page to the crawler. Including the fragment in canonical is invalid and gets stripped silently.

Does this tool fetch the page itself?

No. The site is statically exported and has no backend, and same-origin policy would block us anyway. Paste HTML you already have (View Source, DevTools).

What about `noindex`?

Out of scope for this tool — see the dedicated Meta Tag Analyzer for noindex/nofollow audits.

Are my inputs saved?

Both HTML and URL persist in localStorage (`toollyz:canonical-html`, `toollyz:canonical-url`) so a refresh doesn't lose your audit.

Is anything uploaded?

No. Parsing and normalisation run entirely in your browser.