Skip to main content

canonical-url-checker

A canonical URL checker fetches a page and reports its canonical declaration β€” both the <link rel="canonical"> in HTML and any HTTP Link: rel="canonical" header β€” then verifies the canonical points to a 200-OK page that doesn't itself canonicalize away. The ZTools Canonical URL Checker catches the four failure modes that cause Google to drop pages from the index: missing canonical, canonical pointing to a 404 or redirect, canonical pointing cross-domain (rare but legitimate; usually a bug), and chained canonicals (A β†’ B β†’ C, which Google often refuses to follow).

Use cases​

Auditing a site for canonical hygiene before a major SEO push​

Sample 10-20 representative pages. Confirm each has a self-referential canonical (or a deliberate alias-to-master canonical). Catches the "framework auto-generated wrong canonicals" disaster early.

Diagnosing why a page is missing from the index​

A page disappeared from Google? Check its canonical β€” often it points to a different page that Google indexed instead, or it points to a redirect that confuses crawlers. The checker reveals both.

Verifying that paginated, faceted, or sorted URLs canonicalize correctly​

Pagination (?page=2), faceted browsing (?color=red), and sort variants (?sort=newest) should canonicalize to the master URL. Run several variants through the checker to confirm.

Confirming HTTPS migration didn't leave HTTP canonicals behind​

After migrating to HTTPS, every HTTP page should redirect to HTTPS AND every HTTPS page's canonical should be the HTTPS URL (not HTTP). Test sample URLs to verify.

How it works​

  1. Enter a URL β€” Public HTTP/HTTPS URL. The tool fetches the page and any HTTP headers.
  2. Check both HTML and HTTP-header canonicals β€” Reports both. If they conflict, that's a bug β€” Google's behavior on conflict is undefined.
  3. Verify the canonical target β€” Fetches the canonical URL. Reports its HTTP status, its own canonical, and any redirect chain.
  4. Flag the four failure modes β€” Missing canonical (warning), canonical to 404/redirect (error), cross-domain canonical (warning, may be intentional), chained canonical (error).
  5. Recommend the fix per failure β€” For each issue, the recommended canonical declaration is shown ready to paste into your template.

Examples​

Input: https://example.com/blog/post

Output: Canonical: https://example.com/blog/post (self-referential βœ“). Target status: 200. No chain. PASS.


Input: https://example.com/page?utm_source=email

Output: Canonical: https://example.com/page (clean URL βœ“). Target: 200. PASS β€” UTM parameter correctly stripped.

Frequently asked questions​

Should every page have a self-referential canonical?

Yes β€” even unique pages benefit from an explicit self-referential canonical because it pre-empts URL-parameter duplicates (?utm_source=...) from being indexed as separate pages.

What's a "canonical chain" and why is it bad?

When page A canonicalizes to B, and B canonicalizes to C. Google's documented behavior: it prefers single-hop canonicals. Multi-hop chains often cause Google to ignore the canonical entirely and pick its own.

Can the canonical point to a different domain?

Yes β€” cross-domain canonicals are valid, used by content syndication (the original source canonicalizes to itself; the syndicating site canonicalizes back to the original). Most accidental cross-domain canonicals are bugs, so the checker warns by default.

Why might Google ignore my canonical?

Common reasons: canonical points to a redirect or 404, canonical chain (A→B→C), conflicting signals (canonical says X but sitemap and internal links point to Y), or quality difference (canonical-target page is much weaker than the source).

Should the canonical use absolute or relative URL?

Always absolute. Google accepts both per spec, but relative canonicals are frequently misinterpreted by less-permissive crawlers and social-share scrapers.

How do canonical and noindex interact?

They're different signals. canonical says "index this content under URL X". noindex says "don't index at all". Don't use both on the same page β€” Google's behavior is undefined; pick one.

Tips​

  • Always emit absolute, self-referential canonicals as the default for every page.
  • For URL parameters, point all variants to the clean URL.
  • After CMS template changes, sample 10-20 URLs to confirm canonicals still emit correctly.
  • For HTTPS migration, audit canonicals as a dedicated post-migration task.

Try it now​

The full canonical-url-checker runs in your browser at https://ztools.zaions.com/canonical-url-checker β€” no signup, no upload, no data leaves your device.

Open the tool β†—


Last updated: 2026-05-05 Β· Author: Ahsan Mahmood Β· Edit this page on GitHub