llms.txt adoption & conformance
llms.txt is an emerging, non-IETF convention (proposed by Jeremy Howard, 2024): a markdown file at /llms.txt describing a site for LLMs. We measure how many sites publish one and whether it conforms to the llmstxt.org structure.
- Ahrefs (137K sites): ~28% publish, but ~97% are never read; of the read 3%, 96% of requests were bots. AI bots don't probe for missing llms.txt.
- SE Ranking (300K domains): no measurable AI-citation lift.
- Google's John Mueller calls it a "temporary crutch"; OpenAI/Anthropic steer owners to robots.txt.
- HTTP Almanac 2025: of 324,184 valid files, ~39.6% were generated by the All in One SEO WordPress plugin — adoption is largely passive CMS-plugin default, not strategy.
Adoption by rank decile
Decile 1 = the most popular 100k. This tests RQ-4: is adoption driven by big brands, or spread across the long tail via CMS defaults?
Adoption is roughly flat across the top 500k (deciles 1–5 all ~10–13%; genuine, non-HTML files) — it does not concentrate in the head, which is consistent with passive CMS-plugin defaults rather than brand-led strategy (RQ-4).
data table
| Rank decile | sample | adoption | conformant of published |
|---|---|---|---|
| 1 | 72,071 | 11.3% | 87.7% |
| 2 | 67,661 | 12.9% | 89.4% |
| 3 | 60,090 | 11.5% | 89.8% |
| 4 | 59,091 | 9.9% | 89.5% |
| 5 | 60,083 | 9.9% | 91.7% |
| 6 | 58,851 | not probed | not probed |
| 7 | 57,950 | not probed | not probed |
| 8 | 49,784 | not probed | not probed |
| 9 | 40,093 | not probed | not probed |
| 10 | 48,990 | not probed | not probed |
Paired bars: adoption (blue) and conformance-of-published (amber). Deciles 6–10 not probed this crawl (cohort = top 500k).
This crawl's llms.txt cohort covers the Tranco top 500k (rank deciles 1–5); deciles 6–10 are not probed this crawl and join in a later crawl. The cohort is rank-stratified & liveness-gated (see methodology).
Genuine files vs HTML soft-404s
Many origins serve their homepage HTML for a missing /llms.txt or /ai.txt and still return 200. We count a file as genuine only when it's a 200 that is not HTML. Raw-200 adoption would be 29.5% — but that's mostly fakes.
~97% of apparent /ai.txt "adoption" is HTML, not a real file. Separating the two is itself a finding.
caveat These are counts, not adoption rates — each variant has a different denominator. This crawl probes tiered and stores one row per domain (the winning variant), so a variant's count is only over the domains where that path was actually probed and won: /llms.txt is probed on every live domain; the supplements (/llms-full.txt, /llms-ctx.txt, /llms-ctx-full.txt) are probed only when /llms.txt returned 200 but was non-conformant; and /ai.txt is probed on every live domain but only recorded when no conformant llms.txt variant was found first. A site that publishes a good /llms.txt and a /llms-full.txt is invisible in the supplement rows. Per-variant denominators need a re-crawl that records every variant independently; until then, do not divide these counts by the probe total.
data table
| variant | 200s | genuine | HTML soft-404 | probed when |
|---|---|---|---|---|
| /ai.txt | 9,706 | 328 | 9,378 | every live domain; recorded only if no conformant llms.txt won |
| /llms.txt | 5,717 | 5,656 | 61 | every live domain |
| /llms-full.txt | 62 | 20 | 42 | only when /llms.txt was a non-conformant 200 |
| /llms-ctx-full.txt | 40 | 3 | 37 | only when /llms.txt was a non-conformant 200 |
| /llms-ctx.txt | 14 | 0 | 14 | only when /llms.txt was a non-conformant 200 |
Solid = genuine (non-HTML 200); red = HTML soft-404 masquerading as a file. Denominators differ per variant — see the caveat above.
Who generates llms.txt?
Of 6,007 genuine files, 38.2% carry a detectable generator signature — our own measurement of the CMS/plugin-driven nature of adoption (RQ-4). Bars colored by conformance rate.
data table
| generator | files | conformant |
|---|---|---|
| (none detected) | 3,710 | 82.9% |
| Shopify | 923 | 99.1% |
| Yoast SEO | 488 | 99.2% |
| WordPress | 284 | 93.7% |
| All in One SEO | 234 | 99.1% |
| Rank Math | 131 | 100.0% |
| Wix | 76 | 100.0% |
| HubSpot | 68 | 91.2% |
| Ghost | 52 | 92.3% |
| Blogger | 19 | 100.0% |
| Webflow | 9 | 77.8% |
| Squarespace | 4 | 100.0% |
Generator-produced files are near-universally spec-conformant; hand-rolled ones less so.
Mixed signals
Of genuine llms.txt publishers, 18.2% (1,091 of 6,007) also name at least one AI crawler in robots.txt — publishing a welcome mat for LLMs while addressing their crawlers directly.
caveat Naming ≠ blocking. A named crawler could be an Allow or a Disallow — this v1 measures naming only. The rigorous allow/block verdict split (the Mixed Signals quadrant) lands with per-bot verdicts in a later crawl.
data table
1,091 of 6,007 genuine publishers name ≥1 AI crawler in robots.txt.
Names an AI crawler in robots.txt (allow OR block undetermined) vs no AI crawler named.
Emergent section vocabulary
The most common H2 section titles across the genuine corpus — the de-facto schema sites are converging on (no spec mandates these).
data table
| section title | files |
|---|---|
| optional | 1,128 |
| platform | 832 |
| pages | 770 |
| read-only browsing (no authentication required) | 764 |
| for personal shopping assistants and agents acting on behalf of a user | 761 |
| commerce protocol (ucp) | 761 |
| store policies | 736 |
| posts | 617 |
| categories | 502 |
| sitemaps | 395 |
| resources | 351 |
| products | 334 |
| company | 316 |
| tags | 300 |
| contact | 267 |
| about | 241 |
| pricing | 189 |
| blog | 187 |
| solutions | 164 |
| use cases | 148 |
Normalized (lower-cased) H2 titles across genuine llms.txt files.
llms-full.txt: observed, but not measured as a rate
We observed 20 genuine /llms-full.txt files (after removing HTML fakes). We deliberately do not express that as an adoption percentage, because this crawl's probe order means the denominator is unknown — see the caveat above. no denominator
llms.txt Hall of Fame
Largest genuine files (by lines)
| cashfree.com | 23,230 lines |
| searchengineland.com | 19,835 lines |
| constructionexec.com | 18,690 lines |
| st-andrews.ac.uk | 17,623 lines |
| 3qsdn.com | 15,882 lines |
| huayi-group.com | 15,526 lines |
| mailchimp.com | 13,893 lines |
| ucsf.edu | 13,271 lines |
| niliplus.com | 12,924 lines |
| beihaicomposite.com | 12,237 lines |
| lent.az | 11,694 lines |
| rollbar.com | 11,653 lines |
Most links
| ucsf.edu | 10,981 links |
| traidmod.com | 10,666 links |
| practicetestgeeks.com | 10,524 links |
| vdu.lt | 7,667 links |
| fivetran.com | 7,521 links |
| starcasino.nl | 7,333 links |
| steuertipps.de | 7,272 links |
| archisevilla.org | 7,126 links |
| nykaa.com | 6,774 links |
| gomining.com | 6,486 links |
| creativepro.com | 6,257 links |
| kauveryhospital.com | 5,976 links |
HTML masquerading as /llms.txt
200 on the canonical path, but the body is HTML — a soft-404 in disguise.
| yumpu.com |
| zimperium.com |
| searchenginejournal.com |
| github.blog |
| lidl.com |
| otempo.com.br |
| namirial.it |
| bucetaflix.com |
| xtremepush.com |
| transparency.org |
| appcues.com |
| colgate.com |