AI Ranked
Original research

Markdown for agents and AI content signals: who actually uses them?

We asked 285 high-traffic sites for Markdown the way an AI agent does and read every AI usage signal they send, from Content-Signal lines to noai tags and TDMRep files.

Short answerMarkdown for agents means a site returns a clean Markdown copy of a page when an AI agent asks for one with an Accept: text/markdown header. We tested 285 high-traffic sites and 28 of 218 that answered (12.8%) did it. B2B SaaS leads at 28.4%. Not one of 36 news homepages did.
Key takeaways
  • 25 of 88 B2B SaaS homepages (28.4%) returned Markdown on request, against 3 of 130 homepages in every other category combined. The first adopters are the companies that want AI agents to read them.
  • 21 of 250 readable robots.txt files (8.4%) carry a Content-Signal line. 11 say ai-train=yes, 9 say ai-train=no and 1 sets it differently by crawler.
  • The old method still dominates opt-outs: 94 of 250 sites (37.6%) disallow at least one AI training crawler by name, and 90% of news publishers do. Only 4 of those 94 also use Content-Signal.
  • Older opt-out tags are close to unused: 0 of 219 homepages carry noai or noimageai, 0 of 250 robots.txt files use the IETF Content-Usage rule, 0 of 285 sites serve an ai.txt file and 4 use TDMRep.
  • The Markdown copies are small. The median was 2.6% of the size of the same homepage's HTML, and Cloudflare served 16 of the 28.

How many websites serve Markdown to AI agents?

About one in eight that we could test. We requested each homepage a second time with the header Accept: text/markdown, text/html;q=0.9, which is what an agent sends when it prefers Markdown but will take HTML. 218 homepages answered that request with HTTP 200, and 28 of them (12.8%) sent back a Markdown document instead of a web page. The other 190 ignored the header and returned their normal HTML.

The idea got its push from Cloudflare. In February 2026 it launched Markdown for Agents, an edge feature that converts HTML to Markdown on the fly when a request asks for it, free in beta on Pro, Business and Enterprise plans. Cloudflare's own example made the case in tokens: the launch post took 16,180 tokens as HTML and 3,150 as Markdown, an 80% cut. It also said coding agents such as Claude Code and OpenCode already send these headers. Anything that saves an agent tokens makes your page cheaper to read and easier to quote whole.

How many sites use each AI usage signalHorizontal bars, scale 0 to 40 percent. Blocks an AI training bot (user-agent rule): 94 of 250 (37.6%); Returns Markdown when asked: 28 of 218 (12.8%); Content-Signal line in robots.txt: 21 of 250 (8.4%); data-nosnippet on the homepage: 16 of 219 (7.3%); TDMRep reservation (file, tag or header): 4 of 285 (1.4%); noai or noimageai directive: 0 of 219 (0.0%); IETF Content-Usage rule: 0 of 250 (0.0%); ai.txt file: 0 of 285 (0.0%). Blocks an AI training bot (user-agent rule) 94/250 · 37.6% Returns Markdown when asked 28/218 · 12.8% Content-Signal line in robots.txt 21/250 · 8.4% data-nosnippet on the homepage 16/219 · 7.3% TDMRep reservation (file, tag or header) 4/285 · 1.4% noai or noimageai directive 0/219 · 0.0% IETF Content-Usage rule 0/250 · 0.0% ai.txt file 0/285 · 0.0%
Share of sites using each signal. The grey bar is the old method (a robots.txt group that disallows at least one of seven AI training crawlers) for comparison. Denominators differ: 250 readable robots.txt files, 219 readable homepages, 218 homepages that answered the Markdown request, 285 sites for well-known files. 285 high-traffic sites in 10 categories, fetched 28 Oct 2026 by AI Ranked with a desktop Chrome user agent. Download the CSV.

The bars above put every signal we checked on one scale. The grey bar is the older tool, a named robots.txt rule that shuts out an AI training crawler, and it is still about three times as common as any of the newer ones. Markdown on request comes next, ahead of the Content-Signal line that Cloudflare also promotes. Everything after that is close to zero.

Which kinds of sites serve Markdown to agents?

Software companies, almost exclusively. 25 of the 28 Markdown responders are in our B2B SaaS group, and the other 3 are developer platforms: GitLab, Cloudflare and WordPress.org. We got no Markdown from any of the 36 news homepages that answered, none from search engines, social networks, retailers, travel sites, universities, streaming services or government sites.

CategoryHomepages that answeredReturned MarkdownShare
B2B SaaS882528.4%
Tech and developer18316.7%
News and media3600%
Reference and education1600%
E-commerce and marketplaces1500%
Social and community1400%
Search and portals1000%
Government and public sector900%
Video and streaming800%
Travel and local400%
All sites2182812.8%

The SaaS names read like a list of companies that sell to developers or to teams buying AI tooling: Asana, Zendesk, Intercom, Okta, Miro, Pipedrive, Webflow, Amplitude, Mixpanel, Deel, Lattice, Brex, Vercel, Netlify, Sentry, PagerDuty, Postman, Wrike, Typeform, Sanity, Algolia, Jasper, Outreach, ZoomInfo and Hootsuite. Their buyers increasingly ask an assistant to compare tools before they open a browser tab, so the incentive is plain.

Sentry did the most interesting thing with it. Its Markdown homepage is a short note telling the agent it has reached a page meant for humans, followed by the configuration for Sentry's MCP server. That's a homepage written for a machine reader, and at 976 bytes it was the smallest response in the set.

Our takeIf you sell software and your buyers research with AI assistants, serving Markdown is the cheapest agent-facing change we measured, and roughly a quarter of the SaaS sites in our sample already do it. Check that the Markdown copy carries your pricing, plans and product facts, because an agent that reads only that copy will repeat only what's in it.

Which platforms are serving the Markdown?

Cloudflare, for most of it. The response headers of 16 of the 28 Markdown sites name Cloudflare, 6 name Vercel and 2 name Netlify. The last 4 came from nginx, Google's load balancer or CloudFront, which points to a custom build. Being on Cloudflare made a large difference: 16 of 61 Cloudflare-served homepages (26.2%) returned Markdown, against 12 of 157 elsewhere (7.6%).

Which platform served the MarkdownHorizontal bars, scale 0 to 60 percent. Cloudflare 16 of 28 (57.1%); Vercel 6 of 28 (21.4%); Netlify 2 of 28 (7.1%); Other (nginx, Google, CloudFront) 4 of 28 (14.3%). Cloudflare 16 of 28 · 57.1% Vercel 6 of 28 · 21.4% Netlify 2 of 28 · 7.1% Other (nginx, Google, CloudFront) 4 of 28 · 14.3%
Edge or hosting platform named in the response headers of the 28 sites that returned Markdown (server, cf-ray, x-vercel-id, x-nf-request-id). 285 high-traffic sites in 10 categories, fetched 28 Oct 2026 by AI Ranked with a desktop Chrome user agent.

You can often tell which route a site took. Cloudflare's converted responses add a Content-Signal header, and 15 of the 28 Markdown responses carried one. Three sites (Cloudflare, Netlify and Hootsuite) also sent an x-markdown-tokens header with a token count. The Vercel-hosted sites, including Vercel itself, Intercom, Brex and Sanity, sent clean Markdown with neither header, so their conversion runs somewhere other than Cloudflare's feature.

How much smaller is the Markdown version of a page?

Very much smaller. The median Markdown homepage was 2.6% of the byte size of the same homepage served as HTML. Across all 28 sites, 17.5 MB of HTML shrank to 0.49 MB of Markdown, or 2.8%. Bytes aren't tokens, and much of a modern homepage's weight is scripts and styling that a parser drops anyway, so treat this as a ceiling on the saving rather than the token bill an agent pays.

SiteServed byHTML homepageMarkdown homepageMarkdown as % of HTML
sentry.ioOther614 KB1.0 KB0.2%
cloudflare.comCloudflare1,304 KB2.9 KB0.2%
vercel.comVercel572 KB2.2 KB0.4%
mixpanel.comOther1,239 KB6.6 KB0.5%
miro.comOther1,488 KB9.3 KB0.6%
asana.comNetlify891 KB5.9 KB0.7%
postman.comCloudflare461 KB5.1 KB1.1%
intercom.comVercel1,515 KB20.2 KB1.3%
brex.comVercel694 KB9.4 KB1.4%
amplitude.comVercel386 KB5.3 KB1.4%
deel.comCloudflare1,186 KB16.8 KB1.4%
netlify.comNetlify401 KB9.1 KB2.3%
sanity.ioVercel382 KB9.3 KB2.4%
okta.comCloudflare417 KB10.7 KB2.6%
wordpress.orgOther173 KB4.7 KB2.7%
zoominfo.comCloudflare348 KB11.9 KB3.4%
zendesk.comCloudflare869 KB31.5 KB3.6%
hootsuite.comVercel448 KB16.9 KB3.8%
algolia.comCloudflare291 KB11.3 KB3.9%
wrike.comCloudflare1,422 KB70.6 KB5.0%
pagerduty.comCloudflare366 KB21.2 KB5.8%
lattice.comCloudflare332 KB19.9 KB6.0%
pipedrive.comCloudflare410 KB27.4 KB6.7%
gitlab.comCloudflare213 KB16.0 KB7.5%
outreach.ioCloudflare196 KB15.6 KB8.0%
typeform.comCloudflare316 KB27.5 KB8.7%
jasper.aiCloudflare475 KB46.2 KB9.7%
webflow.comCloudflare508 KB64.0 KB12.6%

The spread says something about what each team decided to keep. Webflow's Markdown homepage was the largest at about 64 KB because it keeps most of the page copy. Cloudflare's own was under 3 KB. Neither choice is wrong, but a very short Markdown file can strip out the product detail an AI answer needs. If you serve one, read it the way an agent would and check that your category, buyer, pricing model and main features survive the conversion.

How many sites use Cloudflare's Content-Signal in robots.txt?

21 of 250 readable robots.txt files (8.4%). Cloudflare introduced the Content Signals Policy in September 2025 as an addition to robots.txt with three yes or no values: search (building a search index and showing links and snippets), ai-input (feeding content into a model's answer, as in grounding or retrieval) and ai-train (training or fine-tuning a model). A line looks like Content-Signal: search=yes, ai-input=yes, ai-train=no.

What the 21 sites with a Content-Signal line say about AI trainingDonut chart: ai-train=yes (training allowed) 11 of 21; ai-train=no (training refused) 9 of 21; Different by crawler 1 of 21. 21sites ai-train=yes (training allowed)11 of 21 · 52.4% ai-train=no (training refused)9 of 21 · 42.9% Different by crawler1 of 21 · 4.8%
The ai-train value in every Content-Signal line found in 250 readable robots.txt files. "Different by crawler" is one site that says yes to every crawler except Bytespider. 285 high-traffic sites in 10 categories, fetched 28 Oct 2026 by AI Ranked with a desktop Chrome user agent.

The split surprised us. More sites used the line to say yes to training (11) than to refuse it (9). The yes group is all software: Cloudflare, monday.com, Intercom, Webflow, Hootsuite, Deel, Netlify, Sentry, PagerDuty, Sanity and Jasper. The refusals come from Stack Overflow, Freshworks, Rippling, Wrike, The Atlantic, Corriere della Sera and three Twilio brands (twilio.com, sendgrid.com and segment.com), which ship the identical line. Amplitude says yes to every crawler it names except Bytespider, which gets no on all three signals plus a disallow.

SignalyesnoNot setDiffers by crawler
search19101
ai-input17211
ai-train11901

Almost nobody turns off the answer side. Only Stack Overflow said search=no to every crawler, and only The Atlantic and Corriere della Sera said ai-input=no. Both of those also block several AI crawlers by name, so the signal backs up a rule they already had. The common SaaS pattern, ai-train=no with search=yes and ai-input=yes, reads as "quote us in answers, don't train on us", which is a coherent position for a vendor that wants citations.

None of the 250 files contained Cloudflare's managed block, which Cloudflare's documentation says it prepends only when a site turns on Bot Preference Sync and sets at least one AI policy to block. Cloudflare says the managed robots.txt feature is on for more than 3.8 million domains, but in a sample of large, hand-run sites every Content-Signal line we found was written in by the site itself. Only The Atlantic also pasted the policy's legal preamble into its file.

Do sites still block AI crawlers the old way?

Yes, and by a wide margin. 94 of 250 robots.txt files (37.6%) disallow the homepage for at least one of seven AI training crawlers (GPTBot, ClaudeBot, Google-Extended, Applebot-Extended, CCBot, meta-externalagent or Bytespider), and 64 (25.6%) do the same to at least one AI search or user agent. Only 4 of the 94 training blockers also write a Content-Signal line. Blockers block by name; the new signals are mostly used by sites that want to be read.

Old and new AI signals by type of siteGrouped bars, scale 0 to 100 percent. B2B SaaS: blocks 10 of 93 (10.8%), new signal 31 of 93 (33.3%); News and media: blocks 45 of 50 (90.0%), new signal 2 of 50 (4.0%); All other categories: blocks 39 of 107 (36.4%), new signal 4 of 107 (3.7%). Blocks an AI training botSends a new signal B2B SaaS (n=93) 10/93 · 10.8% 31/93 · 33.3% News and media (n=50) 45/50 · 90.0% 2/50 · 4.0% All other categories (n=107) 39/107 · 36.4% 4/107 · 3.7%
Sites with a readable robots.txt file (250). "Blocks an AI training bot" means a user-agent group disallows the homepage for at least one of GPTBot, ClaudeBot, Google-Extended, Applebot-Extended, CCBot, meta-externalagent or Bytespider. "Sends a new signal" means a Content-Signal line or a Markdown response to an Accept: text/markdown request. 285 high-traffic sites in 10 categories, fetched 28 Oct 2026 by AI Ranked with a desktop Chrome user agent.

The two groups at the ends of the chart behave like mirror images. 45 of 50 news publishers (90.0%) block an AI training bot, and 2 of 50 (4.0%) send any of the new signals. Among B2B SaaS sites with a readable robots.txt, 10 of 93 (10.8%) block a training bot, while 31 of 93 (33.3%) send a Content-Signal line, serve Markdown, or both. Every other category sits close to the news pattern on new signals (4 of 107, 3.7%) and in between on blocking (39 of 107, 36.4%).

That fits what we found in our robots.txt study of the same 285 domains earlier this month: news publishers make up close to half of the blockers (45 of the 94 here), and for them the content is the product. Software companies sell something else, so being quoted by an assistant costs them nothing and can bring them buyers. The new signals give that second group a way to say so out loud.

Our takeA Content-Signal line is a statement of preference about use, not a lock. A named Disallow rule is the control that OpenAI, Anthropic and Google describe in their own crawler documentation. If you want to keep a crawler out, name it in a user-agent group. If you want to be quoted, the yes values are a harmless extra, but don't expect them to change who reads you.

Do any sites send contradictory signals?

Yes, and the cause is defaults. 15 Markdown responses carried a Content-Signal header with ai-train=yes, the value Cloudflare's Markdown for Agents adds to converted pages. For 8 of those sites (GitLab, Zendesk, Okta, Outreach, Pipedrive, Lattice, Typeform and Algolia) that header is the only content signal they send anywhere, so their only stated position on training may be one they never chose.

Wrike is the clearest conflict. Its robots.txt says Content-Signal: ai-train=no, search=yes, ai-input=yes. Ask its homepage for Markdown and the response header says ai-train=yes, search=yes, ai-input=yes. An agent that reads the header and never fetches robots.txt gets the opposite answer from one that does. Cloudflare's launch post says custom Content Signal policies for Markdown responses are planned; until a site sets one, the default speaks for it.

A second mismatch is in the names. The IETF's AI preferences working group drafts a vocabulary with the labels train-ai, ai-use and search, and a separate attachment draft that puts them in a Content-Usage robots.txt rule or HTTP header, such as Content-Usage: train-ai=n. Cloudflare's line says ai-train, the IETF says train-ai. We found the Cloudflare form 21 times and the IETF form zero times.

Does anyone use noai, ai.txt or TDMRep?

Barely. These are the older proposals for telling AI systems what they may do with a page, and our sample shows they never caught on outside a few publishers.

  • noai and noimageai. DeviantArt introduced these robots directives in November 2022. We found them in the meta robots tags or X-Robots-Tag headers of 0 of 219 homepages.
  • ai.txt. Spawning proposed a robots-style file at /ai.txt for text and image training permissions. 0 of 285 sites served one (several returned a normal web page at that path, which we did not count).
  • TDMRep. The W3C community group's TDM Reservation Protocol lets a rightsholder reserve text and data mining rights, a technical answer to Article 4 of the EU copyright directive. 4 sites use it: Nature and ScienceDirect, and the European newspapers Le Figaro and Corriere della Sera. Three publish a valid /.well-known/tdmrep.json file, ScienceDirect also sends a tdm-reservation header, and Corriere uses the meta tag.
  • Content-Usage. The IETF form described above: 0 of 250 robots.txt files and 0 homepage headers.

The pattern across all four is the same. Proposals that a single company or community put forward without a large platform switching them on stayed at or near zero. Content-Signal and Markdown for Agents both had Cloudflare behind them and made it into double digits among software companies within about a year.

Do sites use snippet controls to keep content out of AI Overviews?

Not on their homepages. Google's robots meta tag documentation says nosnippet applies to AI Overviews and AI Mode and stops the content being used as a direct input for them, and that data-nosnippet can fence off parts of a page. 0 of 219 readable homepages used nosnippet. 16 (7.3%) used data-nosnippet on at least one element, usually once, with Linear the outlier at 32 marked elements.

The snippet directive we did see points the other way. 17 homepages (7.8%) set max-snippet:-1, which tells Google there's no length limit on snippets, a permission rather than a restriction. They include Salesforce, Zendesk, CrowdStrike, Rippling, Harvard, NASA and TechCrunch. It may well come from a template or plugin rather than a decision anyone made about AI.

Homepages are the wrong place to look for page-level opt-outs, to be fair. A publisher that wants to keep paywalled articles out of AI Overviews would mark the articles, not the front page. What the homepage data does show is that no large site in our sample uses snippet controls as a blanket AI opt-out.

Which AI signals should your site send?

It depends on whether you want to be read or left alone, and the data gives a fairly clear rule for each case.

  • Pick Markdown on request if you sell to buyers who research with AI assistants and your site runs on a platform that makes it a toggle or a small route. Then fetch your own homepage with curl -H "Accept: text/markdown" https://yoursite.com/ and read what comes back.
  • Pick a Content-Signal line if you want a written record of your position on training and grounding. The SaaS default we saw most among refusers was search=yes, ai-input=yes, ai-train=no. If you also serve Markdown through Cloudflare, check the response header says the same thing as robots.txt.
  • Pick named Disallow rules if you need a crawler to stay out. That's what 90% of news publishers in our sample do, and it's the mechanism the crawler operators document. Our guide to AI crawlers and robots.txt lists the user agents and which ones serve search versus training.
  • Skip noai, ai.txt and Content-Usage for now unless a partner asks for them. Nobody in our sample uses the first two, and the IETF syntax is still a draft.
  • Pick TDMRep if you publish in the EU and want a machine-readable text and data mining reservation. Academic and news publishers are the only users we found.

Whatever you send, send it once and consistently. The most common fault we found was a site saying one thing in robots.txt and another in a header its CDN added on its behalf.

How we collected the data

Sample. The same 285 domains in 10 categories we used for our robots.txt study: 102 B2B SaaS companies (including G2, Capterra and Gartner), 53 news and media publishers from several countries, and 130 large sites across search and portals, social and community, video and streaming, e-commerce, travel, reference and education, tech and developer, and government. The list was built by hand, one entry per domain. Reusing it lets you compare the two datasets row by row.

Collection. On 28 October 2026 a Python script ran curl against every domain with a desktop Chrome user agent, a 25-second timeout, redirects followed and 16 requests in flight. Each domain got five requests: /robots.txt, the homepage as HTML, the homepage with Accept: text/markdown, text/html;q=0.9, /.well-known/tdmrep.json and /ai.txt. We kept the final response headers and bodies. We did not retry blocked requests or try to get past bot protection.

What counted. A robots.txt file was readable if it came back as plain text (not an HTML page) with HTTP 200, or with another status but a body that contained a User-agent line: 250 of 285. A homepage was readable if it returned HTTP 200 with HTML: 219. Most of the rest were 403, 429 or 202 responses from bot protection, concentrated among publishers and retailers. Markdown counted when the response to the Markdown request was HTTP 200 with a text/markdown content type; we checked by hand that all 28 bodies were Markdown and not HTML. Content-Signal and Content-Usage were read from uncommented robots.txt lines. Meta directives came from meta tags named robots, googlebot, bingbot or a named AI crawler, plus the X-Robots-Tag header. ai.txt counted only as plain text with at least one User-agent, Allow or Disallow line. TDMRep counted as a valid JSON array at the well-known path, a tdm-reservation meta tag, or a tdm-reservation header.

Blocking. We parsed each robots.txt with Python's standard robots parser and asked whether each of 13 AI user agents could fetch the homepage. Training crawlers: GPTBot, ClaudeBot, Google-Extended, Applebot-Extended, CCBot, meta-externalagent and Bytespider. Search and user agents: OAI-SearchBot, Claude-SearchBot and PerplexityBot, plus the user-triggered ChatGPT-User, Perplexity-User and Claude-User.

Platform and size. The serving platform comes from response headers (server, cf-ray, x-vercel-id, x-nf-request-id). Sizes are uncompressed body bytes of the two homepage responses fetched minutes apart. Every number on this page was computed by script from the CSV.

Limitations

  • We tested homepages. Some sites may serve Markdown or apply nosnippet on documentation, blog or article pages but not on the front page, so page-level figures are a floor.
  • 66 homepages didn't return a readable page to our fetcher, most of them publishers and retailers behind bot protection. Shares are computed on sites that answered, so the news and e-commerce figures rest on smaller groups.
  • Requests came from one network location with a browser user agent. A site could treat real AI crawlers, which fetch from their operators' published IP ranges, differently from us.
  • A Content-Signal or Content-Usage line records a preference. We measured what sites say, not whether any AI company honors it.
  • The sample leans toward large, well-known sites. Small sites on default Cloudflare settings may look quite different, which is why the managed robots.txt figure here (0 of 250) shouldn't be read as a web-wide rate.

Frequently asked questions

What is Markdown for agents?

It's the practice of returning a Markdown version of a page when a client sends an Accept: text/markdown header, so an AI agent gets the text without the HTML, scripts and styling. Cloudflare launched an edge feature by that name in February 2026. In our test, 28 of 218 high-traffic homepages that answered did it, 25 of them B2B SaaS.

How do I check if a site serves Markdown to AI agents?

Request the page with an Accept header that prefers Markdown, for example curl -H "Accept: text/markdown" followed by the URL, and look at the Content-Type of the response. text/markdown means it does. Sites on Cloudflare's feature also return a Content-Signal header, and some add an x-markdown-tokens count.

What is a Content-Signal in robots.txt?

It's a line from Cloudflare's Content Signals Policy that states yes or no for three uses: search, ai-input (using content in AI answers) and ai-train (training models). For example, Content-Signal: search=yes, ai-input=yes, ai-train=no. In our sample of 250 robots.txt files, 21 had one, and 11 of those allowed training.

Does a Content-Signal line stop AI crawlers?

No. It expresses a preference about how content is used after it's fetched and doesn't block access. To keep a crawler out you still need a Disallow rule in a user-agent group that names it. In our data, 94 of 250 sites block at least one AI training crawler that way, and only 4 of them also use Content-Signal.

Do websites use the noai meta tag?

Almost none of the large ones. DeviantArt introduced noai and noimageai in 2022, but we found them on 0 of 219 readable homepages across 285 high-traffic sites. The ai.txt file and the IETF Content-Usage rule were also at zero. Only 4 sites used TDMRep, all of them academic or news publishers.

Should B2B SaaS companies serve Markdown to AI agents?

If buyers research your category with AI assistants, it's a low-cost step: 28.4% of the SaaS homepages we tested already do it. Make sure the Markdown copy still contains your pricing, product facts and positioning, and that any Content-Signal header it carries matches what your robots.txt says.

Is the dataset free to download?

Yes. The CSV has one row for each of the 285 domains, with its category, robots.txt status, Content-Signal and Content-Usage values, AI crawler blocks, homepage meta directives, data-nosnippet count, Markdown response, serving platform, sizes, TDMRep and ai.txt results. Anyone can reuse it under CC BY 4.0, provided they credit AI Ranked and link back here.

Dataset: markdown-for-agents-study-data.csv (285 rows, one per domain, collected 28 October 2026). The license is CC BY 4.0: quote, chart or rework the data freely, with credit to AI Ranked and a link to this study.

Cite this page Marksman, Robin. "Markdown for agents and AI content signals: who actually uses them?" AI Ranked, October 28, 2026. https://airanked.ai/research/markdown-for-agents-study