Lighthouse Fails Your Llms.txt Without Markdown Links

The new Lighthouse Agetic browsing experience for Chrome is up to you .txt file as a markup document. If your llms.txt doesn’t use markdown link syntax, you fail the test, even when all the links in the file are correct and working. I did some research on nohacks.co. Passed two out of six tests. Three came back ineffective. One failed: the llms.txt test, with a literal error “The file does not appear to contain links.” The resolution was five characters per link. The file still works as plain text. Only the research result has been changed.
Lighthouse 13.3.0 shipped Agentic’s browsing section around Performance, Accessibility, SEO, and Best Practices. Six audits on the default set: a well-formed reachability tree (agent-accessibility-tree), the cumulative structural change (cumulative-layout-shift), availability of llms.txt (llms-txt), and three WebMCP checks (webmcp-registered-tools, webmcp-form-coverage, webmcp-schema-validity). The section returns a fractional pass ratio instead of a score of 0 to 100, because the agent’s web rankings are still moving.
1 of 6 Tests Failed at Nohacks.co
I ran a test with the Lighthouse CLI: npx lighthouse@latest --only-categories=agentic-browsing. Six tests were returned. Three came back dead, all WebMCP: webmcp-registered-tools, webmcp-form-coverageagain webmcp-schema-validity. Lighthouse does not provide a reason for an invalid result, it simply marks the test and continues. nohacks.co exposes WebMCP, but only for testing purposes navigator.modelContext API (two glossary tools, two browser directory tools), with no declaration form annotations. The scan ran on Chrome 150 with no default headers without the WebMCP flag, so an invalid result could mean that the website isn’t displaying anything that this test sees, or that the scanner didn’t have the WebMCP API working at the time. The Lighthouse doesn’t say which one. Two audits were successfully passed: agent-accessibility-tree report “All audits passed,” which ensures the semantic HTML and ARIA structures are well-structured enough for agents to navigate, too cumulative-layout-shift it returned zero.
One test failed: llms-txt. The error message from Lighthouse was:
The file does not appear to contain links.
The category score was 0.67. That was the first surprise. The file at nohacks.co/llms.txt has many links. Navigation paths to topics, episodes, visitors, list of words. RSS feed URLs. Audio file URL patterns. The file is over five kilobytes of edited content. So why was Lighthouse reporting zero links?
Lighthouse Parses .txt Since Markdown Also Rejects Plain Text Links
The file extension is .txtbut Lighthouse parses the content as markup, and requires the markup link syntax for any text to count as a link. The file is named llms.txt. The HTTP server returns it with text/plain MIME type. Open it in a browser, and you see plain text. But the definition of llms.txt on llmstxt.org describes the format as a markup document. The specification is clear: “Each section contains a bulleted list of links. Each list item has a link followed by optional notes about the link, separated from the link by a colon.” The Lighthouse analyst strongly emphasizes that. Every link must be coded as a downlink syntax, [text](url)with square brackets around the link text and parentheses in the URL.
My file used the natural plain text format:
- Homepage: / - Publication masthead, cornerstone series, latest articles and episodes
- Articles: /blog - All articles on AXO, the agentic web, and AI agents
- Episode: /episode/[slug] - Full show notes, transcript, audio player
Similar destinations. Similar definitions. Same information. The Lighthouse parser does not register those lines as links. For the rest of the file, register exactly zero. Test failed.
A file with a .txt extension, is provided by text/plain A MIME type, which fails the test unless formatted as markdown. That is not the same layer of auditors we should be trusted with. An adverb means one thing. The MIME type means one thing. The analyst is the source of the truth, and the attacker wants to be taken down.
Limit is 5 characters per link
Wrap each link in markdown bracket-pareren syntax, [text](url)and instead of - separator before each definition with : . Five characters per link. Mechanical conversion, which is repeated throughout the file.
- [Homepage](/): Publication masthead, cornerstone series, latest articles and episodes
- [Articles](/blog): All articles on AXO, the agentic web, and AI agents
- [Episode](/episode/[slug]): Full show notes, transcript, audio player
I did the editing. Do some research again. The score went from 0.67 to 1.0. The research topic has changed “llms.txt does not follow recommendations” to “llms.txt follows recommendations.” There are no detailed items in the post-report. A clean pass.
The file is still used as a text/plain. The file extension still exists .txt. The content of the file is still the same content. Only the link encoding has changed.
Lighthouse Measures Parseable Link Syntax, Not File Quality
The test checks whether your file is machine separable. It does not check whether the file correctly describes your website. Both readings are true at the same time.
The first reads: Research measures something real. The Markdown link syntax is mechanically separable. Descriptive lines of plain text are missing. If an AI agent (or agent-represented Lighthouse analyst) needs to extract links from a file programmatically, a markup format is required. The test is correct that the file before my modification could not be processed by links using standard tools. Modifications to the markup link syntax correct the original interoperability gap.
Second read: format compliance is not the same as file quality. A thoughtfully written, accurate, comprehensive llms.txt that uses plain text definitions fails this test. A thin, auto-generating llms.txt with syntax passes for tagging. An audit cannot distinguish between the two. The AIOSEO WordPress plugin, used by more than 3 million websites according to its WordPress.org listing, generates llms.txt files with markdown link syntax automatically, Glenn Gabe’s default behavior appears, and the plugin’s documentation validates. Those auto-generated files use markdown link syntax because that’s what the generator outputs. Probably most of them passed this test. Many manually selected, owner-unknown llms.txt files are likely to fail.
That gap should be considered before treating a pass/fail survey as a measure of how agent-ready your website is. The test checks if your file is separable. It does not check if your file is useful.
Should You Care About Llms.txt Browsing?
Yes, but slowly. Lighthouse can tell you if your llms.txt is distinguishable as a download symbol. It won’t tell you whether the file describes your website faithfully. That check is yours. Open Chrome DevTools, click the Lighthouse tab, make sure the Agenttic browsing section is checked, and run Analyze on your URL. Scanning takes less than a minute. If it fails with a no-connection error, the fix is five characters per link and five minutes of programming. If it passes, the tough question is one that Lighthouse can’t ask. Was the file automatically created by a plugin you didn’t modify, or did you write it yourself, and either way, does it describe what your website actually is?
Early Machine Architecture A building block underlies all of this: data models before page layouts, rendering independent, content that doesn’t depend on client JavaScript or human display automation for machine readability. The llms.txt test is a small test in that layer. The big question of layout, whether your machine-readable site describes your website accurately, is yours to run.
Additional resources:
This post was originally published on No Hacks.
Featured image: Darko 1981/Shutterstock



