Blog / A robots.txt edit does not take effect when you save it

A robots.txt edit does not take effect when you save it

A controlled experiment run over 40 days on university web logs reports fewer than 40 percent of AI assistant and AI search bots re-fetching robots.txt inside a 168 hour window, and 15 of 47 bots never fetching it at all during two of its experiments. RFC 9309 asks crawlers not to use a cached copy for more than 24 hours.

In short

  • Scrapers Selectively Respect robots.txt Directives, published at the 2025 ACM Internet Measurement Conference and posted to arXiv as 2505.21733 with a second version dated 23 October 2025, reports that 15 of 47 bots never fetched robots.txt at all during its endpoint access and disallow all experiments, and 9 of 34 never fetched it during its crawl delay experiment.
  • The same paper reports that fewer than 40 percent of the bots it classed as AI assistants or AI search crawlers fetched robots.txt within a 168 hour window, the longest of the five windows it tested, which is the lowest re-check rate of any category it measured.
  • Compliance and freshness point in opposite directions in that study: AI assistants averaged 0.616 and AI search crawlers 0.631 across three directives, both above the 0.420 average across all categories, while those same two categories re-read the file least often.
  • RFC 9309, published in September 2022, states that crawlers SHOULD NOT use a cached robots.txt for more than 24 hours, and Google's robots.txt documentation carrying Last updated 2026-07-08 UTC says Google generally caches the file for up to 24 hours but may cache it longer.
  • Lantad did not run this experiment, holds no capture of any site in its dataset and measured none of these figures, which are reported from the paper and the two specification pages as read on 3 August 2026.

Almost every piece of advice about AI crawlers ends at the same instruction: write the rule into robots.txt. What that instruction leaves out is when the rule starts applying. A robots.txt file is not configuration that a crawler consults on each request. It is a document the crawler fetched at some point in the past, parsed, cached, and is now acting on from memory. The gap between saving the file and the crawler holding a copy of it is real, it varies enormously by crawler, and for the categories most relevant to AI answers it is measured in days rather than hours.

Lantad measured none of what follows. This is a reading of one paper and two specification pages, opened and quoted on 3 August 2026. The part this site can add comes after the figures, and it is a distinction the usual advice collapses: whether a crawler obeys your file and whether a crawler has read your current file are separate properties, and a bot can score well on the first while being a week behind on the second.

MeasureFigureWhere it appears
Bots that never fetched robots.txt, endpoint and disallow experiments15 of 47Paper, section 5.1
Bots that never fetched robots.txt, crawl delay experiment9 of 34Paper, section 5.1
AI assistants and AI search crawlers re-fetching within 168 hoursunder 40%Paper, section 5.1
Average compliance across all categories and all three directives0.420Paper, table 5
Longest cached robots.txt age the standard asks for24 hoursRFC 9309, section 2.4
Headline figures, four read from arXiv 2505.21733 and one from RFC 9309 section 2.4. Reported from those documents as read on 3 August 2026, not measured by Lantad.

What the experiment did, and where these numbers come from

The paper is Scrapers Selectively Respect robots.txt Directives: Evidence From a Large-Scale Empirical Study, by Taein Kim, Karstan Bock, Claire Luo, Amanda Liswood, Chloe Poroslay and Emily Wenger, most of them in the Department of Electrical and Computer Engineering at Duke University. It was first posted to arXiv on 27 May 2025 and revised to a second version on 23 October 2025, and it appears in the proceedings of the 2025 ACM Internet Measurement Conference, held in Madison, Wisconsin from 28 to 31 October 2025.

The dataset is anonymised web traffic from 36 websites run by a large private US university, covering roughly 3.9 million external requests between 12 February and 29 March 2025. Grouping those requests into sessions, where five minutes of inactivity ends one, reduces 3,914,096 rows to 761,956. Across the whole set there are 19,250 distinct user agent strings and 8,841 distinct autonomous system numbers, but only 405 of those user agents match a known bot signature. The authors say plainly what that ratio implies, which is that most automated traffic never announces itself in a form anyone can act on. That is the same problem described here in a user agent is a claim, not an identity, arriving from the opposite direction: not a false name, but no name at all.

The controlled part ran on one site chosen for its bot volume. Four versions of robots.txt were deployed in sequence, each for two weeks, giving eight weeks in total. The base version blocked three paths. Version one added a 30 second crawl delay. Version two restricted most bots to a single endpoint. Version three disallowed everything for most bots. Eight search engine crawlers were exempted throughout at the institution's request. Traffic held steady across the four deployments, at between 111,206 and 119,399 unique site visits and between 75 and 87 unique bot visitors, which is what makes the four periods comparable at all.

The bot mix in the wider dataset is worth noting before reading anything into per-vendor figures. YisouSpider and Applebot together drove about 30 percent of all traffic. GPTBot accounts for 1,225 hits, or 0.16 percent, and ClaudeBot for 684, or 0.09 percent. Those are small samples for the crawlers most people care about, on a university estate rather than a commercial site, and the paper does not present them as representative of the web. The token counting problem is separate again and covered in the crawler tokens that never appear in your logs: some robots.txt product tokens send no user agent of their own, so they cannot appear in a log study however large it is.

The four robots.txt versions deployed in sequence on one site, two weeks each, as described in the paper's methodology. A restatement of the paper's own procedure, not a Lantad pipeline.

The AI crawlers complied better than the grey literature predicts

Before the uncomfortable finding, the convenient one, because leaving it out would misrepresent the paper. Ranked by weighted compliance across the three directives, SEO crawlers came first at 0.695, and the next two categories were AI search crawlers at 0.631 and AI assistants at 0.616. Both sit above the 0.420 average across every category. Search engine crawlers came in at 0.447, below both AI categories. Headless browsers, which is where a scraper running a browser without a display window lands, scored 0.155.

The authors flag this as surprising given how much has been written about AI bots ignoring robots.txt, and they name it as future work rather than explaining it away. The paper also records that Amazonbot, ClaudeBot and GPTBot each made notable efforts to comply with every directive, and that PerplexityBot, which had stated it will not respect robots.txt, nonetheless showed reasonably high compliance, which the authors read as either compliance by accident or as being more respectful than claimed. Running the other way, BrightEdge Crawler claims to respect robots.txt and complied poorly.

Compliance also fell as directives got stricter. Averaged across categories, the crawl delay directive drew 0.609, endpoint restriction 0.310 and disallow all 0.307. Crawl delay is the outlier and the paper is careful about why: a bot that was already slow complies with a 30 second delay without doing anything, so a high figure there is partly an artefact of default behaviour rather than evidence of obedience. That caveat matters more than it looks, because it is the mechanism behind the whole post: a bot can satisfy a directive it has never read.

None of this contradicts the divergence reported here previously between declared rules and served responses. 234 of 592 sites that ban GPTBot in robots.txt served it a 200 measured sites failing to enforce their own bans, and the sites that block AI crawlers are the ones with editors measured enforcement that was never declared. This paper measures a third thing again, which is the crawler's side of the same exchange. All three can be true at once because the file, the server and the crawler are three independent systems. What a site can actually address is narrower than the argument suggests: most vendors expose one lever, a point set out in six of the nine AI vendors we track publish one crawler token, and the current list of names worth writing down is enumerated in the AI crawler reference.

  • SEO crawlers 0.695 Highest of the nine categories
  • AI search crawlers 0.631 Second, above the 0.420 overall average
  • AI assistants 0.616 Third, and the category that re-reads least often
  • AI data scrapers 0.559 Fourth
  • Search engine crawlers 0.447 Below both AI categories
  • Intelligence gatherers 0.450 Non-SEO, non-AI data collection
  • Other 0.255 Catch-all category
  • Headless browsers 0.155 Lowest of the nine categories
Weighted compliance ratio by bot category, averaged across the crawl delay, endpoint access and disallow all directives, from table 5 of arXiv 2505.21733. A ratio of 1.0 is full compliance. Reported from the paper, not measured by Lantad.

How often does a crawler actually re-read robots.txt

This is the part of the paper that changes what a site owner should expect from an edit. The authors first noticed that some bots complied with directives they had demonstrably never fetched, which raised the question of how often bots fetch the file at all. The counts are direct: 9 of 34 bots never fetched robots.txt during the crawl delay experiment, and 15 of 47 never fetched it during the endpoint access and disallow all experiments. Some of those complied anyway, which the paper treats as an open question with two candidate explanations, either compliance by coincidence or retrieval of the file from some cache the experiment could not see. It declines to claim which, and says investigating caching was out of scope.

To measure frequency rather than presence, the authors found other sites in their estate whose robots.txt carried meaningful restrictions and was publicly reachable. Only 3 of the 36 sites qualified. They then segmented each bot's access log into fixed windows of 12, 24, 48, 72 and 168 hours from that bot's first robots.txt fetch, and counted a bot as complying with a given window length only if every window of that length in the 40 day dataset contained a fetch. That is a strict definition, and it should be read as such: one missed window disqualifies a bot for that length.

The result is the headline. Scrapers, archivers and intelligence gatherers re-fetch within 12 hours consistently, if they fetch at all. AI assistants and AI search crawlers have the lowest re-check rates of any category, with fewer than 40 percent of them fetching robots.txt within a 168 hour window. A 168 hour window is a week. The categories whose output most directly feeds AI answers are the categories least likely to have looked at your file in the last seven days.

Two limits are worth stating alongside that. Three sites is a small base for the frequency analysis, and the paper says so. And the population it can see is the population that identifies itself, which excludes an entire class of client: seven of nine AI coding agents arrived without a product name reported agents presenting as HTTP libraries rather than products, and a study keyed on known bot signatures cannot count those at all. There is also a class of fetch that no re-read schedule would help with, because it is not decided by the wildcard group in the first place, which is the subject of fourteen Google agents that a robots.txt wildcard does not stop. Newer controls layered into the same file, such as the signal line examined in Cloudflare's Content-signal line asks, and the Disallow rules under it block, inherit exactly the same delivery problem: they only take effect when the file is next read.

BotCrawl delayEndpoint accessDisallow all
Apache-HttpClientNot checked, 0.10Checked, 0.05Not checked, 0.0
AxiosNot checked, 0.0Not checked, 0.0Not checked, 0.0
BaiduSpiderNot checked, 1.0Not checked, 0.51Not checked, 0.0
BrightEdge CrawlerNot checked, 1.0Not checked, 0.28Not checked, 0.0
BytespiderChecked, 0.35Not checked, 0.0Checked, 0.02
DuckDuckBotChecked, 0.07Not checked, 0.0Checked, 0.02
Googlebot-ImageNot checked, 0.98Not checked, 0.0Not checked, 0.0
IframelyNot checked, 0.17Not checked, 0.0Not checked, 0.0
Microsoft-PreviewNot checked, 0.13Not checked, 0.0Not checked, 0.0
SkypeURIPreviewNot checked, 0.67Not checked, 0.01Not checked, 0.0
Slack-ImgProxyNot checked, 0.98Not checked, 0.0Not checked, 0.0
Table 7 of arXiv 2505.21733: bots that skipped the robots.txt fetch under one or more experimental versions, with their compliance ratio for each. An asterisk in the paper marks a bot excluded from the endpoint and disallow experiments at the institution's request. Reported from the paper, not measured by Lantad.

The standard asks for 24 hours and cannot enforce it

There is a written expectation here, and it is much shorter than the measured behaviour. RFC 9309, the Robots Exclusion Protocol, published September 2022 on the standards track, addresses caching in section 2.4 in three sentences. Crawlers MAY cache the contents of the file. Crawlers MAY use standard cache control. Crawlers SHOULD NOT use the cached version for more than 24 hours, unless the file is unreachable. That is the whole provision, and the operative word is SHOULD NOT, which in specification language is a strong recommendation that a crawler may depart from with reason, not a requirement.

The largest crawler operator documents the same number. Google's robots.txt documentation, carrying Last updated 2026-07-08 UTC when read on 3 August 2026, states that Google generally caches the contents of a robots.txt file for up to 24 hours, but may cache it longer in situations where refreshing the cached version is not possible, and that the cache duration can be influenced by max-age Cache-Control headers. So the norm is not in dispute and it is not obscure. What the measurement shows is that the norm and the observed behaviour of AI-related bots are roughly a factor of seven apart, and that a meaningful share of bots do not participate in the norm at all.

This is worth being precise about, because the temptation is to read it as bad faith. It need not be. A crawler that visits a domain once a fortnight has no occasion to re-fetch robots.txt daily; the 24 hour figure is a ceiling on cache age, not a requirement to poll. The paper cannot separate a bot that caches too long from a bot that simply visits rarely, and it does not claim to. Either way the consequence for the site owner is identical: the rule you wrote today is not the rule being applied to you today.

The other half of the delivery problem is what happens when the fetch does occur but fails. The status code the server returns for robots.txt itself decides the outcome before any rule is parsed, and a 404 and a 503 mean opposite things to a conformant crawler, which is set out in a 404 on robots.txt allows every crawler, a 503 blocks them all. RFC 9309 also adds a clause directly relevant to a stale copy: if the file has been undefined for a reasonably long period, given as an example of 30 days, a crawler may either treat it as unavailable or continue to use a cached copy. A site that serves errors while it edits its rules can therefore keep an old policy in force for a month by specification. For anyone auditing this against a named crawler, the identity of the client is a separate question again, and the terms this site publishes about its own scanner are on the bot page.

Sample Illustrative, not a measurement of any real site.

One robots.txt edit, one crawler holding a copy

  • Day 0, 09:00 GET /robots.txt crawler fetches, parses, caches 200
  • Day 0, 14:00 site owner edits robots.txt, adds Disallow for this token saved
  • Day 1 GET /pricing decided against the cached copy allowed
  • Day 3 GET /pricing still decided against the cached copy allowed
  • Day 7 GET /robots.txt first re-fetch, new rule now in force 200
  • Server log shows: two allowed fetches after the rule was written no error anywhere
An illustration of how a cached copy separates the rule from its effect, constructed to show the sequence rather than measured on any site. The 24 hour figure is the ceiling RFC 9309 section 2.4 asks for.

What to do when a robots.txt edit needs to take effect

The practical reading is not that robots.txt is useless. It is that an edit to it is a request with an unknown delivery time, and anything that needs to be true immediately needs a second mechanism. Three things follow, and none of them require trusting a figure from a study of a university estate.

Treat the edit as the start of a wait, not the end of a task. If you have server logs, the fetch of robots.txt is itself a logged request, and the interval between those fetches per user agent is the only measurement of this that applies to your own domain. Nothing external can see it: a scan from outside observes what your file says and what your server returns, never when a particular crawler last read it. Knowing which group a token resolves to is a different check and a cheaper one, and resolving a real file against a specific token is what the robots.txt tester exists for. Reading the file top to bottom does not tell you which group binds, because a named group and a wildcard group can give the same file opposite meanings for two crawlers.

Second, separate the things robots.txt can do from the things only the server can do. A directive is advisory in both directions, and the paper's central finding is about latency rather than defiance, but latency and defiance produce the same server log. If a page must not be served to a given client starting now, that decision belongs at the origin or the edge, which is the layering argument in two layers decide whether AI can read your site. Robots.txt is the polite request; the response your server sends is the answer.

Third, and pointing the other way, most sites reading this are not trying to block anything. They are trying to be read, and for them the delay works in reverse: an edit that opens access is also on the crawler's schedule, so removing a Disallow line does not produce a visit. What decides the outcome then is whether the page returns usable text when a crawler does arrive, which is what what GPTBot sees fetches and what the gap named prose parity measures. A site can admit every AI crawler in its file and still return an empty shell. That failure needs no cache to explain it and no waiting to fix.

What this site contributes to the subject is a measurement of one domain at one moment rather than a population over time, and the boundaries of that are written down in the methodology. It resolves a real robots.txt against a registry of crawler tokens and reports what a crawler fetch returned, which feeds a component of an AI visibility score. It cannot tell you when any crawler last read your file, and any tool claiming otherwise is inferring rather than observing. Aggregate findings across scans go on the research page when the sample supports publishing them, and a reading of somebody else's experiment, which is what this post is, does not belong there.

  • What your robots.txt resolves to per crawler token Fully observable from outside. The file is public and the matching rules are specified in RFC 9309.
  • What your server returns to a request carrying a crawler name Observable from outside. This is a fetch, and it can disagree with the file.
  • Whether the page returns readable text without JavaScript Observable from outside, and the failure that makes an open robots.txt worthless.
  • When a given crawler last fetched your robots.txt Not observable from outside. It appears only in your own server logs, as a request for /robots.txt from that user agent.
  • How long that crawler will hold its cached copy Not observable at all. RFC 9309 asks for no more than 24 hours and the paper measured AI categories going a week.
What is observable from outside a site and what is not, on the question of when a crawler last read robots.txt. A description of where each answer comes from, not a measurement of any site.

Related

Common questions

How long does it take for a robots.txt change to take effect?

There is no guaranteed interval. RFC 9309 section 2.4 says crawlers SHOULD NOT use a cached robots.txt for more than 24 hours, and Google's robots.txt documentation carrying Last updated 2026-07-08 UTC says Google generally caches the file for up to 24 hours. Measured behaviour is slower for AI-related bots: arXiv 2505.21733 reports fewer than 40 percent of the bots it classed as AI assistants or AI search crawlers fetching robots.txt within a 168 hour window.

Do AI crawlers ignore robots.txt?

Not in this study, which is the opposite of the usual claim. Across three directives, arXiv 2505.21733 reports weighted compliance of 0.631 for AI search crawlers and 0.616 for AI assistants, both above its 0.420 average across all nine categories and both above the 0.447 recorded for search engine crawlers. The problem it identifies is not defiance but delay: those same two categories re-fetch the file least often.

Can I tell when a crawler last read my robots.txt?

Only from your own server logs, where the fetch appears as a request for /robots.txt from that user agent. No external scan can see it, because a scanner observes what your file says and what your server returns to its own request, never the state of a third party's cache. Any tool that reports a crawler's cache age is inferring it.

Does a crawler have to fetch robots.txt before crawling?

In practice many do not. arXiv 2505.21733 reports 15 of 47 bots never fetching robots.txt during its endpoint access and disallow all experiments, and 9 of 34 during its crawl delay experiment. Some of those still complied with the directive, which the authors leave as an open question with two candidate explanations, either compliance by coincidence or retrieval of the file from a cache their experiment could not observe.

See what AI can read on your site

Run a free scan and get a graded report of exactly what AI crawlers can and cannot read, with ranked fixes.