What is a canonical tag?
A canonical tag is a small piece of HTML that tells search engines which URL is the official version of a page. If the same content is reachable at multiple URLs, the canonical tag points to the one that should appear in search results.
Think of it like a postal address. You might receive mail at "123 Main St", "123 Main Street", or "Apartment B, 123 Main St" - but your official address is just one of those. The canonical tag is that official address for a webpage.
Why it matters for your rankings
Without canonical tags, search engines have to guess which URL is the "real" one. This creates three problems:
Split ranking signals. If Google finds your page at both example.com/pricing and example.com/pricing/, any backlinks and engagement get divided between the two URLs. Instead of one strong page, you have two weak ones.
Wasted crawl budget. Google allocates a limited amount of time to crawl your site. If it spends time on duplicate URLs, it has less time for your important pages.
Wrong version in search results. Google might index the URL with tracking parameters instead of the clean version. Users see example.com/pricing?utm_source=newsletter in their search results - not a great look.
For multilingual sites, the problem compounds. An English page at /pricing/ and a German page at /de/pricing/ aren't duplicates - they're translations. But without canonical tags, Google doesn't know which version should rank for which language.
How it actually works
A canonical tag lives in the <head> of your HTML:
<link rel="canonical" href="https://example.com/pricing/" />
This tells Google: no matter how you found this page, the canonical URL is https://example.com/pricing/.
Self-referencing canonicals are considered best practice. Every page should point to itself. This prevents issues if someone links to your page with query parameters - the canonical still points to the clean URL.
For multilingual sites, canonical tags work alongside hreflang tags:
<!-- On the English page -->
<link rel="canonical" href="https://example.com/pricing/" />
<link rel="alternate" hreflang="en" href="https://example.com/pricing/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/pricing/" />
<!-- On the German page -->
<link rel="canonical" href="https://example.com/de/pricing/" />
<link rel="alternate" hreflang="en" href="https://example.com/pricing/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/pricing/" />
Each version is canonical for its own language. The hreflang tags tell Google how the versions relate to each other.
Common mistakes:
- Pointing all language versions to one canonical (kills your other-language rankings)
- Forgetting trailing slashes (Google treats
/pricingand/pricing/as different URLs) - Setting canonical on paginated pages incorrectly (page 2 should be canonical to itself, not page 1)
How Webentity handles this
Every Webentity site ships with self-referencing canonical tags on every page, automatically. For multilingual sites, canonical and hreflang tags are generated together - so English and German versions each claim themselves as canonical while properly cross-referencing each other.
When you add a new page or blog post, the canonical is set instantly. No manual configuration, no tag to remember, no chance of getting it wrong.