What a canonical checker actually does
A canonical checker fetches a URL, parses the HTML <head> section for <link rel="canonical" href="...">, reads the HTTP response headers for a Link: <...>; rel="canonical" header, and compares the two. If both are present and differ, there is a conflict. If neither is present, the page has no explicit canonical and risks duplicate-content issues.
It also generates common URL variants and tests each one. Given https://www.example.com/page, we test http://www.example.com/page, https://example.com/page, http://example.com/page, https://www.example.com/page/, and https://www.example.com/page?utm_source=test. Each variant might return a different canonical, a redirect, or the same canonical as the original. Our checker maps the results so you see the full picture in one table.
Three problems show up repeatedly. The first is cross-domain canonicals-where the tag points to a different domain entirely, usually after a migration or CDN misconfiguration. The second is redirect chains-where a URL canonicalizes to another URL that redirects to a third. The third is missing canonicals on paginated or filtered pages, which leads to duplicate content penalties.
How to use this canonical checker
- Paste your URL into Primary URL. Use the version you consider canonical-usually https, www if you use it, and no trailing slash unless your CMS requires it.
- Paste additional variants into Extra variants to check if you want to test specific URLs. One per line. We auto-generate the common variants (protocol, subdomain, trailing slash), so this field is optional.
- Hit Check canonicals. You get a table with one row per tested URL. Each row shows the URL, the HTTP status code, the canonical found in the HTML tag, the canonical found in the HTTP header, and whether they match.
- Look at the Conflicts column. A red flag means the HTML canonical differs from the HTTP canonical, or the URL canonicalizes to itself when it should not, or the canonical points to a URL that returns 404.
- Click Download report to export the table as CSV. Use it to batch-fix canonicals in your CMS or pass it to a developer.
Try checking https://www.example.com/page on a WordPress site. You might find that the www version canonicalizes to https://www.example.com/page (non-www) and that the non-www version canonicalizes to itself. If both versions return 200, Google might treat them as duplicates unless one redirects to the other. The checker shows this conflict in one pass.
Why URL variants create duplicate content
Google treats https://example.com/page, https://www.example.com/page, http://example.com/page, and https://example.com/page/ as four separate URLs. If all four return 200 and show identical content, Google must guess which is the original. Canonical tags remove the guesswork by declaring one URL as the source. The other three should either redirect to the canonical or include a canonical tag pointing to it.
Three practical consequences.
Link equity dilution. If half your backlinks point to the www version and half to the non-www version, Google sees two pages splitting the authority. A canonical consolidates that equity onto one URL.
Crawl budget waste. If Google crawls all four variants, it uses four requests to index one page. On large sites, this multiplies across thousands of pages. Canonical tags or 301 redirects stop the duplication.
Index confusion. Google might index the wrong variant-the http version instead of https, or the trailing-slash version when you prefer no slash. A canonical tag tells Google which one to show in search results.
HTML canonical vs HTTP header canonical
The HTML canonical lives in the <head>: <link rel="canonical" href="https://example.com/page">. The HTTP header canonical lives in the response headers: Link: <https://example.com/page>; rel="canonical". Both serve the same purpose. If both are present and agree, great. If both are present and disagree, Google picks one-usually the HTTP header because it is sent before the HTML is parsed.
CDNs, proxies, and server-side redirects sometimes add HTTP header canonicals without the site owner knowing. If your CMS outputs an HTML canonical pointing to URL A, but your CDN adds an HTTP header pointing to URL B, you have a silent conflict. Our checker shows both so you can spot mismatches.
Some CMSes and frameworks set canonicals incorrectly by default. Shopify sometimes canonicalizes product URLs to the first collection they appear in, even if the product is in five collections. WordPress multisite installs can canonicalize to the wrong subdomain if the site URL setting is stale. Testing variants reveals these edge cases.
Self-referencing canonicals and when they matter
A self-referencing canonical means the URL's canonical tag points to itself: <link rel="canonical" href="https://example.com/page"> on https://example.com/page. This is correct for the canonical version of a page. It tells Google "this is the original, not a duplicate."
However, if a variant self-references-https://example.com/page/ canonicalizes to itself instead of the no-slash version-you have a problem. Google sees two self-referencing URLs with identical content and must pick one. The better fix is to 301 redirect the slash version to the no-slash version or to canonicalize the slash version to the no-slash version.
Paginated URLs-/blog/page/2, /blog/page/3-should canonicalize to themselves, not to /blog, because each page has unique content. Filtered or sorted URLs-/products?sort=price-often should canonicalize to the unfiltered version /products because the content overlaps. Our checker does not enforce these rules automatically; it shows the canonical you set and flags inconsistencies. You decide the policy.
Common mistakes
- Every URL canonicalizing to the homepage. Some plugins and themes default to this. It tells Google every page is a duplicate of the home. Check one deep page-a blog post or product-to confirm it canonicalizes to itself, not to
/. - Canonical points to a 404. After a migration or URL change, old pages may still canonicalize to URLs that no longer exist. Our checker fetches the canonical URL and reports the status code. If it is 404, remove the canonical or update it.
- Canonical points to a redirect. If the canonical is
https://example.com/oldbut that URL 301s to/new, Google has to follow the redirect. Better to canonicalize directly to/new. - Using relative URLs in the canonical tag.
<link rel="canonical" href="/page">works in most browsers but is technically invalid. Use absolute URLs:href="https://example.com/page". - Canonicalizing http to https but not redirecting. If the http version canonicalizes to https but still returns 200, users on the http URL see mixed-content warnings and stay on http. A 301 redirect is better than a canonical tag for protocol changes.
- Testing only the canonical version. You need to test the variants to see what they do. If the www version does not canonicalize to the non-www version, you have a duplicate.
Advanced tips
- Test one URL from each page type: homepage, category, product, blog post, paginated archive. Canonicals often differ by template, and a problem in one template affects all pages using it.
- Check query parameters.
?utm_source=twitterand?ref=emailshould canonicalize to the clean URL if the content is identical. If they do not, you are creating infinite variants. - Look for cross-domain canonicals after a migration. If you moved from
old-domain.comtonew-domain.combut forgot to update canonicals, pages on the new domain might still canonicalize to the old one. This tells Google to index the old site. - If you use hreflang tags for localized pages, confirm each language variant canonicalizes to itself. A common error is having all language versions canonicalize to the English URL.
- Bulk-check canonicals in your sitemap. If your sitemap lists 500 URLs, a script can call this checker in a loop and export a CSV of any that do not self-reference. Catch problems before Google does.
- Re-check after deploying a new theme, plugin, or CMS update. Canonical logic can break silently when a dependency changes.
If your canonical check reveals conflicts, fix them in your CMS settings or theme code, then re-run the check. If you also need to confirm that your sitemap only includes canonical URLs, use the sitemap checker to cross-reference. To see how your page's full metadata-title, meta description, OG tags, and canonical-renders in Google, Twitter, and LinkedIn, the website metadata checker previews all of them side by side. If you want to confirm that Googlebot can reach the canonical URL and is not blocked by robots.txt, the SEO checklist runs 20 on-page checks including canonical validation.