The first number I kept coming back to was 8.

Eight of the 100 companies had a named robots.txt rule for at least one of the six AI search or training controls in our main analysis.

That number is easy to misuse.

It does not mean only eight companies had rules that affected AI agents. A generic User-agent: * group can still determine the effective policy for GPTBot, OAI-SearchBot, ClaudeBot or another measured token. A path restriction is different from a root block. Search and training are different use cases. User-directed retrieval is different again.

Once we kept those distinctions intact, the study stopped looking like a simple allow-versus-block exercise.

Explicit AI-specific rules were uncommon in this sample. General crawler rules did much more of the work. Root-level restrictions were rare. A real llms.txt text file appeared on 12 of the 100 sites, with 11 matching the proposal structure we froze before collection.

The useful story is in those differences, not in one blended “AI crawler” score.

01

Key findings from the 2026 AI crawler study

Across the top 100 companies in the 2026 Fortune 500, 8 published a named rule for at least one measured AI search or training control, 12 served a real llms.txt text file, and root-level restrictions appeared in only a handful of rows. General wildcard crawler rules were much more common than explicit AI-specific groups.

Key findings, AI crawler controls across the top 100 companies in the 2026 Fortune 500. Every value uses the full N=100 sample.
FindingResultHow to read it
Companies with a named rule for at least one measured search or training token8 / 100Explicit AI-specific robots.txt treatment was uncommon in this sample.
Companies with a named search/discovery rule5 / 100Measured across OAI-SearchBot, Claude-SearchBot and PerplexityBot.
Companies with a named training/broader-AI-use rule8 / 100Measured across GPTBot, ClaudeBot and Google-Extended.
Companies with a search/discovery root restriction1 / 100SMALL N / DESCRIPTIVE ONLYSmall-N, descriptive only. A declared rule is not proof of crawler behavior.
Companies with a training/broader-AI-use root restriction3 / 100SMALL N / DESCRIPTIVE ONLYSmall-N, descriptive only.
Companies with at least one search/discovery partial-path restriction62 / 100Often inherited from broader crawler policy rather than a named AI-agent group.
Companies with at least one training/broader-AI-use partial-path restriction60 / 100Same caution applies.
Sites with a present llms.txt text file12 / 10011 proposal-conforming files plus 1 nonconforming text file.
Sites with a proposal-conforming llms.txt11 / 100Classified against the proposal snapshot used during collection.
Sites where /llms.txt was absent59 / 100Denied, unavailable and HTML fallback responses stayed in the denominator.

Every percentage above uses the full N=100 sample. We did not remove denied, unavailable or ambiguous cases to make the percentages cleaner.

02

Named AI-agent rules were uncommon

A lot of advice about AI crawler access begins with a block of robots.txt syntax.

Typical implementation advice is explicit: name GPTBot, OAI-SearchBot, ClaudeBot and PerplexityBot, then add Google-Extended if that use case matters to you.

The implementation looks explicit because the example is explicit. Most of the companies we checked were not publishing policy that way.

Only 5 had a named group for at least one of the three search/discovery tokens. Eight had a named group for at least one of the training or broader-AI-use controls. Across the combined six-token headline family, the total was still 8 companies because those sets overlap.

The effective rule often came from User-agent: * instead.

That difference matters in a real audit. A site can have no named GPTBot group and still restrict GPTBot through a wildcard group. Calling that “no AI crawler policy” would miss the rule that actually applies. Calling it an explicit GPTBot decision would overstate what the file says.

I separate two questions:

What rule applies to the agent?

Did the site name that agent specifically?

They are not interchangeable.

Our AI Crawlers, llms.txt & Machine Discovery guide handles the implementation side. This study has a different job: measure what a defined sample of large U.S. companies actually published.

03

“Block AI crawlers” is too blunt a question

There is a reason people search for phrases like block AI crawlers. Site owners want a switch they can understand.

The public controls are not one switch.

OpenAI documents OAI-SearchBot for search, GPTBot for content that may contribute to foundation-model training, and ChatGPT-User for certain user-triggered actions. Anthropic separates Claude-SearchBot, ClaudeBot and Claude-User. Perplexity separates PerplexityBot from Perplexity-User. Google describes Google-Extended as a robots.txt control token for specified Gemini training and grounding uses, not a separate HTTP crawler user agent.

The nine measured controls
FamilyOpenAIAnthropicPerplexityGoogle
Search/discoveryOAI-SearchBotClaude-SearchBotPerplexityBot—
Training/broader AI useGPTBotClaudeBot—Google-Extended
User-directed retrievalChatGPT-UserClaude-UserPerplexity-User—

Those roles come from the vendors' own current documentation, and they are materially different. That is why the study kept three families: search/discovery, training or broader AI use, and user-directed retrieval.

The main search-versus-training findings use the first two families. User-directed agents remain in the dataset, but we did not roll them into that headline comparison. OpenAI and Perplexity, for example, both describe user-directed fetches differently from their automatic crawlers, and Perplexity says its user-requested fetcher generally ignores robots.txt because the fetch was initiated by a user.

One broad “AI bot access” column would have been easier to publish. It would also have hidden exactly the distinction we wanted to measure.

04

Root-level restrictions were rare

The strongest declared restriction in our classification is a root-path restriction.

We found one company with a root restriction affecting at least one measured search/discovery token and three with a root restriction affecting at least one training/broader-AI-use token. The counts are too small for sweeping claims, so we report them descriptively.

Amazon is a useful concrete case. Its captured robots.txt had a named OAI-SearchBot group with Disallow: / and a named GPTBot group with Disallow: /. Under the locked method, that is a declared root restriction in both the search and training families.

User-agent: OAI-SearchBot Disallow: / User-agent: GPTBot Disallow: /

Walt Disney and Prudential Financial were messier. They produced the two live MIXED_WITHIN_TRAINING rows in the final dataset: the measured training controls did not all resolve to the same effective state. We kept the mixed result instead of forcing either company into a binary bucket.

That is the kind of detail a quick “how many companies block AI?” scrape tends to erase.

05

Partial-path restrictions were much more common

The broader pattern sat below the root.

At least one search/discovery token had a partial-path restriction at 62 of the 100 companies. For the training/broader-AI-use family, the count was 60.

Those numbers do not mean 62% of the sample made an AI-search-specific restriction decision. Many effective policies came from general crawler groups. What we can say is narrower: at least one measured token resolved to a rule that restricted one or more paths without blocking the root.

For me, that is one of the more practical findings in the dataset.

If you only grep a robots.txt file for named AI agents, you can miss the wildcard rule that applies. If you only look for Disallow: /, you can miss substantial path restrictions. If you report the result without retaining the source group, you lose the difference between a named-agent instruction and inherited general policy.

A useful AI crawler policy audit needs the matching group, the root result and the path-level result together.

Declared controls by use-case family, out of 100 companies. Named rule: search/discovery 5, training/broader AI use 8. Root-path restriction: search/discovery 1, training/broader AI use 3, both small-N and descriptive only. At least one partial-path restriction: search/discovery 62, training/broader AI use 60.
Search/discovery and training/broader AI use, side by side. All out of 100.

06

llms.txt appeared on 12 of the 100 sites

llms.txt gets a lot of attention relative to how often it appeared in this sample.

We found a real text file at 12 of the 100 governed corporate origins. Eleven matched the proposal structure used by the study. One was text, but did not meet that structural definition.

Fifty-nine were absent. The remaining states stayed separate: 11 denied, 14 temporarily unavailable and 4 HTML or site fallbacks.

An HTTP 200 at /llms.txt was not enough to count as adoption.

Walmart returned a bot-interstitial HTML page at that path, so we classified it as HTML_OR_SITE_FALLBACK. CVS Health returned a text file whose first non-empty line was an H1 and passed the structural test. Cisco published something that looked close to the proposal, including an H1, an H2 section and Markdown links, but the first non-empty line was a literal URL before the H1. Under the rule locked before collection, Cisco was PRESENT_NONCONFORMING_TEXT.

I like that Cisco example because it makes the classification rule visible. We did not decide after seeing the files which ones felt close enough to count.

The llms.txt proposal was modified to v2 in August 2026. We froze the proposal snapshot for this study before measuring the 100 companies, so the definition could not move halfway through collection.

And no, 12/100 is not evidence that llms.txt improves AI visibility. We did not test that question here.

llms.txt classification across 100 companies. ABSENT 59, DENIED 11, HTML_OR_SITE_FALLBACK 4, PRESENT_NONCONFORMING_TEXT 1, PRESENT_PROPOSAL_CONFORMING 11, TEMP_UNAVAILABLE 14. The six states sum to 100.
All six governed llms.txt states. Only the two PRESENT states are a real text file, 12 of 100 in total; an HTML or site fallback is not presence.

07

The awkward endpoint cases stayed in the denominator

Clean percentages get easier when the difficult rows disappear.

We kept them.

For robots.txt, 72 of the 100 endpoints parsed successfully. Five were absent, 9 were denied, 13 were temporarily unavailable, and 1 was malformed or ambiguous in the captured response.

UPS is the case I use to explain why the body matters. The request returned HTTP 200, but the body was an HTML “Access Denied” page. A status-code-only checker could easily turn that into a false green check.

Four collection cases also exposed TLS-chain problems in the research environment: Cencora, Cardinal Health, Intel and Eli Lilly. We retained the diagnostics, kept certificate verification enabled and left the affected requests unavailable. We did not modify the trust store or bypass verification simply to fill the cells.

  • UPSHTTP 200HTML “Access Denied”
  • CencoraTLS-chain problem
  • Cardinal HealthTLS-chain problem
  • IntelTLS-chain problem
  • Eli LillyTLS-chain problem

Publishing an unresolved state is better than manufacturing certainty. It is also why unavailable and ambiguous cases stayed inside the N=100 denominator.

08

How I would audit a real site

The study reinforced one practical rule for me: do not start an AI crawler audit with a list of bot names and stop when the names are absent.

Start with the decision the site owner is trying to make. Search discovery, model training and user-directed retrieval do not automatically have the same answer.

Then fetch the actual robots.txt response. Inspect the body, resolve the matching group for each relevant token, and keep named-versus-wildcard provenance alongside the effective result. Root and partial-path restrictions belong in separate fields. An inaccessible or malformed response should remain inaccessible or malformed until there is evidence to classify it differently.

Inspect /llms.txt the same way. A 200 is not the classification. The body is.

Only after that would I move into the separate question of whether the brand is appearing, cited or recommended in AI answers. Our How to Measure AI Search Visibility guide covers that measurement layer.

Crawler controls and observed visibility can affect the same strategy without being the same evidence. Our AI search citation study is a separate example of why citations, mentions and recommendations need their own observation layer too.

09

How we ran the study

The sample was ranks 1 through 100 of the domestic U.S. 2026 Fortune 500. Fortune's 2026 ranking is its 72nd annual list of the largest U.S. companies by revenue.

For each company, we resolved one governed corporate origin using a documented mapping hierarchy. The final mapping set contained 91 Tier-A mappings, 8 Tier-B mappings and 1 Tier-C mapping. We retained evidence when the ranked entity had materially changed between the Fortune list and collection. ExxonMobil Holdings at rank 9 was one such case after its 2026 redomiciliation.

We collected exactly two public endpoints from each governed origin: /robots.txt and /llms.txt.

The robots.txt parser used RFC 9309-compatible matching semantics. The nine measured controls were:

  • Search/discovery: OAI-SearchBot, Claude-SearchBot, PerplexityBot
  • Training/broader AI use: GPTBot, ClaudeBot, Google-Extended
  • User-directed retrieval: ChatGPT-User, Claude-User, Perplexity-User

The role definitions were locked from first-party documentation before the final collection: OpenAI, Anthropic, Perplexity and Google. Google-Extended was treated as a control token, not as a standalone HTTP crawler.

All 100 final-study rows were collected inside one 22-minute window on September 22, 2026. The final dataset contains 100 rows and 72 fields. Raw response bodies were hashed and retained where available. The default denominator for every published percentage in this article is N=100.

The preflight did its job before that final window. It exposed a traceability defect in our evidence pipeline. We corrected the pipeline, independently re-tested the affected controls, and never reused preflight observations as final-study rows.

After final collection, independent data QA reconciled all 91 Tier-A SEC mappings, re-hashed all 173 stored raw bodies, re-ran the classification logic across all 100 companies and reproduced the deterministic manual-review samples. A separate independent calculation review recomputed all eight headline metrics and all 161 candidate percentage rows. It also regenerated all 10 calculation outputs byte-for-byte.

That is more QA detail than most readers need. It is here because original research should leave enough of a trail for somebody else to challenge the number.

10

What this study does not prove

A public robots.txt rule tells us what the site declared under the parsing rules used in the study. It does not prove that a crawler complied with that rule.

The study does not establish network access or blocking from robots.txt alone. It does not show that llms.txt improves citations, rankings, traffic or recommendations. It does not show that a missing named AI-agent group is a deliberate decision to allow AI use.

The top 100 companies in the 2026 Fortune 500 are a reproducible sample of very large U.S. companies. They are not a proxy for all websites, all industries or smaller businesses.

User-directed retrieval also needs care. The vendor documentation does not describe every user-directed agent as behaving like an automatic crawler. We retained those tokens in the dataset but kept them outside the main search-versus-training headline.

I would rather leave the conclusion narrower than the evidence than turn a useful AI crawler study into a claim it cannot support.

11

Reproduce it, challenge it, or run it again

The public research package is designed so the headline does not have to stand on trust alone.

It includes the governed 100-row dataset, data dictionary, calculation outputs, methodology, definitions and enough company-level trace information to reproduce the published counts without relying on this article.

The interesting next test is not to quote “8%” or “12%” as a universal benchmark. Run the method against another population. Repeat the same top-100 Fortune 500 sample later. Change the sample deliberately and disclose the change. See which public controls move.

If the numbers change, that is useful evidence too.

For the wider program, see DankRank Research. If you need to understand what your own site currently declares, start with a search and AI visibility audit.

Download the AI Crawler Controls 2026 dataset (.zip) ↓Governed 100-row dataset, data dictionary, calculation outputs, methodology and company-level trace.