Sacred Lantern Studio

Free Tool

llms.txt Checker

Enter a domain to see whether it serves an llms.txt, whether the format is right, and whether it says enough for an AI system to understand the site. The check also reads robots.txt for blocked AI crawlers.

Reads /llms.txt and /robots.txt only — no page content is fetched.

What llms.txt is

A plain-text file at the site root, written in Markdown. Its job is to tell AI systems what the site is, which pages matter, and how the content is organised.

It solves an interpretation cost problem. After crawling pages, an AI system still has to infer whether this is a company site or a blog, and which pages are core. llms.txt states that directly and removes the inference step.

What a good llms.txt contains

Structurally similar to a README — six things:

  • An H1 with the site name
  • A blockquote summary: one or two sentences on positioning
  • Section headings grouping the content
  • Markdown links, each with a title and one-line description
  • An optional section for contact or licensing
  • Plain text — never HTML

There's no hard length requirement, but under 200 words usually means too little information. Don't over-link either — ten to twenty core pages beats a full sitemap dump.

Three commands to check manually

# 1. 文件在不在
curl -sI https://example.com/llms.txt | head -1

# 2. 内容是什么
curl -s https://example.com/llms.txt | head -20

# 3. Content-Type 对不对
curl -sI https://example.com/llms.txt | grep -i content-type

The third is often skipped. If it returns text/html, the server handed the request to the front-end router and you're getting a 200 HTML error page — it looks present but isn't.

Four common mistakes

1. Writing it in HTML

llms.txt is plain text for machine reading, not a web page. Files with divs and paragraph tags fail to parse.

2. Returning 200 with the homepage HTML

SPAs and frameworks with catch-all routes hand /llms.txt to the front-end, returning a 200 page. The path must be handled explicitly at the server level.

3. Brand copy with no links

Marketing prose has no informational value to a machine. Listing specific pages and what each covers is what helps.

4. Treating it as a human landing page

No human visitor sees it. Write for a program trying to build a quick model of the site, not for persuasive reading.

How to serve the file

Three common setups. Pick whichever you already run. Only one thing matters: the path must return plain text and must not fall through to the front-end router.

Static site or Next.js

Put the file in public/ (Next.js) or the site root. Next.js maps public/llms.txt to /llms.txt automatically.

Caddy

example.com {
    handle /llms.txt {
        root * /var/www/llms
        file_server
    }
}

Nginx

location = /llms.txt {
    root /var/www/llms;
    default_type text/plain;
    charset utf-8;
}

The exact-match = is important. A prefix match can be caught by another rule first and end up returning a 200 HTML page.

A worked example for a service business

Most templates assume a blog: index, articles, author. A service business needs different things — what you do, what it costs, how to reach you.

Three things are usually missing, and their absence forces guessing when an AI answers "what does this company do":

  • Scope boundaries: stating what you don't do carries more signal than listing what you do
  • Price range: doesn't need to be exact, but a magnitude lets AI avoid answering "contact them for pricing"
  • Deliverable form: a document or a running system. Clients care about this distinction a lot

One more thing: run the file through a checker afterwards. Bad formatting, encoding issues and dead links are invisible to the eye and obvious to a parser.

An honest assessment

Real-world adoption of llms.txt is currently low. Most large sites don't have one, and no major AI system has publicly confirmed reading it. Its present value is closer to cheap insurance — if reading becomes standard, you're ready; if not, you lost one static file.

What actually determines whether AI cites you is the content: whether it poses a clear problem, method, data and limits. llms.txt only makes those easier to find.

What to do with the result

The score isn't the point — it tells you where to start. Ordered by impact, the sequence is usually:

  • Fix format first: HTML tags, encoding errors. These break parsing entirely, making every other item moot.
  • Then the summary and sections: without a summary, a system finishes reading and still doesn't know what the site is.
  • Then links: the most common gap — our own site started at zero links too.
  • Length last: a short file usually means the information itself is thin, not that the format is wrong.

Check the crawler rules below at the same time. A perfect llms.txt is worthless if PerplexityBot is blocked — the file never gets read. The two must be assessed together.

One last thing: retest a month later. Format problems are visible immediately, but whether AI actually reads the file has no direct metric — only observation over time.

Frequently asked questions

Is llms.txt an official standard?

No. It's a 2024 proposal — a Markdown site summary for AI systems. It has no W3C or IETF backing, and no search engine has publicly committed to reading it.

Will adding llms.txt improve my rankings?

Not directly. It isn't a ranking factor. It reduces the effort an AI system spends understanding your site. Treat it as infrastructure, not a traffic switch.

What's the difference between llms.txt and robots.txt?

robots.txt says whether you can be crawled; llms.txt says what this site is once crawled. The first is widely honoured, the second has no enforcement.

Where does the file go?

Site root: https://example.com/llms.txt, served as text/plain or text/markdown.

Does it have to be in English?

No, but English has broader reach. Mixed language is fine — structure matters more than language.

My check returned 404. Is my site broken?

No. Most sites don't have an llms.txt yet. It's an optional optimisation and doesn't affect normal indexing.