llms.txt Checker & Generator
How the llms.txt checker fetches and reads a site's llms.txt, the outline an agent builds from it, every rule it applies, how it compares the file with the sitemap and drafts a new one, and how to fix each finding.
The tool page is tamperbox.dev/llms-txt. It checks tamperbox.dev live when opened, says whether its llms.txt follows the format and what an agent would read from it, and drafts a file from the site. This page is the long version: what is fetched, every rule, how the outline and the draft are made, and how to fix each finding.
/llms.txt, the home page, /robots.txt and up to two top-level sitemaps, each with up to four index children, without cookies; the file is read and the draft written in your browser. Explicit result-action transfers use temporary browser storage; diagnostic results are not a monitoring history. Sample hosts on the reserved .example zone are answered in the browser from a fixture.What the tool answers
Section titled “What the tool answers”- Does the site publish an llms.txt an agent can use? Served as text at
/llms.txt, not as a web page. - What does an agent read from it? The name, the summary, the notes and each section’s links, as an outline.
- Does it follow the format? Every line an agent would misread: a missing name, relative links, links outside lists, empty sections.
- What does it leave out? Sitemap pages the file never links.
- What could it say? A draft from the site’s own name, description, navigation and sitemap.
Inputs
Section titled “Inputs”A host
Section titled “A host”example.com or a full address; the host is kept. The check runs when you stop typing, or on Enter. The usual refusals apply: spaces, other schemes, credentials, non-standard ports, IP addresses and single labels.
A pasted file
Section titled “A pasted file”Text with a newline, or starting with #, >, a list link - [ or a link [Name](, is read as llms.txt, in the browser. Nothing is fetched, so there is no draft and no sitemap comparison, and relative links cannot be resolved unless the current programmatic load retains a base from the preceding host lookup; direct typing or pasting into the field clears that base. Files up to 2 MiB (.txt, .md) can be dropped or opened.
A pasted address loses quotes, brackets and trailing punctuation and keeps the host; text that fits nothing stays as pasted.
Reading the result
Section titled “Reading the result”Verdict and chips
Section titled “Verdict and chips”“llms.txt with n links in m sections, in the expected format.” or “… and n things to fix.”, “No llms.txt at host.” with the draft offered, “llms.txt is a web page.” or “Empty llms.txt.” The chips count problems and scroll to the findings. Two items say where the input went.
Findings
Section titled “Findings”Worst first, line findings prefixed with their line; two or more passing findings are grouped under an expandable checks passed row. A single passing finding stays visible.
What an agent reads
Section titled “What an agent reads”The outline: the name (or “No name” in red), the summary (or the first note shown in its place), then each section with its link count and links. A section titled Optional is marked as one an agent may skip. Relative links are tinted.
llms.txt
Section titled “llms.txt”The file as written, numbered, issue lines tinted and noted. Long files show their first 60 lines and every marked line; Show all n lines lists the rest, and Show the first 60 lines folds it again. Folding is offered only when at least ten unmarked lines after line 60 can be hidden; marked lines remain visible.
Draft from the site
Section titled “Draft from the site”A complete llms.txt built from the site, with a note saying how many link names came from the site’s own links and how many from URL paths. Copy, Download llms.txt, and Check the draft, which loads the draft into the box and checks it.
History
Section titled “History”History follows the current result evidence. Break it and Heal it record input changes, newest first. Revert restores the input before the latest recorded change; Reset input restores the input before the first retained change and clears the list. Restore input before this break under Heal it also reverts the latest change.
These actions reload and check the restored input. Restoring a public address can therefore send a new request, including on the two tools whose ordinary typing waits for a run button. Editing or pasting a new input clears History. The list lives in the current page; it is not saved monitoring data and does not restore an old network response.
Check the draft is also logged as an input change, so Revert returns to the input that produced the draft.
Take it further
Section titled “Take it further”Only links with an available result value appear.
| Follow-up | Value carried | When offered |
|---|---|---|
| Redirect Checker | https://host/llms.txt |
A host was checked |
| Website Down Checker | First absolute HTTP(S) link | Such a link appears in the file |
| SSL Checker | A linked host outside the checked site | The file names a different host outside the site’s subdomains |
Related checks and input transfer
Section titled “Related checks and input transfer”Check the rest opens related tools without carrying input. Take it further carries the specific value listed above. Pasted file contents are not transferred through these links. Transfers temporarily use browser sessionStorage with a one-use random token in the URL fragment; the input itself is not in the URL. The destination accepts a transfer for less than one minute and removes the token. Manual destination tools wait for their run button or Enter.
Each destination collects new evidence. A follow-up link does not confirm the original verdict or repair the remote site.
Result cards
Section titled “Result cards”Six expandable cards below the result explain its meaning, give a beginner explanation, offer an agent prompt, describe good practice, suggest fixes and state limitations. Their text follows the current result; it is not another measurement. Open a card for its full explanation and the relevant Method or Guide. The agent prompt can be copied for review; copying it does not run a repair or send it to an agent.
Method
Section titled “Method”Fetching
Section titled “Fetching”For a host, three fetches start together on https://host: /llms.txt (up to 5 redirects, first 2 MiB), the home page (up to 10 redirects, first 512 KiB of HTML) and /robots.txt. Then up to two sitemaps are read: those robots.txt lists, or /sitemap.xml, plus up to four children of each top-level sitemap index. The home page and sitemaps feed the draft and the coverage check; if they fail, the file is still checked.
| Response for /llms.txt | Severity |
|---|---|
| 400 or above | INFO, “No llms.txt”: nothing breaks; a draft is offered |
| HTML content type or body | FAIL: an agent reads a web page |
| Empty | CHECK |
Structure
Section titled “Structure”The llms.txt proposal defines the file as Markdown with “an H1 with the name of the project or site. This is the only required section”, then optionally a blockquote summary, other details, and “Zero or more markdown sections delimited by H2 headers, containing “file lists” of URLs”. Each list item is “a required markdown hyperlink [name](url), then optionally a : and notes about the file”. Headings and lists follow CommonMark. The tool reads the file line by line, skipping fenced code blocks:
| Rule | Severity | Repair |
|---|---|---|
No # line at all |
FAIL | Add “# Name” first (when a host was checked) |
Text before the # line |
FAIL | |
A second # line |
CHECK | Turn extra H1s into sections |
No > summary under the name |
INFO | |
A name but no ## sections |
CHECK | |
A ## section with no links |
CHECK | |
### or deeper heading |
INFO: read as a note | |
| A link without a scheme | CHECK | Make links absolute (when a host was checked) |
A [Name](url) that is not a list item |
CHECK | Put links in a list |
| A list item with no link | CHECK | |
| The same URL twice | INFO |
Lines inside sections are links when they match - [Name](url) with an optional quoted title and : notes; * and + bullets are accepted. Blockquote lines before the first section join into the summary; other text before it is kept as notes. A section titled Optional, which the proposal uses “by convention, for secondary information: links an agent can skip when a shorter context is needed”, is marked so in the outline.
Coverage
Section titled “Coverage”When both the file and a sitemap were read, every sitemap URL other than the home page is compared with the file’s links, after resolving relative links. Missing pages are INFO with the count and two example paths: a prompt to link what an agent needs most, not a target to list everything.
The draft
Section titled “The draft”Only what the site publishes:
- the name from
og:site_name, else the<title>cut at the first “ | “, “ · “, “ – “, “ — “ or “ - “; - the summary from
og:description, else the meta description; - same-origin links with text inside the home page’s
nav,headerandfooter, named with that text; - same-origin sitemap URLs not already in the navigation, named from the last part of their path.
Privacy, terms, cookies, legal, imprint, impressum and disclaimer pages go into Optional; other pages one level deep go under Pages, deeper ones grouped by their first path segment, at most 40 links per section. Navigation added by scripts is not seen.
Standards and conformance
Section titled “Standards and conformance”The llms.txt proposal (llmstxt.org)
Section titled “The llms.txt proposal (llmstxt.org)”Implemented: the H1 name as the only required part, the blockquote summary, notes, H2 sections of link lists with optional notes, the Optional section. Stricter than the text: a relative link is a CHECK, because the proposal’s examples use full URLs and agents fetch the file on its own. Not implemented: the companion .md versions of pages and llms-full.txt, which the proposal suggests but does not require. The proposal is a community document, not an RFC or W3C specification; llmstxt.org is its canonical text.
CommonMark
Section titled “CommonMark”Headings, block quotes, list items and inline links are recognised by their CommonMark forms; fenced code blocks are skipped. The parser is line-based, so multi-line list items and reference-style links are not read as links.
Sitemaps protocol and RFC 9309
Section titled “Sitemaps protocol and RFC 9309”Sitemaps are found through robots.txt Sitemap lines (RFC 9309, section 2.2.4) or at /sitemap.xml, and read as the Sitemaps protocol defines; the robots.txt checker checks a bounded set of their syntax and entries.
Finding reference
Section titled “Finding reference”| Finding | Severity | What it means for an agent | Fix |
|---|---|---|---|
| No llms.txt (n) | INFO | Nothing to read; nothing breaks | Optional; the draft is a start |
| llms.txt is a web page | FAIL | Reads HTML | Serve Markdown text |
| Empty llms.txt | CHECK | Nothing to read | Write the file |
| Line 1: No H1 name | FAIL | Cannot tell what the file describes | Add “# Name” (Heal it) |
| Line n: H1 is not the first line | FAIL | May miss the name | Move it first |
| Line n: A second H1 | CHECK | Extra name ignored | Use ## (Heal it) |
| Line n: No summary | INFO | No one-line context | Add “> summary” |
| Line n: No ## sections | CHECK | Nothing to follow | Add sections |
| Line n: Section “x” has no links | CHECK | Adds nothing | Add links or remove |
| Line n: Hn heading | INFO | Read as a note | Use ## |
| Line n: Relative link | CHECK | Leads nowhere out of context | Full URLs (Heal it) |
| Line n: Link outside a list | CHECK | Read as a note | List item (Heal it) |
| Line n: List item without a link | CHECK | Skipped | Add the link |
| Line n: Linked twice | INFO | Keep one | |
| n sitemap pages not linked | INFO | Pages not pointed to | Link the important ones |
No llms.txt
Section titled “No llms.txt”Decide whether you want one. If yes: review the draft, rename links that came from paths, add a note to each that needs it, cut what an agent does not need, and publish it at /llms.txt as text/plain or text/markdown. Confirm outside Tamperbox: curl -s https://example.com/llms.txt | head.
The file is served as HTML
Section titled “The file is served as HTML”Exempt /llms.txt from the catch-all route, so the file is served before the app.
Format problems
Section titled “Format problems”Use Heal it for the name, extra H1s, relative links and links outside lists; each rewrites the whole file for review. For list items without links and empty sections, add the links by hand. Then check again.
Choosing what to link
Section titled “Choosing what to link”Link the pages an agent is asked about: getting started, pricing, the API reference, support. Put the rest under ## Optional. The coverage finding lists sitemap pages you left out; it is not a target.
Break it cases
Section titled “Break it cases”| Case | What it loads | What to look at |
|---|---|---|
| No H1 name | Your file without its # line |
No H1 name; Heal it adds it back |
| Relative links | Your file with every link made relative | Relative link; Heal it makes them absolute |
| Links without a list | Your file with the list bullets removed | Link outside a list; Heal it lists them |
| No llms.txt | A sample host without the file | The draft |
| Served as a web page | A sample single-page app | llms.txt is a web page |
The first three are built from your own file when you entered a host or pasted one.
Worked example
Section titled “Worked example”The page opens with a live check of tamperbox.dev. It fetches llms.txt and supporting site material to build the outline and, when the home page is available, a draft. Link counts, findings and suggested sections depend on the current site.
Read the outline first: the name, summary, notes and H2 link lists should describe what a reader can learn. A file can be syntactically readable yet omit the task-specific pages an agent needs. Compare the draft’s navigation-derived names with names inferred from URL paths; rename ambiguous entries before using them.
Use Check the draft to load the generated text into the parser. This is a local input replacement, not publication. Review every destination and remove irrelevant links before saving the file at the site’s root. A missing or blocked supporting sitemap can reduce coverage without making the existing llms.txt invalid. The checker does not request the linked pages, so verify important destinations independently before presenting the file as ready to publish.
For agents
Section titled “For agents”Use the Tamperbox MCP search tool to inspect the schema, then execute with tamperbox.request to call POST /v1/tools/llms_txt. Supply the required domain field as a public domain name. The operation is named llms_txt; the browser page’s hyphenated identifier is not the API operation name.
The operation fetches llms.txt and returns evidence and a parsed report. It does not fetch the home page and sitemap collection to generate the browser’s draft or coverage comparison. Links are parsed, not requested.
Keep the input, observation time, source limitations and inconclusive results with any summary. Browser fixtures are demonstrations, not live MCP targets. Do not turn missing evidence into a passing check or infer that an inaccessible resource has been deleted.
See Connect an MCP client, Code mode and Security and privacy.
Limits
Section titled “Limits”- One fetch each of llms.txt (2 MiB), the home page (512 KiB) and robots.txt, and up to two top-level sitemaps with up to four children each.
- Links are not requested.
- The parser is line-based CommonMark; multi-line list items and reference links are not read as links.
- Live checks are rate limited. Explicit result-action transfers use temporary browser storage; diagnostic results are not a monitoring history.