Markdown content negotiation

Serving a Markdown version when an agent sends Accept: text/markdown makes your content cheaper and cleaner for it to read.

Standard
Recommended

Who supports it

  • Claude CodeSupported (announced)

    Published 12 Feb 2026 · last checked 9 Oct 2026: Cloudflare blog: Introducing Markdown for AgentsCloudflare (not Anthropic) states: 'some of the most popular coding agents today – like Claude Code and OpenCode – send these accept headers'. A request to httpbin.org/headers on 2026-10-09 confirmed it directly: Claude Code 2.1.291 WebFetch sent 'Accept: text/markdown, text/html, */*' with User-Agent 'Claude-User (claude-code/2.1.291; ...)'. Anthropic's own docs do not document the header.

  • GitHub CopilotSupported (announced)

    Published 11 Jun 2026 · last checked 9 Oct 2026: microsoft/vscode commit f6b248c: Enhance WebPageLoader for markdown content extraction (#320146)This commit added Accept 'text/markdown, text/html;q=0.9, application/xhtml+xml;q=0.9, application/xml;q=0.8, */*;q=0.7' for main-frame requests, with the comment 'prefer markdown responses from sites that support agent-friendly content negotiation'. When the response is text/markdown it is used directly. It applies to the VS Code fetch tool, in VS Code releases after the merge. Checkly's Feb 2026 test, before this change, found Copilot sending an HTML Accept header.

25 others: no evidence yet. See every agent and browser

What it checks

The extension requests the page being scanned (not the homepage) with the Accept header a real agent sends:

Accept: text/markdown, text/html;q=0.9, */*;q=0.8

It passes when the response is successful, has a text/markdown (or text/x-markdown) content type, and the body does not start like an HTML document. An error page labelled as Markdown does not count.

If that fails, the extension tries two fallbacks so it can tell you what is close to working:

  • A Markdown-looking body served as text/plain, which differs from what the same URL returns for Accept: text/html.
  • Markdown served only when the request sends a bare Accept: text/markdown, which no real client sends.

This is the heaviest check in Content accessibility. The .md URL and rel="alternate" routes to Markdown are separate checks: Markdown URL fallback and Markdown alternate link.

Results

Status When
Pass The realistic Accept header gets a successful text/markdown response
Warn A Markdown body is returned, but labelled text/plain
Warn Markdown is returned only for a bare Accept: text/markdown, not the realistic header
Fail No Markdown version is offered through content negotiation

How to fix

When a request’s Accept header prefers text/markdown, respond with a Markdown version of the page and Content-Type: text/markdown. Parse the header properly, including quality values, rather than matching the exact string text/markdown.

Also send Vary: Accept, so caches keep the HTML and Markdown responses apart (see Markdown negotiation caching).

To test it:

curl -sI -H 'Accept: text/markdown, text/html;q=0.9, */*;q=0.8' https://example.com/page

The response should include Content-Type: text/markdown.

Support by agent and browser

Announced means the vendor’s own docs or announcement say so. Published is the date on the vendor’s own page, where it has one. Checked is the last time our weekly research found that page still saying so.

AgentStatusSource
Coding agents
Claude Code AnthropicSupported (announced)

Cloudflare blog: Introducing Markdown for Agents Published · Checked Cloudflare (not Anthropic) states: 'some of the most popular coding agents today – like Claude Code and OpenCode – send these accept headers'. A request to httpbin.org/headers on 2026-10-09 confirmed it directly: Claude Code 2.1.291 WebFetch sent 'Accept: text/markdown, text/html, */*' with User-Agent 'Claude-User (claude-code/2.1.291; ...)'. Anthropic's own docs do not document the header.

GitHub Copilot GitHubSupported (announced)

microsoft/vscode commit f6b248c: Enhance WebPageLoader for markdown content extraction (#320146) Published · Checked This commit added Accept 'text/markdown, text/html;q=0.9, application/xhtml+xml;q=0.9, application/xml;q=0.8, */*;q=0.7' for main-frame requests, with the comment 'prefer markdown responses from sites that support agent-friendly content negotiation'. When the response is text/markdown it is used directly. It applies to the VS Code fetch tool, in VS Code releases after the merge. Checkly's Feb 2026 test, before this change, found Copilot sending an HTML Accept header.

No evidence yet25
  • ChatGPT
  • Claude
  • Gemini
  • Perplexity
  • Copilot
  • Meta AI
  • ChatGPT Atlas
  • Comet
  • Dia
  • Gemini in Chrome
  • Edge Copilot Mode
  • Cursor
  • Codex
  • Windsurf
  • CCBot
  • Applebot
  • Amazonbot
  • Bytespider
  • Cohere
  • Mistral
  • DuckAssist
  • Chrome
  • Edge
  • Firefox
  • Safari

Adoption on the top 100 sites

2 of 99 measured sites implement it

Scanned 23 Oct 2026 with the Sitebulb Labs extension, against the Tranco list (tranco-56Z8N). 1 sites couldn’t be measured (bot challenge or timeout) and are left out of the share.

9 Oct 2026: 2%12 Oct 2026: 3%23 Oct 2026: 2%
9 Oct 2026 2% → 23 Oct 2026 2%
Sites implementing it2
  1. #2 cloudflare.com
  2. #55 wordpress.org

Overview

6/9

Gaining traction

Real support exists and adoption is growing.

How this rating is worked out6 of 9 points
FactorPointsWhy
Vendor support2 / 32 vendors supporting, 0 partly or planned
Top-100 adoption1 / 32% of measured sites
Spec maturity3 / 3Published standard

8 or more points is Established, 5 to 7 is Gaining traction, 2 to 4 is Speculative and under 2 is Stalled. A feature is also Stalled when more vendors have said no than yes. Read the spec.

Community insights

  • Sceptical

    No AI crawler uses content negotiation. Not one. They only discover the Markdown pages through the dedicated URLs, and only via the auto-discovery link.

    Dries BuytaertFounder of Drupal, co-founder of AcquiaOn their blog, 5 Mar 2026Website
  • In favour

    Content negotiation is the standard, and it’s the one every HTTP client already knows how to speak.

    Ben WordRootsOn their blog, 14 Apr 2026XWebsite
  • In favour

    Not every agent requests markdown today, but the ones that do are already giving their users a better experience — faster responses, lower costs, higher quality answers.

    Stefan JudisChecklyOn their blog, 19 Feb 2026XWebsite
  • In favour

    In the next version of Claude Code, Claude’s WebFetch tool automatically adds Accept: “text/markdown, *” to requests which helps docs sites provide token-efficient docs

    Boris ChernyCreator of Claude Code, AnthropicOn X, 13 Nov 2025X

Quotes are from public posts, checked against the original before they appear here. Suggest an insight, or ask for yours to be removed.