# Canonical agreement

Canonical agreement

**In short:** Link each page in your llms.txt by exactly the URL its rel=canonical declares, with no tracking parameters.

- Category: Ecosystem Integration · weight 9 of 100 within the category
- Ecosystem Integration is worth 20 in technical, 15 in generic, regulated and commerce (points of 100, by scoring profile)
- Audit ID E6 (as shown on reports) · rubric v2.1

## What it checks

Whether the URLs in your file match the pages’ rel=canonical URLs.

## Why it matters

If the file links one URL and the page declares another canonical, agents may treat them as two pages, or cite the non-canonical one.

## When it applies

Applies when at least one page linked from your llms.txt loaded (HTTP 200) and declared a canonical. Unverified otherwise (no page loaded, only your homepage was checked, or your pages emit no rel=canonical): removed from your score and its weight shared among the Ecosystem audits we did measure, never counted as a zero.

An audit that doesn’t apply, or that we couldn’t verify, is removed from your score and its weight shared among the Ecosystem Integration audits that do apply. It is never scored as a zero.

## How it’s scored

Per linked page we sample: 1 when the URL you link is the page’s canonical (ignoring http against https, www., a trailing slash and a #fragment) · 0.5 when it is the same page in a form we can’t reconcile (a different query string or capitalisation, /page.html against /page) · 0 when the canonical points elsewhere. The score is the mean over the pages that declare a canonical. A page with no canonical is left out, not scored as a mismatch.

> **Measurement.** Every scan reads each page’s canonical from the same fetch it uses for link relations (E8): your homepage and up to 3 pages linked from your llms.txt, with no extra requests. We use the first <link rel="canonical"> in the <head>, else an HTTP Link header with rel="canonical", resolved against the page URL. A link to a .md file is compared through the page it mirrors. Only your homepage counts if your llms.txt links it. In the 187-site research corpus, 92 of the 122 sites measured earned full marks and 20 scored 0; 65 were Unverified.

## How to fix

1. Check the canonical URL of each linked page (view source, or the Link header).
2. Link exactly that URL in your llms.txt: the same host and path, with no tracking parameters.
3. Fix pages whose canonical points somewhere unexpected, such as a redirect target or another domain.

## Frequently asked questions

### What does the canonical agreement check compare?

Whether each linked page’s own `<link rel="canonical">` (or a `Link: <…>; rel="canonical"` header) is the URL your llms.txt links to. We check the pages we already fetch for link relations: up to 3 sampled from your file, plus your homepage when you link it. A page scores 1 when the URLs are equal (ignoring http against https, `www.`, a trailing slash and a fragment), 0.5 when it is the same page in another form, such as a different query string or capitalisation, and 0 when the canonical points elsewhere. A `.md` link is compared through the page it mirrors.

Sources: [LLMSRank — Canonical agreement audit](https://llmsrank.dev/docs/audits/canonical-agreement.md) · [Google Search Central — How to specify a canonical URL](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls)

### Why does it matter if my llms.txt links a non-canonical URL?

An agent may treat the two URLs as different pages, fetch both, or cite the one you don’t want quoted. Google gives the same advice for its own crawler: link to the canonical URL rather than a duplicate, and don’t name one URL in your sitemap and another in rel="canonical". Your llms.txt should follow the same rule, using absolute canonical URLs. The [consistency checker](https://llmsrank.dev/tools/consistency) lists each canonical mismatch with the exact line to fix.

Sources: [Google Search Central — How to specify a canonical URL](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls)

### Does canonical agreement affect my LLMSRank score?

Yes, since 2026-09-29. A linked page whose canonical points elsewhere scores 0 and one in another form scores 0.5; the audit is the mean over the pages we sampled. A page that declares no canonical is left out rather than counted against you, and if none of your sampled linked pages loads or declares one, the audit is Unverified and its weight is shared among the other Ecosystem audits instead of counting as a zero. We read the HTML the server sends and don’t run JavaScript, so a canonical added client-side isn’t seen.

Sources: [LLMSRank — How we score (rubric v2.0)](https://llmsrank.dev/docs/method.md) · [LLMSRank — Canonical agreement audit](https://llmsrank.dev/docs/audits/canonical-agreement.md)

### How often do llms.txt links match canonical URLs, in LLMSRank’s research?

Usually. In our 187-site research corpus (rubric v2.1; pages captured 2026-09-29 by LLMSRankBot, which obeys robots.txt), canonical agreement applied to 122 sites. 92 of them (75.4%) earned full marks, 20 (16.4%) scored 0 and 10 were partial; the mean was 0.81. A page can declare a canonical elsewhere for ordinary reasons: it moved to another domain, the link carries tracking parameters, or it is a section that canonicalises to the homepage. 65 sites were Unverified: no page loaded, none of the sampled linked pages declared a canonical, or the site joined the corpus after the September page sample. Good examples include netlify.com, aflac.com, taylormorrison.com, you.com and cloudflare.com.

Sources: [LLMSRank — How we score (rubric v2.0)](https://llmsrank.dev/docs/method.md) · [LLMSRank — Canonical agreement audit](https://llmsrank.dev/docs/audits/canonical-agreement.md)

See also: [all audits](https://llmsrank.dev/docs/audits.md) · [how scoring works](https://llmsrank.dev/docs/method.md)
