Nobody actually knows how much of the web is being read by machines. Every figure you have seen was produced by a company selling something adjacent to the answer. We are counting it in the open, and we are giving the count away.
You have read the headline: some large fraction of web traffic is now AI. The fraction is always different, always rising, and always published by a vendor whose product becomes more necessary the larger it is. That alone would not make it false. What makes it useless is that the denominator is never shown.
A CDN counts requests it terminates. A bot-management vendor counts what its classifier flagged. A log analyser counts user-agent strings, which are a claim, not a fact. Each of those numbers is true about the thing that was measured and false about the thing you take it to mean. That gap has a name in this project: the dishonest number. It is the whole reason the plugin exists, and it would be an unusually stupid kind of hypocrisy to fight it with a statistic of our own that nobody can check.
Every site running AX Protocol already measures its own agent traffic — which machines arrived, which declared an identity, which fetched the discovery documents rather than the pages. The census is nothing more than those local counts, reported weekly, opt-in, and added together.
It is counts only. No page content, no visitor data, no IP addresses, no anything that would let the aggregate be reversed back into a site. A site that opts out sends nothing, and a site that never opts in has never sent anything.
Aggregated across enough independent sites, this produces something that does not currently exist: a measurement of machine traffic on the open web that is not owned by whoever is selling the defence against it.
Open data projects tend to be open until the moment openness becomes expensive. So these are written down, and they are written down without an escape hatch.
The combined count is published under the Creative Commons Attribution 4.0 licence. Anyone may use it, republish it, build on it, or argue with it — including competitors, including journalists writing that our conclusions are wrong. Attribution is the only condition. CC BY 4.0 is itself irrevocable: once a release is published under it, that release can never be pulled back under a narrower licence.
Not a summary of the methodology. The code that produces every number is in the plugin, on your own server, readable. What counts as an agent, what gets excluded, how the denominator is constructed — all of it is inspectable before you decide whether to contribute, and inspectable afterwards by anyone who wants to check our arithmetic. A number whose derivation you cannot audit is a number you should not repeat.
The per-site data underlying the aggregate is not sold, not licensed, not rented, and not transferred to any third party. This survives events that usually void such promises: it applies in an acquisition, in a merger, in a bankruptcy, and in a wind-down. If this project is ever bought, the raw corpus is not part of what is for sale, and if it is ever shut down, the raw corpus is destroyed rather than passed on.
You will notice what this page does not contain. There is no line reserving the right to update these terms, no notice period after which different rules apply, no material-change provision. The three commitments above are permanent as stated. The only revisions this page will ever receive are ones that make it more binding, never less.
Here is the part that a launch page is not supposed to include. The census does not yet have enough data to say anything, and we are not going to publish a percentage until it does.
The plugin holds itself to an evidence threshold before it will draw a conclusion from agent traffic — a minimum number of observed agent visits, across a minimum number of distinct machines. As of 25 August 2026, the reference installation sits here:
| Distinct agent hosts observed | 3 of 3 required |
| Agent visits observed | 21 of 200 required |
| Conclusion currently published | none |
Roughly a tenth of the way to the threshold on one axis, met on the other. We could turn 21 visits into a confident-sounding percentage this afternoon — the arithmetic would even be correct. It would also be exactly the thing this page was written against. The count stays unpublished until the count means something, and this table will be updated as it moves, including when it moves in the wrong direction.
Install AX Protocol, open its settings, and turn the census on. It is off by default and it will stay off unless you choose otherwise. Turn it off again at any point and nothing further is sent.
The contribution costs you one small outbound request a week. What it buys, if enough sites do it, is the first honest denominator anyone has published on this question.
JavaScript-based analytics were built to measure people. They fire only when a browser executes a script, so an agent that pulls raw HTML simply does not exist as far as they are concerned. That is why so many site owners are convinced they have no agent traffic at all: they are measuring with an instrument structurally incapable of seeing it. The census relies on server logs, which record every request regardless of whether client-side code ran, and consequently arrives at entirely different numbers.
That difference also explains why the two sources cannot be compared directly. Analytics counts visits; a server log counts requests. One agent request may cover dozens of pages, while a single human visit generates dozens of requests for images and stylesheets. Whenever census figures are reported, it is worth stating explicitly what is being counted, otherwise the number sounds impressive without meaning anything.
Measuring agent traffic daily almost always generates noise. Monthly is the right cadence for most sites, with a quarterly comparison to show the trend. Measuring too frequently leads to conclusions drawn from random spikes: a single agent running a full crawl can double the day’s figures without anything meaningful having happened.
If you do want a continuous signal, track the error rate rather than request volume. A rise in error codes indicates a genuine fault, whereas swings in volume usually reflect a change in one agent’s behaviour and nothing more.
A census that leads to no change is just another report. The practical use of the data is to identify gaps: pages agents request repeatedly without finding a complete answer, important pages no agent has ever reached, and paths crawled heavily with no value in them. Each of the three points to a different action — expand the content, improve discovery, or deliberately block to save server resources. Start with the first category, because a page agents keep returning to is a page the market has already told you matters.