A rel=canonical tag is how a page names its preferred URL when the same (or nearly the same) content can be reached at more than one address. Search engines treat that tag as a strong hint, not a hard rule. They can ignore it when other signals disagree. Getting the tag right still matters, because a missing, conflicting, or wrong canonical can split indexing across duplicates.
This guide explains what the tag is for, which patterns usually break it, how to check a live page with the Canonical Checker, and the order to fix issues in. Google's own notes on consolidating duplicate URLs are the reference for how the signal is meant to work.
What rel=canonical is for
Duplicate or near-duplicate URLs show up constantly: http vs https, www vs bare domain, trailing slash variants, tracking parameters (?utm_…), sort and filter query strings, print views, and CMS preview leftovers. Without a clear preferred URL, ranking signals can scatter, and Search Console may show an "alternate page with proper canonical" style reason while the URL you wanted stays out.
The usual HTML form looks like this in the document head:
<link rel="canonical" href="https://www.example.com/shoes/">Two healthy patterns cover most pages:
- Self-referencing. The page's canonical URL is the page itself (same host, path, and preferred protocol). Use this for unique pages that should be indexed as themselves.
- Pointing elsewhere. A duplicate or parameter variant names the clean preferred URL. The preferred URL should then self-canonical to itself and return 200.
The tag does not replace redirects. If an old path should permanently move, use a 301/308. Canonical is for choosing among live duplicates, not for papering over a move you never redirected.
Common canonical issues
Missing tag. The page never declares a preferred URL. On a site with parameters or protocol variants, Google has to guess. Add a self-referencing canonical on the versions you want indexed, and point variants at that URL.
Wrong destination. The tag points at a different article, an old slug, a category hub you did not mean, or a URL that no longer exists. The page you care about may get treated as a duplicate of something else.
Multiple `rel=canonical` tags. Themes and SEO plugins often both inject a tag. Conflicting declarations are a classic reason the signal gets ignored. View source and keep exactly one.
Canonical points to a redirect. The declared URL hops somewhere else. That weakens the hint. Point at the final 200 URL you want indexed.
Canonical points to a 404 (or other error). The preferred URL does not exist. Fix the target or restore the page before you expect consolidation.
Parameter and faceted pages self-canonicalizing. Every ?color= and ?sort= variant claims to be its own preferred URL. Ranking signals stay split. Prefer canonicalizing filter combinations to the clean category or product URL when those variants are duplicates for search purposes.
Staging or preview hosts in production tags. A leftover staging. or Vercel preview host in the href ships the wrong preferred URL to production crawlers. Catch this after theme deploys and environment promotions.
How to check with the Canonical Checker
- Open the Canonical Checker. Free, no signup.
- Paste a public page URL—the production host you care about, with
https://. - Run the check. The tool fetches the HTML and response headers and reports the
rel=canonicalit finds. - Read whether a tag is present, what URL it declares, and how that compares to the URL you requested. The report flags missing tags, wrong destinations, common mismatch patterns, and redirect-related problems when those show up in the fetch.
This is a per-page check of what that URL returns. It is not a full-site crawler, and it is not a bulk run of hundreds of URLs. Spot-check templates and the pages Search Console already flagged. After you change a theme or plugin setting, re-check a home page, a key template, and one parameterized URL.
When you need to see whether the preferred URL itself redirects, pair this with the Redirect Chain Checker. When you need a wider indexability pass (status, robots, noindex, canonical, redirects together), use the Google Index Checker.
How to read the results
Declared canonical matches the requested URL (self-referencing), status looks clean. Good baseline for a unique page. Still confirm the host and protocol are the ones you want in the index (https, preferred www or non-www).
Declared canonical points somewhere else. That can be correct (a variant naming the main URL) or wrong (accidental cross-link). Open the target. It should return 200 and ideally self-canonical to itself.
Missing tag. Decide the preferred URL, add one tag in the head (or via your SEO plugin's single field), publish, and re-run the checker.
Mismatch patterns (protocol, host, trailing slash, parameters). Align the tag with the URL you actually want indexed. Then make internal links and sitemaps use that same form so you are not fighting your own HTML.
Redirects on the URL you pasted. A page that never settles on a final 200 is a poor canonical target. Fix the redirect so the preferred URL is stable, then point the tag at that final URL.
Search Console disagrees with your tag. URL Inspection can show your declared canonical and the one Google selected. When those differ, treat your tag as overridden. Look for stronger conflicting signals: different redirects, internal links, sitemaps, hreflang, or duplicate titles across near-identical pages. A duplicate-title pass on related URLs can surface the cluster you are consolidating.
Fix in this order
- Restore or correct the preferred URL. It must return 200. A canonical that targets a 404 or a long redirect chain will not help.
- Remove duplicate tags. One
rel=canonicalin the head. Turn off the theme's injector or the plugin's injector so only one system writes it. - Set self-referencing canonicals on the URLs that should rank. Money pages, unique articles, clean category URLs.
- Point true duplicates at those preferred URLs. Parameter variants, print views, and alternate hosts that serve the same content.
- Align protocol and host sitewide. https and one host form everywhere: tag, redirects, internal links, sitemap.
- Re-check production, not staging. After deploy, paste the live URL into the Canonical Checker again. Then confirm in Search Console whether Google still selects a different canonical.
Mistakes that keep coming back
Canonical chains. Page A canonicalizes to B, and B canonicalizes to C (or still redirects). Point every duplicate straight at the final preferred URL. Do not build a chain of hints.
Using canonical instead of a redirect. An old path that should move needs a server redirect. A canonical on a URL you no longer want live is the wrong tool.
Staging hosts in the href. Preview and staging domains leak into tags after a bad base-URL setting. Grep templates and CMS "Site Address" fields when a checker shows a foreign host.
Theme and plugin both writing tags. Two tags, often two different hrefs. Pick one owner for the signal.
Canonical to a noindex URL. You ask crawlers to prefer a URL you also asked them not to index. Pick one intent: consolidate with canonical, or keep a URL out with noindex—not both on the preferred target.
Assuming the tag always wins. It is a hint. If Google selects another URL, strengthen the preferred version with consistent links, sitemap inclusion, and on-page uniqueness instead of only editing the tag again.
Checking only the homepage. Template bugs show up on product, blog, and parameter URLs. Sample each major template after a theme change.
FAQ
What is a canonical checker?
A tool that fetches a page and reports its rel=canonical tag (or that the tag is missing), including how the declared URL compares to the URL you requested. Scrawl's Canonical Checker is free.
What is a rel=canonical tag?
An HTML link relation in the page head that names the preferred URL for duplicate or near-duplicate content. Google documents it as part of consolidating duplicate URLs.
What is a self-referencing canonical?
A canonical whose href is the page itself. That is the usual setup for a unique page you want indexed under its own URL.
What does a missing canonical tag mean?
The page never declares a preferred URL. Add a single self-referencing tag on pages that should rank, and point duplicate variants at that URL.
Can a page have multiple canonical tags?
You should not. Multiple rel=canonical entries in one document often come from a theme plus an SEO plugin. Search engines may ignore conflicting declarations. Keep one.
What if the canonical points to a redirect or a 404?
Fix the target first. The preferred URL should return 200. Then set the tag to that final URL and re-check.
Is a canonical tag a hard directive?
No. It is a strong hint. Google can choose a different canonical when other signals disagree. URL Inspection in Search Console shows when that happens on properties you own.
How do canonical tags differ from noindex?
Canonical says which URL is preferred among duplicates. Noindex says not to index that URL. Do not make your preferred canonical target a noindex page.
How do I check canonical issues after a migration?
Verify redirects with the Redirect Chain Checker, then run the Canonical Checker on representative templates and on URLs Search Console lists as duplicates or alternate canonicals. Confirm the preferred host and protocol match what you mapped.
Is the Canonical Checker free?
Yes. Paste a page URL and read the report—no login.