Why doesn’t AI mention your brand? Find out which half is brokenGet a free report
LLMention
Method

Canonical URLs: the mistakes that split citations

The interesting failures are not in the tag but in the address it names. A canonical that points at a redirect, a 404 or another language is worse than none.

By Alex Xu10 min read

A canonical tag is the cheapest way to lie to yourself about duplicates. It is one line in the head, every framework emits one by default, and the check most scanners run is "does it exist". The interesting failures are all in the address it contains, which is the part a presence check never reads.

This article is about what a canonical is allowed to claim, the mistakes that split signals instead of consolidating them, and how to audit the address rather than the tag.

What a canonical does, and does not do

rel="canonical" is a hint that one URL is the preferred version of a piece of content. It is not a redirect: the duplicate URL still resolves and still serves. It is not a noindex, and it is not an instruction an engine must follow. It is a statement that, after redirects, this is the URL whose signals should be consolidated.

ToolWhat it doesWhen it is the right one
301 redirectMoves the URL permanently; the old address stops serving.The old URL should not exist any more.
rel=canonicalNames the preferred URL; both addresses keep serving.The duplicate must stay reachable (tracking links, syndication, printed URLs).
noindexAsks that the page not appear in search results.The page exists for users but not for search.
hreflangDeclares language and region versions of the same page.The content is translated, not duplicated.

Mixing them is where most of the damage happens. A canonical that points at a redirect, a canonical on a page that is also noindex, or a canonical that disagrees with the hreflang group all ask an engine to resolve contradictory instructions. The engine chooses; the site rarely likes the choice.

The mistakes that split citations

  • Missing entirely. Two URLs for one page, no statement about which is preferred. Search engines pick one; an answer engine may pick the other; a link may point at a third.
  • Pointing at the homepage. A canonical to / from an article says the article is a variant of the homepage. The article's own signals are handed to the wrong page.
  • Pointing at a 404 or a redirect. The canonical target should be a 200 at the address it names. A canonical to a URL that redirects is a hint that resolves somewhere else, which is two instructions instead of one.
  • http vs https, www vs apex, trailing slash variants. The canonical must name the final URL, not a variant that redirects to it. This site uses trailing slashes everywhere and canonicalises the slash form, so the two never disagree.
  • Cross-language canonical. A Chinese page canonicalising to the English page, or an hreflang group whose members canonicalise to one language, tells an engine the translations are duplicates of each other. They are not.
  • Multiple canonical tags. Two tags mean the engine has to pick; the outcome is not something the page controls. One tag per page.
  • Client-side canonical. A tag injected after hydration is absent from the response a crawler parses. The same failure as client-only content, one tag up.
  • Canonical plus noindex. The two instructions conflict: consolidate here, but do not show this here. Pick one.
  • Paginated pages canonicalised to page one. Page 2 is not a duplicate of page 1; it is a different set of items. Canonical each page to itself unless the pagination is genuinely cosmetic.

What the scanner checks — and what it does not

The rule is canonical, worth 1 point in the citability dimension. The condition is that a rel=canonical link exists. The rule page is explicit: the address is read and not compared, nothing follows it, and a page pointing its canonical at another page or at a 404 passes.

That is the right size for a single-request check. Comparing the canonical with the fetched URL would be cheap for the scanner, but following it is a second request and judging language or pagination is a judgement. The score says "a tag is present"; the audit below is what says whether it is true.

Auditing the address, not the tag

# 1. What canonical does the server response declare?
curl -sS https://your-domain.com/page/ \
  | grep -oE '<link[^>]+rel="canonical"[^>]*>'

# 2. How many canonical tags are there? One is the answer.
curl -sS https://your-domain.com/page/ | grep -c 'rel="canonical"'

# 3. Is the canonical target itself a 200 with a self-referential canonical?
CANON=$(curl -sS https://your-domain.com/page/ | grep -oE 'rel="canonical"[^>]*href="[^"]+"' | grep -oE 'https?://[^"]+')
curl -sS -o /dev/null -w "%{http_code} %{url_effective}\n" "$CANON"
curl -sS "$CANON" | grep -oE '<link[^>]+rel="canonical"[^>]*>'

# 4. Do the hreflang members agree with the canonical strategy?
curl -sS https://your-domain.com/page/ | grep -oE 'hreflang="[^"]+" href="[^"]+"'

Read the four outputs together. The canonical should be absolute, should name the final URL after redirects, should return 200, and should be the same URL the hreflang group and the sitemap use. A canonical that is merely present but disagrees with the rest of the site is the failure this check cannot see.

How this site does it

Every page declares an absolute self-referential canonical built from its own path, and the localized pages declare their own language URL rather than the English one. The hreflang group lists the same URLs, the sitemap lists them, and the redirects move old aliases to the final address rather than leaving a canonical pointing at a redirect. These are not separate features; they are one statement repeated in the places an engine looks.

The point is not that the site is perfect. It is that the statement is checkable: a crawler can fetch a page and compare four things — requested URL, canonical, hreflang membership and sitemap entry — and see whether they agree.

What a canonical does not buy

It does not merge two pages into one ranking, it does not guarantee that an answer engine quotes the canonical URL rather than the duplicate, and it does not fix a page whose content is duplicated because the site genuinely has two versions. It is a hint that makes the preferred address unambiguous; the engine still decides what to do with it.

The useful standard is the one the rest of this series keeps applying: make the signal checkable, make it agree with the other signals, and do not use it to claim something the site does not deliver.

Questions about canonical URLs

Does a canonical tag redirect the duplicate?

No. It is a hint that one URL is the preferred version; the duplicate keeps resolving and serving its own page. If you want the other URL to stop existing, use a 301. If you want it to exist but not compete, a canonical is the tool.

Should every page canonical to itself?

Yes, for a normal page. The self-referential canonical states that this URL, after redirects, is the one to consolidate. The mistakes are canonicals that point at a different page, at a redirect, at a 404, or at a language the page is not in.

What does the scanner check about canonicals?

Only that a rel=canonical link is present. It is worth 1 point, and the rule page says the address is read and not compared: a page pointing at a different page or at a 404 passes. The comparison is the work this article is about.

Evidence and sources

GEO can boost visibility by up to 40% overall in generative engine responses, and in the paper's Table 1 the best of the tested methods improve on the no-optimization baseline by 41% and 28%. — Generative Engine Optimization, KDD 2024

Every figure in this piece comes from the published study or from the rule set the scanner executes; both are linked, and both can be re-run.

Primary sources

Alex Xu — Maintainer, LLMention

I build and maintain LLMention: the scanner, the rule set and the study behind it. The work is published as source, so the method can be checked rather than taken on trust.

How this site is written and funded →

Read next