{"id":62031,"date":"2026-07-04T08:09:24","date_gmt":"2026-07-04T12:09:24","guid":{"rendered":"https:\/\/overcentral.com\/en\/?p=62031"},"modified":"2026-07-04T08:09:24","modified_gmt":"2026-07-04T12:09:24","slug":"lighthouse-llms-txt-markdown-links","status":"publish","type":"post","link":"https:\/\/overcentral.com\/en\/lighthouse-llms-txt-markdown-links\/","title":{"rendered":"Lighthouse Fails Your Llms.txt Without Markdown Links"},"content":{"rendered":"<p>Chrome&#8217;s Lighthouse 13.3.0 introduces an Agentic Browsing audit category that treats your <code>llms.txt<\/code>codecodecodecode file as a <a href=\"https:\/\/overcentral.com\/en\/google-warns-markdown-ai-seo-strips-context\/\" title=\"Google Warns Markdown For AI SEO Strips Key Context\" data-iacss-internal=\"1\">markdown<\/a> document, whether you intended it that way or not. If that file uses anything other than markdown link syntax \u2014 plain-text URLs, descriptive lines, even perfectly functional links \u2014 the audit will fail, returning the error <em>&#8220;File does not appear to contain any links.&#8221;<\/em> The fix is mechanical: five characters per link. But the gap between passing the audit and having a genuinely useful llms.txt is far wider than a passing score suggests.<\/p>\n<p>The new Agentic Browsing category shipped with Lighthouse 13.3.0 alongside the familiar Performance, Accessibility, SEO, and Best Practices panels. It contains six audits in its default set: accessibility tree well-formedness (<code>agent-accessibility-tree<\/code>codecodecodecode), cumulative layout shift (<code>cumulative-layout-shift<\/code>codecodecodecode), llms.txt discoverability (<code>llms-txt<\/code>codecodecodecode), and three WebMCP checks (<code>webmcp-registered-tools<\/code>codecodecodecode, <code>webmcp-form-coverage<\/code>codecodecodecode, <code>webmcp-schema-validity<\/code>codecodecodecode). Unlike other Lighthouse categories, Agentic Browsing returns a fractional pass ratio rather than a 0-to-100 score \u2014 a reflection that the standards for the <a href=\"https:\/\/overcentral.com\/en\/google-seo-agentic-web-principles\/\" title=\"Google Confirms Most SEO Principles Remain in Agentic Web\" data-iacss-internal=\"1\">agentic web<\/a> are still evolving and no fixed scoring rubric has been established.<\/p>\n<h2>Six Audits Ran on Nohacks.co. Two Passed. Three Were Not Applicable. One Failed.<\/h2>\n<p>Running the audit via the Lighthouse CLI \u2014 <code>npx lighthouse@latest https:\/\/nohacks.co --only-categories=agentic-browsing<\/code>codecodecodecode \u2014 produced six results. Three WebMCP audits came back as not applicable: <code>webmcp-registered-tools<\/code>codecodecodecode, <code>webmcp-form-coverage<\/code>codecodecodecode, and <code>webmcp-schema-validity<\/code>codecodecodecode. Lighthouse provides no explanation for a not-applicable verdict; it simply marks the audit and moves on. Nohacks.co does expose WebMCP, but only through the experimental imperative <code>navigator.modelContext<\/code>codecodecodecode API, with no declarative form annotations. The scan ran in a default headless Chrome 150 with no WebMCP flag active, so the not-applicable result could mean the site exposes nothing these audits recognize, or that the scan environment lacked a functional WebMCP API. Lighthouse does not specify which.<\/p>\n<p>Two audits passed cleanly. <code>agent-accessibility-tree<\/code>codecodecodecode reported <em>&#8220;All audits passed,&#8221;<\/em> confirming the semantic HTML and ARIA structure is well-formed enough for agents to navigate. <code>cumulative-layout-shift<\/code>codecodecodecode returned a score of zero \u2014 no unexpected layout movement. One audit failed: <code>llms-txt<\/code>codecodecodecode. The verbatim error message: <em>&#8220;File does not appear to contain any links.&#8221;<\/em> The overall category score settled at 0.67.<\/p>\n<p>That was the first surprise. The file at nohacks.co\/llms.txt contains many links: navigation paths to articles, episodes, guests, the glossary, RSS feed URLs, audio file patterns. The file is over five kilobytes of structured content. Lighthouse reported zero links.<\/p>\n<h2>Why Lighthouse Parses a <code>.txt<\/code> File as Markdown and Rejects Plain-Text Links<\/h2>\n<p>The file extension is <code>.txt<\/code>codecodecodecode. The HTTP server returns it with a <code>text\/plain<\/code>codecodecodecode MIME type. Open it in a browser, and you see plain text. But the llms.txt specification at <a href=\"https:\/\/llmstxt.org\/\" target=\"_blank\" rel=\"noopener noreferrer\" data-iacss-external=\"1\">llmstxt.org<\/a> defines the format as a markdown document. The spec is explicit: <em>&#8220;Each section contains a markdown bullet list of links. Each list item has a link followed by optional notes about the link, separated from the link by a colon.&#8221;<\/em> Lighthouse&#8217;s parser enforces that strictly. Every link must be encoded as markdown link syntax \u2014 <code>[text](url)<\/code>codecodecodecode \u2014 with square brackets around the link text and parentheses around the URL.<\/p>\n<p>The original file used a natural plain-text format:<\/p>\n<ul>\n<li><code>- Homepage: \/ - Publication masthead, cornerstone series, latest articles and episodes<\/code>codecodecodecode<\/li>\n<li><code>- Articles: \/blog - All articles on AXO, the agentic web, and AI agents<\/code>codecodecodecode<\/li>\n<li><code>- Episode: \/episode\/[slug] - Full show notes, transcript, audio player<\/code>codecodecodecode<\/li>\n<\/ul>\n<p>Same destinations. Same descriptions. Same information. Lighthouse&#8217;s parser did not register any of those lines as links. Across the entire file, it registered exactly zero. Audit fails.<\/p>\n<p>This is the mismatch the audit layer is going to have to be more honest about. The extension says <code>.txt<\/code>codecodecodecode. The MIME type says <code>text\/plain<\/code>codecodecodecode. The parser demands markdown. The file format and the audit expectation are not aligned, and the parser is the source of truth.<\/p>\n<h2>The Fix: Five Characters Per Link, Five Minutes of Editing<\/h2>\n<p>The correction is straightforward. Wrap each link target in markdown bracket-paren syntax \u2014 <code>[text](url)<\/code>codecodecodecode \u2014 and replace the <code>-<\/code>codecodecodecode separator before each description with <code>: <\/code>codecodecodecode. Five characters per link. Mechanical conversion, repeated across the file.<\/p>\n<ul>\n<li><code>- [Homepage](\/) : Publication masthead, cornerstone series, latest articles and episodes<\/code>codecodecodecode<\/li>\n<li><code>- [Articles](\/blog) : All articles on AXO, the agentic web, and AI agents<\/code>codecodecodecode<\/li>\n<li><code>- [Episode](\/episode\/[slug]) : Full show notes, transcript, audio player<\/code>codecodecodecode<\/li>\n<\/ul>\n<p>After making the edit and re-running the audit, the score moved from 0.67 to 1.0. The audit title flipped from <em>&#8220;llms.txt does not follow recommendations&#8221;<\/em> to <em>&#8220;llms.txt follows recommendations.&#8221;<\/em> No detail items in the after-report. Clean pass.<\/p>\n<p>The file is still served as <code>text\/plain<\/code>codecodecodecode. The file extension is still <code>.txt<\/code>codecodecodecode. The file content is still the same content. Only the link encoding changed.<\/p>\n<h2>What the Audit Actually Measures: Parseable Link Syntax, Not File Quality<\/h2>\n<p>The audit checks whether your file is mechanically parseable. It does not check whether the file describes your website usefully. Both statements are true at the same time.<\/p>\n<p>On one hand, the audit measures something real. Markdown link syntax is mechanically parseable. Plain-text descriptive lines are not. If an <a href=\"https:\/\/overcentral.com\/en\/ai-agent-development-sluggish\/\" title=\"Zuckerberg Confirms AI Agents Development Slower Than Hoped\" data-iacss-internal=\"1\">AI agent<\/a> \u2014 or the Lighthouse parser standing in for an agent \u2014 needs to extract links from the file programmatically, the markdown format is required. The audit is correct that the file before the fix could not be parsed for links by standard tooling. The conversion to markdown link syntax fixes a genuine interoperability gap.<\/p>\n<p>On the other hand, format compliance is not the same as file quality. A thoughtfully written, accurate, comprehensive llms.txt that uses plain-text descriptions fails this audit. A thin, auto-generated llms.txt with markdown link syntax passes. The audit cannot tell the difference between the two.<\/p>\n<p>The WordPress plugin AIOSEO, used by over three million websites per its WordPress.org listing, generates llms.txt files with markdown link syntax by default \u2014 a default-on behavior the plugin&#8217;s own documentation confirms. Those auto-generated files use markdown link syntax because that is what the generator emits. Most of them probably pass this audit. Most hand-curated, owner-aware llms.txt files probably fail it. That gap is worth thinking about before treating the audit&#8217;s pass or fail as a measurement of how agent-ready your website really is. The audit checks whether your file is parseable. It does not check whether your file is useful.<\/p>\n<h2>Should You Care About Lighthouse Agentic Browsing&#8217;s llms.txt Check?<\/h2>\n<p>Yes, but with a narrow understanding of what the check means. Lighthouse can tell you whether your llms.txt is parseable as markdown. It cannot tell you whether the file describes your website honestly. That check is yours.<\/p>\n<p>Open Chrome DevTools, click the Lighthouse tab, verify the Agentic Browsing category is checked, and run Analyze on your URL. The audit takes under a minute. If it fails on the no-links error, the fix is five characters per link and five minutes of editing. If it passes, the harder question is the one Lighthouse cannot ask: was the file auto-generated by a plugin you did not configure, or did you write it yourself, and either way, does it describe what your website actually is?<\/p>\n<p>The llms.txt audit is a narrow check at the machine-readable layer of your site. The bigger structural question \u2014 whether your machine-readable surface describes your website honestly and comprehensively \u2014 is yours to run. Format compliance is table stakes. File quality is the work that follows.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Chrome&#8217;s Lighthouse 13.3.0 introduces an Agentic Browsing audit category that treats your llms.txtcodecodecodecode file as a markdown document, whether you intended it that way or not. If that file uses anything other than markdown link syntax \u2014 plain-text URLs, descriptive lines, even perfectly functional links \u2014 the audit will fail, returning the error &#8220;File does [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":84811,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/cards.overcentral.com\/cards\/en\/62031.png","fifu_image_alt":"Lighthouse Fails Your Llms.txt Without Markdown Links","footnotes":""},"categories":[31],"tags":[],"class_list":["post-62031","post","type-post","status-publish","format-standard","has-post-thumbnail","category-technology"],"fifu_image_url":"https:\/\/cards.overcentral.com\/cards\/en\/62031.png","fifu_image_alt":"Lighthouse Fails Your Llms.txt Without Markdown Links","_links":{"self":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts\/62031","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/comments?post=62031"}],"version-history":[{"count":0,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts\/62031\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/media\/84811"}],"wp:attachment":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/media?parent=62031"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/categories?post=62031"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/tags?post=62031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}