Skip to content

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.

Open Markdown

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.

Where processing happens: a pasted llms.txt is read in your browser and never uploaded. A host name is sent to the Tamperbox server, which fetches /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.
  1. Does the site publish an llms.txt an agent can use? Served as text at /llms.txt, not as a web page.
  2. What does an agent read from it? The name, the summary, the notes and each section’s links, as an outline.
  3. Does it follow the format? Every line an agent would misread: a missing name, relative links, links outside lists, empty sections.
  4. What does it leave out? Sitemap pages the file never links.
  5. What could it say? A draft from the site’s own name, description, navigation and sitemap.

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.

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.

“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.

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.

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.

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.

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 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.

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

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.

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.

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

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.

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.

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, header and footer, 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.

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.

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 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 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

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.

Exempt /llms.txt from the catch-all route, so the file is served before the app.

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.

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.

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.

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.

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.

  • 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.