2 September 2026
Lighthouse Now Grades Your Site for AI Agents. Here Is What It Checks.
Lighthouse now grades your site for AI agents
The short version
There is a fifth category
Alongside Performance, Accessibility, Best Practices and SEO, Lighthouse 13 reports Agentic Browsing. On a static site three of its six audits are Not Applicable, so a passing site scores 3/3.
It reads your llms.txt
And it fails a file that has no Markdown links, with a message that currently returns nothing useful in a search - "File does not appear to contain any links."
The API hides it
category=agentic-browsing works and is not in the documented list. Omit it and the response is a 200 containing none of those audits.
The audit that fails, and the message that explains nothing
A site of mine was reporting 2/3 on Agentic Browsing with everything else at 100. The summary line said only "llms.txt does not follow recommendations", and the linked documentation says nothing more specific than "follow the llms.txt specification".
The actual reason is in the audit's details table, which the summary does not show:
File does not appear to contain any links.
The file had thirteen URLs in it. Every one was plain text — either a bare
URL on its own line, or the - https://example.com/page — description
form. Lighthouse parses llms.txt as Markdown and counts link nodes, and
bare text produces none. The fix is the form the specification actually
asks for:
## Pages
- [Home](https://example.com/): what the site is
- [Contact](https://example.com/contact/): enquiries
Worth saying plainly: this is a formatting conformance point, not a discoverability one. An LLM reading the raw text will follow a bare URL perfectly well. It is cheap to fix and the score is visible, so it is worth doing — but a 2/3 here does not mean agents cannot navigate your site.
Getting the category out of the API
This is the part that cost the most time. PageSpeed Insights' v5 API
documents five categories — PERFORMANCE, ACCESSIBILITY,
BEST_PRACTICES, SEO, PWA. Agentic Browsing is not among them.
It works anyway:
curl -sS -G "https://pagespeedonline.googleapis.com/pagespeedonline/v5/runPagespeed" \
--data-urlencode "url=https://example.com/" \
--data-urlencode "strategy=mobile" \
--data-urlencode "category=agentic-browsing" \
--data-urlencode "key=$PAGESPEED_API_KEY"
The trap is what happens if you leave it out. The request still returns
200, and the response simply contains no agentic audits at all — so
it is easy to conclude a site has no agentic problems when what actually
happened is that nothing was measured. I did exactly that twice before
noticing the categories object only held performance.
Do not fall back to the web interface when the API misbehaves. pagespeed.web.dev hung on four consecutive runs from one workstation while the keyed API answered every time in under a minute — the UI shares the keyless quota, and on a machine that has already exhausted it, the UI is exhausted too.
What the six audits actually are
llms-txt— parses the file, wants Markdown links. Not Applicable if you have no llms.txt at all, which means adding one is the only way to fail it.agent-accessibility-tree— whether the rendered accessibility tree is well-formed. This is the one that quietly rewards work you did for screen readers.cumulative-layout-shift— the same CLS as the performance category, reused here.webmcp-form-coverage,webmcp-registered-tools,webmcp-schema-validity— WebMCP integration checks, all three Not Applicable to a static site.
So on an ordinary site the score is out of three, and two of the three are things you either already do or can fix in an afternoon.
What I would gate on, and what I would not
Having fixed it once, the thing worth building is the check that stops it
coming back. Two of these audits give the same answer on a busy afternoon
as on a quiet one: llms-txt parses a static file, and
agent-accessibility-tree reads the rendered tree. Those are safe to fail
a deploy on.
The category score is not, and neither is anything scored as a fraction. A build that fails because a shared analyser was busy is a build people learn to retry rather than read — and a gate nobody believes is a gate that gets switched off.
The cheapest version of all of this is not a remote check at all: parse
your own llms.txt at build time and refuse to ship one with no Markdown
links. That catches the fault before a build, for free, and the remote
check then only has to cover the case the local one structurally cannot
see — a file that was correct in the repository and never made it onto the
server.