Canonical tags: how to fix duplicate content issues
Duplicate URLs split ranking signals instead of strengthening one page. Here is how canonical tags work, and when to use one instead of a redirect or noindex.
Most sites have more duplicate content than the owner realizes. A product page reachable at four different URLs, a category page with three sort orders, an https and http version both still live: each variant competes with the others instead of adding up to one strong page. The canonical tag is the tool for telling search engines and AI crawlers which URL is the one that counts. Used well, it consolidates authority. Used carelessly, it can tell Google to ignore the exact page you wanted ranked.
What counts as duplicate content
Duplicate content is not just copy-pasted articles. Most of it is accidental, created by how the site is built rather than what a writer typed.
- www versus non-www, or http versus https, serving the same page at two hosts
- URLs with and without a trailing slash
- Sorting, filtering, and tracking parameters that produce a new URL for the same underlying content
- Session IDs or affiliate codes appended to an otherwise identical page
- Printer-friendly or AMP versions kept alongside the main page
- Syndicated or cross-posted content that also lives on another domain
Each of these can look like a separate page to a crawler even though a human sees one page. Left alone, they split links, split crawl attention, and can push the version you actually want ranked further down.
How the canonical tag works
The canonical tag is a link element placed in the page head: rel canonical pointing to the URL you want treated as the master copy. When a search engine finds several near-identical URLs, it uses the canonical tag as a strong hint about which one to index and which one to fold ranking signals into.
It is a hint, not a command. Google has said plainly that it can and sometimes does choose a different URL than the one a site marks as canonical, usually when other signals (internal links, the sitemap, redirects) point elsewhere. A canonical tag that contradicts the rest of the site's signals is often overridden.
Self-referencing canonicals
Every indexable page should carry a canonical tag pointing to itself, not just the pages you know have duplicates. This is the cheapest insurance against parameter variants you have not thought of yet: a sort order, a UTM tag, a session string. If the base page already declares itself canonical, most of those variants get folded in automatically.
Canonical vs noindex vs redirect
These three tools get mixed up constantly, and each one does a different job.
- Redirect (301): use when the old URL should stop existing entirely, such as a retired product page or a completed site migration. Users and crawlers both land on the new URL.
- Canonical tag: use when the duplicate needs to stay live for users, such as a filtered or sorted view of a category, but ranking credit should flow to one main version.
- Noindex: use when the page should not appear in search results at all, such as an internal search results page, a thank-you page, or a thin tag archive. Noindex is a stronger, blunter instruction than canonical.
A common mistake is applying noindex and a canonical tag to the same page at once. That is a contradictory signal: noindex says remove this page, canonical says fold this page into another. Pick one.
Common canonical mistakes
- Canonicalizing to a URL that itself redirects elsewhere, forcing the crawler through a chain instead of landing on a stable target
- Canonicalizing every page in a paginated series back to page one, which can cause the content on pages two and three to drop out of the index entirely
- Setting a cross-domain canonical to a competitor or partner site by copy-paste error
- Rendering the canonical tag only after JavaScript executes, so crawlers that do not run scripts never see it
- Letting the canonical tag drift out of sync after a URL structure change, so old and new paths both claim to be canonical
Canonicals and AI crawlers
It is not fully established how consistently each AI crawler respects canonical tags the way Google does. Some evidence suggests AI systems lean more heavily on which URL is actually linked to and cited elsewhere, rather than the canonical declaration alone. Treat this as reason to keep internal links, sitemaps, and canonical tags pointed at the same URL, not as reason to skip canonical tags. Clean, consistent signals are the safer bet regardless of which crawler is reading them.
A quick canonical audit
- Check that your homepage and top pages resolve to one protocol and one host, with redirects handling the rest
- Confirm every indexable page has a self-referencing canonical tag
- Search your site for pages with both a noindex tag and a canonical tag, and fix the conflict
- Test a few parameterized URLs (sorted, filtered) to confirm they canonicalize to the clean version
- Make sure canonical tags appear in the initial HTML, not only after JavaScript runs
- Cross-check your sitemap: every URL listed there should be self-canonical, not pointing elsewhere
Canonical tags are not exciting, but they are one of the few technical fixes that directly consolidates ranking strength you already have instead of chasing new links or new content. An hour spent auditing them can undo months of split signals.