A canonical tag is a line of HTML in a page’s head section, written as <link rel="canonical" href="...">, that tells search engines which URL is the main version of a page. When the same content can be reached at several URLs, the canonical tag tells Google which one to show in search results and where to credit the links pointing at all of them.
A canonical tag is a request, not an instruction. Google’s documentation on canonical URLs ranks the ways to state a preference by strength: redirects and rel="canonical" annotations are strong signals, and listing a URL in your sitemap is a weak one. The methods stack, so using two together makes your choice more likely to stick. Google still weighs them against other signals and can pick a different URL. When that happens, Search Console’s Page indexing report lists the page as “Duplicate, Google chose different canonical than user.”
Ways to set a canonical
| Method | Strength | Use it when |
|---|---|---|
| Permanent redirect | Strong | You’re retiring the duplicate page |
rel="canonical" link element |
Strong | The duplicate has to stay live, such as a URL with campaign tracking parameters |
rel="canonical" HTTP header |
Strong | The duplicate isn’t an HTML page, such as a PDF version of a whitepaper |
| Sitemap inclusion | Weak | You’re signalling preferred URLs across a large site |
Google says none of these is required. If you set nothing, it picks the version it judges best. Set one anyway on any page that matters commercially, so the choice is yours.
The template mistake that hides service pages
During an audit of a local business website, none of the service pages ranked. Each one had been built from the home page template, and the template carried the home page’s self-referencing canonical tag. Every service page was telling Google that the home page was the real version, so Google suppressed them. Once each page carried its own canonical, and we rewrote the content, titles, meta descriptions and H1s, the service pages started ranking and collecting impressions in Google Search.
This happens more often than it should. Google’s documentation notes that on WordPress and similar platforms you often can’t edit the head directly, and the canonical comes from a plugin or theme setting instead. Whenever you duplicate a page in a page builder, check the canonical in the page source before publishing.
What Google says not to do
- Don’t use robots.txt to pick a canonical. Google may still index a blocked URL, just without its content.
- Don’t use
noindexto choose between duplicates. It removes the page from Search entirely. - Don’t send mixed signals, such as one URL in your sitemap and a different one in the canonical tag.
- Don’t point a canonical at a URL fragment (the part after a #). Google generally ignores fragments.
- Don’t let JavaScript change a canonical that’s already in the HTML source.
- Use absolute URLs. Google supports relative ones but recommends against them.
Where duplicates come from on B2B sites
- Campaign links with tracking parameters, which create a new URL for the same page.
- HTTP and HTTPS, or www and non-www, versions that all load. Google prefers HTTPS as canonical unless something contradicts it, such as an invalid certificate.
- Filtered views of resource libraries and case study listings.
- Whitepapers published as both a web page and a PDF.
- Bilingual sites. With hreflang in use, Google says the canonical should point to a page in the same language, so a French page must not point to the English one.
Common mistakes
- Cloning pages from a template and inheriting another page’s canonical.
- Linking internally to the non-canonical version. Google recommends linking to the URL you want treated as canonical.
- Expecting a canonical to merge pages that aren’t duplicates. Google judges duplication by how similar the content is.
- Never checking the Page indexing report for pages where Google overrode your choice.
Related terms
Redirect chain · Crawl budget · Robots.txt · Internal linking · XML sitemap
