Back to Blog

Canonical Tag Best Practices: Setting rel=canonical So Google Uses It

·, Founder·Technical SEO
canonical tag best practicesrel canonicalduplicate contentcanonicalizationtechnical seo

Canonical tag best practices come down to one rule: every indexable page should declare, with a single absolute URL in its head, the version you want shown in search, and every other signal on the site should agree with it. Google treats rel="canonical" as a hint, not a directive, so a tag that conflicts with your redirects, sitemap or internal links can be overruled; in the words of its canonicalization overview, "indicating a canonical preference is a hint, not a rule."

Below are the practices Google documents, the mistakes that lead it to pick a different URL, and how to check which URL it chose.

Key takeaways

  • Google treats rel="canonical" as a hint, not a directive, so a canonical that conflicts with redirects, sitemaps or internal links can be overruled, per its canonicalization overview.
  • Google's consolidation guide recommends that the main version of a page carry a self-referencing canonical written as an absolute URL, not a relative path.
  • Use either the HTML link element or the HTTP header for a page's canonical, not both, because Google's consolidation guide calls using both more error-prone.
  • Google's URL Inspection tool shows the user-declared canonical next to the Google-selected canonical, per its URL Inspection help, so you can see which URL Google chose.

What is a canonical tag?

A canonical tag is a link element in the page head that names the preferred URL for a piece of content:

<link rel="canonical" href="https://example.com/shoes/trail-runner" />

Canonicalization is how Google picks one representative URL from a group of duplicates and shows that one in results. Duplicates are ordinary: HTTP and HTTPS versions, www and non-www hosts, tracking parameters, sort and filter options, and test sites left open by accident. Google's canonicalization overview says some duplicate content on a site "is normal and it's not a violation of Google's spam policies," so the goal is to steer the choice, not to escape a penalty.

Why does Google sometimes ignore a canonical tag?

Because the tag is one signal among several. Google weighs HTTPS, redirects, sitemap inclusion and rel="canonical" annotations together, and its guide to consolidating duplicate URLs describes how strong each method is:

MethodHow Google describes itUse it whenSource
RedirectA strong signal that the target should become canonicalThe duplicate does not need to exist for usersGoogle
Canonical link element or HTTP headerA strong signal that the specified URL should become canonicalBoth versions must stay reachable, such as parameter or filter URLsGoogle
Sitemap inclusionA weak signalLarge sites, as a supporting signalGoogle

The same guide says these methods stack, so they work better together. When the canonical tag points one way and the sitemap, internal links or redirects point another, Google has to choose, and the Page indexing report may then list the page as Duplicate, Google chose different canonical than user.

Canonical tag best practices

Use absolute URLs

Write the full URL, including protocol and host. Google's consolidation guide recommends absolute URLs and warns that relative paths "can cause problems in the long run," for example when a staging host or a second protocol serves the same HTML and the relative path resolves to the wrong place.

Add a self-referencing canonical to the main version

The canonical page should point to itself, which Google's consolidation guide recommends. It also covers you when someone links to the page with parameters you never planned for, such as ?utm_source=newsletter or ?ref=partner.

Put it in the head, in valid HTML

Google accepts the canonical link element only in the head, and its consolidation guide asks that the head be valid HTML. A misplaced element high in the head can make the browser's parser end it early, which pushes everything after it, canonical included, into the body.

Pick one method per page

Use either the HTML element or the HTTP header for a given URL, not both. Google's guide calls using both more error-prone, and asks you not to name different canonical URLs through different methods, such as one URL in the sitemap and another in the tag.

On WordPress and other plugin-driven sites, check that only one plugin or the theme prints the tag. Two SEO plugins active at once can each print their own canonical.

Point only at URLs that can be indexed

The target of a canonical should load normally, carry no noindex and not redirect. Google only indexes pages served with an HTTP 200 status, per its technical requirements, so a canonical that points at a redirect, a 404 or a noindexed page sends contradictory signals. Also avoid a URL fragment such as #reviews as the target, which the consolidation guide rules out.

Keep internal links, sitemaps and language versions consistent

Link internally to the canonical version and list only canonical URLs in your sitemap. For translated pages, Google asks you to name a canonical in the same language, or the closest substitute if none exists, and it ignores canonical annotations that carry hreflang, lang, media or type attributes, per the consolidation guide. Each language version must also list itself and the other versions in hreflang, according to Google's guide to localized versions.

What not to use as a canonical

Google's consolidation guide advises against three shortcuts. Blocking a duplicate in robots.txt stops Google from reading its canonical tag, and "Google may still index URLs that are disallowed in robots.txt without their content." A noindex removes the page from Search entirely instead of consolidating it into the main version. The URL removal tool hides all versions of a URL, not only the duplicate.

Canonicals for PDFs and other files

The HTML element only works on HTML pages. For PDFs and other files, send the canonical in an HTTP Link header, which Google supports for web search results, per its consolidation guide:

Link: <https://example.com/downloads/white-paper.pdf>; rel="canonical"

This is also how you point a Word or HTML copy of a document at the PDF you want indexed.

Common situations and the right signal

SituationRecommended approachSource
Tracking or session parametersSelf-referencing canonical on the clean URL, and internal links without parametersGoogle
HTTP and HTTPS, www and non-wwwPermanent redirect to one version, plus a self-referencing canonicalGoogle
Paginated listsGive each page its own canonical; do not point page 2 and beyond at page 1Google
Sort and filter variantsKeep unwanted variants out of the index with noindex, or discourage crawling in robots.txtGoogle
Content syndicated to partnersAsk partners to block indexing of your copy; Google does not recommend canonicals for syndicationGoogle
Translated pageshreflang between versions, canonical in the same languageGoogle
PDF and HTML versions of a documentHTTP Link header canonicalGoogle

Redirects and canonicals have to agree. XeoRank's free redirect checker tests the http, https and www variants of a URL hop by hop, so you can confirm every variant ends on the same URL your canonical names.

Canonicals and JavaScript

Set the canonical in the server-rendered HTML. Google's JavaScript SEO basics prefers that, and if you do set it with JavaScript, asks you not to change it to a different URL than the original HTML and not to create duplicate canonical tags.

This bites single-page apps and frameworks where the router rewrites the head after load: the raw HTML names one canonical and the rendered page names a different one. Compare both in the URL Inspection live test. Our guide to how JavaScript frameworks affect SEO covers the framework settings that control this.

How to check which canonical Google chose

Run the URL Inspection tool on the page. It shows the User-declared canonical next to the Google-selected canonical, per Google's URL Inspection help. If they match, the page is fine.

For a site-wide view, open the Page indexing report. It groups these cases as Duplicate, Google chose different canonical than user; Duplicate without user-selected canonical; and Alternate page with proper canonical tag, the last of which needs no action, according to Google's report help.

When Google's choice is wrong, its canonicalization troubleshooting guide lists the causes to rule out: incorrect canonical elements from a CMS or plugin, misconfigured servers, hacked pages that add a cross-domain canonical, and copies of your content on other sites. The same guide says Google may hold pages in a duplicate cluster for up to two weeks, that making clustered pages meaningfully different helps them split out sooner, and that reindexing requests are quota-limited, so save them for your key URLs.

To check many pages at once, the free meta tag checker reads the canonical, robots tag, title and H1 for up to 10 URLs, which makes template-wide mistakes stand out.

A short canonical checklist

  • One canonical per page, in the head, as an absolute URL
  • A self-referencing canonical on the main version
  • A target that loads normally, is indexable and does not redirect
  • The same URL in the canonical, the sitemap and internal links
  • No robots.txt block or noindex used in place of a canonical
  • Paginated pages that canonicalize to themselves
  • The same canonical in the raw HTML and the rendered page

If you ship these changes in code, the technical SEO checklist for developers shows how to set the canonical through a framework's metadata API. Once the tags are right, the URL Inspection tool is the place to confirm Google agrees.

Ready to optimize your search rankings?

XeoRank connects to Google Search Console, analyzes content gaps with AI, and gives you actionable fixes — from the terminal or dashboard.