Skip to content
Citable

Definition

Canonical URL

Also known as: rel=canonical, canonical link

A canonical URL is the single address a site declares as the authoritative version of a page when the same content is reachable at several URLs — with and without a trailing slash, with tracking parameters, as a Markdown or syndicated copy. It is declared with a link element whose rel attribute is canonical, or the equivalent HTTP Link header, and tells crawlers where to consolidate signals and attribution.

Google, Yahoo and Microsoft announced joint support for rel="canonical" in February 2009, and the link relation was later written up as RFC 6596 (April 2012), an informational RFC rather than a standards-track one. Google's documentation lists four ways to indicate a preferred URL — a redirect, a rel="canonical" link element, the same relation in an HTTP Link header, and inclusion in a sitemap — and treats all of them as hints it combines rather than orders it obeys.

Answer engines make the canonical question sharper than classic search did, because the unit of reward is a citation attached to a specific URL. A guide that exists as /guides/x, /guides/x/, /guides/x?utm_source=newsletter and /guides/x.md can be retrieved and cited under any of them. Each variant then shows up separately in whatever you use to track citations, and a syndicated copy on another domain can be cited instead of the original.

The fix is the same as for search, applied to every representation:

http
HTTP/1.1 200 OK
Content-Type: text/markdown; charset=utf-8
Link: <https://example.com/guides/serving-markdown-to-llms>; rel="canonical"

Whether each AI crawler honours canonical declarations when choosing which URL to cite is not documented by any vendor, so a consistent canonical is necessary rather than sufficient. Pair it with a single indexable HTML URL per question and with the delivery pattern in Serving Markdown to LLMs.

Frequently asked questions

Should the Markdown version of a page have its own canonical URL?

No. Point it at the HTML page. A Markdown file has no head element, so send the declaration as an HTTP header: Link: <https://example.com/guides/x>; rel="canonical". The Markdown copy then contributes to the HTML page's signals instead of competing with it, and any citation lands on the URL you want to measure.

Is rel=canonical a directive?

Google treats it as a strong hint, not a command: it weighs the declaration alongside redirects, sitemap inclusion and internal links, and can pick a different canonical if the signals disagree. A permanent redirect is the only mechanism that removes the duplicate rather than merely labelling it.

Guides that use this term

  • Technical

    Serving Markdown to LLMs: content negotiation and .md endpoints

    Serving Markdown to LLMs means publishing a plain-text representation of each page next to the HTML one, so that AI crawlers and agents can read it without rendering JavaScript or spending tokens on markup. There are two delivery patterns: a .md suffix on the canonical URL, and content negotiation on the Accept: text/markdown request header, with Vary: Accept and a Link rel=canonical header pointing back to the HTML page.

    10 min read

  • Measurement

    Measuring AI visibility: how to track citations in ChatGPT, Perplexity and AI Overviews

    AI visibility is measured from four partial signals, because no answer engine reports citations directly. Referral traffic identifies clicks from chatgpt.com, perplexity.ai, copilot.microsoft.com, claude.ai and gemini.google.com; server logs show which AI crawlers fetch which pages; a fixed panel of prompts run on a schedule gives citation rate and share of answer; and Google Search Console reports AI Overview clicks only blended into Web search totals.

    8 min read