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β
- Enter a URL β Public HTTP/HTTPS URL. The tool fetches the page and any HTTP headers.
- Check both HTML and HTTP-header canonicals β Reports both. If they conflict, that's a bug β Google's behavior on conflict is undefined.
- Verify the canonical target β Fetches the canonical URL. Reports its HTTP status, its own canonical, and any redirect chain.
- Flag the four failure modes β Missing canonical (warning), canonical to 404/redirect (error), cross-domain canonical (warning, may be intentional), chained canonical (error).
- 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.
Last updated: 2026-05-05 Β· Author: Ahsan Mahmood Β· Edit this page on GitHub