GEON GEON
GEO Guide 2 weeks ago 7 min

Is llms.txt Actually Read? How to Measure It in Your Own Logs

The llms.txt readership debate runs almost entirely on assertion: Google explicitly says it doesn't use the file, OpenAI's and Anthropic's official bot docs never mention it, and Perplexity's only reference points back to its own index. Here's the method for measuring whether your own file is actually being fetched — including GEON's, since we haven't measured it either.

Is llms.txt Actually Read? How to Measure It in Your Own Logs

The llms.txt debate runs almost entirely on assertion, pulling in two directions at once: one camp says every site needs one, the other claims no AI engine reads it. Both share the same flaw — neither rests on measurement. This post doesn't add a third claim; it shows you how to measure, in your own server logs, whether your llms.txt is actually being fetched. And to be upfront about it: GEON publishes a /llms.txt too, and until writing this post, we had never measured our own file.

What the llms.txt specification actually proposes

The llms.txt proposal was published by Answer.AI founder Jeremy Howard on September 3, 2024, and unlike robots.txt, it is not a crawler directive. The specification says so directly: the file's intended moment of use is inference — the point where a user is asking an assistant for help. In its own words: "will mainly be useful for inference, i.e. at the time a user is seeking assistance." The format reflects that: a Markdown file at the site root, with an H1 title as the only required section, an optional summary blockquote, and H2-delimited curated link lists. None of robots.txt's User-agent/Disallow syntax appears — the spec text contains no instance of "crawler," "disallow," or "user-agent."

This distinction matters because robots.txt became a formal IETF standard as RFC 9309 in 2022, and all four major AI vendors commit to honoring it. llms.txt has no such institutional backing — it's a convention proposed by one person, still open to community input. Whether an engine reads it or not isn't a standards violation, because it doesn't define an obligation in the first place.

What vendors say — and don't say

We checked the four major vendors' public statements one by one.

Google is explicit, and negative. Google's AI optimization guide (last updated July 10, 2026) states: "You don't need to create new machine readable files, AI text files, markup, or Markdown to appear in Google Search (including its generative AI capabilities), as Google Search itself doesn't use them." That's the only direct, dated "we don't use it" statement we found among the four vendors.

As of July 2026, OpenAI's and Anthropic's official bot docs never raise the subject. OpenAI's page documenting GPTBot, OAI-SearchBot, and ChatGPT-User's identity and robots.txt behavior walks through robots.txt compliance line by line, but mentions llms.txt only once — as a link to its own documentation index. Not a word on whether these crawlers consume a third-party site's llms.txt. Anthropic's official support article describing ClaudeBot, Claude-User, and Claude-SearchBot behavior is the same: it covers robots.txt at length, and the string "llms.txt" does not appear on the page once. That's not a contradiction — it's a gap, and the gap itself is a finding.

As of July 2026, Perplexity links to its own file and stays silent on everyone else's. Perplexity's bot documentation mentions llms.txt exactly once — as a link to its own API documentation index. There is no statement about whether PerplexityBot or Perplexity-User read the llms.txt file on the sites they visit.

What evidence actually looks like: a 137,000-site measurement

The only large-scale measurement we found on this gap came from Ahrefs. Ahrefs scanned 137,210 domains in May 2026 and flagged which ones had a valid llms.txt file — 28% did, roughly 38,360 domains. The result: of the domains with a valid file, 97% saw no requests for it whatsoever in May. Of the remaining 3% that did get requests, 96% of that traffic came from bots, not humans. And within that bot traffic, the category most people assume matters most — "AI retrieval bots" like OAI-SearchBot, PerplexityBot, and Claude's search crawler — accounted for just 1.1% of requests; by Ahrefs' own account, those three together produced only "a couple of hundred fetches" across the entire dataset. That's what measurement looks like instead of assertion: the existence of an llms.txt file doesn't mean it's being read, but it doesn't mean it isn't either — it means this is what happened across these 137,000 sites in May 2026, nothing broader.

GEON's own llms.txt file

To be direct about it: GEON publishes /llms.txt too, in two pieces. public/llms.txt sits in the repo as a static fallback; the file that actually ships is regenerated at build time by generate-llms-txt.ts, which overwrites that fallback — sorting the current blog post list by date and writing it out as an H1, a summary blockquote, and curated link lists, in the shape the spec describes. The format is faithful to the spec. What we haven't done, as of this post, is check our own production logs for how many requests that file gets, or from which user-agents. The rest of this post is the method for doing exactly that — and we're about to run it against our own file.

The method: isolating /llms.txt in your logs

We covered the fundamentals of reading server logs — UA verification, reverse DNS, log format — in a separate post and won't repeat them here. This section covers only what's specific to a single file's readership.

A request for /llms.txt is a distinctive line in your logs: one fixed path, almost never triggered by a human visitor the way most pages are. That makes it easy to isolate.

First, confirm the file is actually being requested at all:

grep '"GET /llms.txt HTTP' access.log

Break it down per bot:

grep '"GET /llms.txt HTTP' access.log | \
  grep -oE '(GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User)' | \
  sort | uniq -c | sort -rn

Status-code distribution catches whether the file itself is 404ing:

grep '"GET /llms.txt HTTP' access.log | awk '{print $9}' | sort | uniq -c

A positive result looks like this: a 200-status GET request carrying a known AI bot's user-agent, from an IP verified by reverse DNS. That tells you the file was fetched. It does not tell you the content was actually used in any specific answer — that link happens entirely on the vendor's side and is invisible from your log.

A negative result does not prove the opposite. Seeing zero requests in your observation window doesn't mean that engine "never" reads llms.txt. Three explanations are possible: your observation window was too short (Ahrefs' own study watched 137,000 domains for a full calendar month and still found 97% silence — for a single site, that means a few days of logs prove nothing); your file may not be discoverable yet (unlike sitemap.xml, there is no robots.txt convention pointing crawlers to llms.txt — a bot has to already know the fixed path to check it); or none of the queries that arrived during your window happened to need your site.

How long to wait: keep at least 30 days of logs and aggregate weekly. As our server-log guide describes, AI bots crawl in irregular batches — a single empty week proves nothing.

Three actions follow directly: confirm your llms.txt actually returns 200; add the filter above to your existing log pipeline — one more line, not a new pipeline; and measure for at least 30 days before reporting a result, as a measurement rather than a verdict. GEON's readiness audit already checks whether your llms.txt exists and is correctly formatted; whether it's actually being read is a question only your logs can answer — and now you know how to ask them.

Deniz

Deniz

Content & GEO Strategy

Related Posts

GEO Guide

Our Own Site Was Invisible to AI Crawlers: Anatomy of a Prerender/Deploy Failure

7 min
GEO Guide

Your robots.txt Isn't Blocking What You Think: A 2026 LLM Crawler Decoder

7 min
GEO Guide

Your Cover Image Is Now an AI Citation

6 min