Chapter 03 · Site Report

What llms.txt is and how to publish one

llms.txt is a plain-text file at /llms.txt that tells AI crawlers what your site is and which pages matter. Why Serpio checks for it, a minimal example, and how to publish and verify it.

Updated Sep 19, 2026 · 5 min read

On this page

llms.txt is a proposed convention, published at llmstxt.org, for a Markdown-formatted text file served at the root of a site. It names the site, summarises it in a sentence or two, and links to the pages that matter most, each with a short description. The idea is to give an AI system a curated front door instead of leaving it to guess from navigation and boilerplate.

What it is, and what it is not

llms.txt
A human-readable orientation file for AI crawlers. Optional. Not a standard, not enforced by anyone, and read only by clients that choose to look for it.
robots.txt
The file that tells crawlers what they may and may not fetch. llms.txt does not grant or deny access to anything.
sitemap.xml
A machine-readable inventory of every URL you want indexed. llms.txt is a short, opinionated subset with descriptions.

Why Serpio checks for it

During site analysis Serpio requests /llms.txt on the origin you registered and counts it as present when the response is successful and contains text. If it is missing, the Site Report records the finding No llms.txt found with the evidence "GET /llms.txt returned no 2xx response". It is filed under Site health at Low priority, and the recommended change is to publish it after the core crawlability issues are addressed.

A present file earns a fixed share of the AI citation readiness score, because it is one of the clearest signals that a site has thought about how machines read it. It does not affect Search readiness. Serpio's own guidance for this finding is deliberately measured: it calls llms.txt an emerging, optional convention that should come after sitemap, canonical, metadata, and content fixes.

A minimal example

The format is ordinary Markdown. One H1 with the site name, a blockquote with a one-line summary, then H2 sections containing a bulleted list of links. Each link is followed by a colon and a short description. Use absolute URLs and only link to public pages.

markdown
# Acme Analytics

> Acme Analytics is privacy-first web analytics for small SaaS teams. No cookies, one script tag, hosted in the EU.

## Product

- [How it works](https://www.acme-analytics.example/how-it-works): What the script collects and what it never collects.
- [Pricing](https://www.acme-analytics.example/pricing): Plans, limits, and what counts as a pageview.

## Documentation

- [Installation](https://docs.acme-analytics.example/install): Adding the script to any site or framework.
- [API reference](https://docs.acme-analytics.example/api): Endpoints for exporting your data.

## Guides

- [Cookieless analytics explained](https://www.acme-analytics.example/blog/cookieless-analytics): Why consent banners are optional without cookies.
A generic llms.txt for a small software company. Replace every value.

Keep it short. Ten to twenty links is plenty for most sites. Every URL should resolve today, and the descriptions should say what a reader gets, not how great it is.

Publishing it on common hosts

Where your site runsWhere the file goes
Next.js, Vite, Astro, or any framework with a public folderSave it as public/llms.txt. It is served at the root without any config.
Netlify, Vercel, Cloudflare Pages static sitesPut llms.txt in the publish directory alongside index.html.
WordPressUpload llms.txt to the web root next to wp-config.php via SFTP or your host's file manager. Check that a rewrite rule is not intercepting the path.
GhostGhost does not serve arbitrary root files. Host the file on your CDN or a subdomain and add a redirect from /llms.txt in redirects.yaml, or serve it from a reverse proxy in front of Ghost.
Anything behind Cloudflare or another CDNAdd a rule or worker that answers /llms.txt with the text directly. This works regardless of the origin platform.

Serve it as text/plain or text/markdown. Most hosts pick text/plain for a .txt extension automatically.

Verify it

  1. 1

    Open it in a browser

    Visit https://yourdomain.example/llms.txt. You should see the raw text, not a 404 page or a redirect to the homepage.

  2. 2

    Check the response from the command line

    Run curl -I https://yourdomain.example/llms.txt and confirm a 200 status and a text content type. A 301 to another host means Serpio may not see it.

  3. 3

    Test the exact origin Serpio uses

    Serpio requests the file on the URL you registered. If you registered the apex domain but the file only exists on www, add it to both or redirect at the origin level.

  4. 4

    Re-analyze

    In workspace settings, click Re-analyze. When the new report loads, the No llms.txt found finding should be gone from Recommendations. See When to re-analyze your site.

What it does not do

  • It is not a ranking factor and Google has not said it uses the file.
  • It does not block or allow crawlers. That is robots.txt.
  • It does not guarantee that any assistant reads it, quotes it, or cites the pages it lists.
  • It does not replace crawlable HTML, structured data, or a sitemap.
  • It produces no reports. You will not see who fetched it unless you check your server logs.

Common questions

  • Should I list every page on the site?

    No. List the handful of pages that explain what you do and how it works: product, pricing, docs, and a few cornerstone articles. The sitemap is for completeness. llms.txt is for orientation.

  • Do I also need an llms-full.txt?

    The proposal describes an optional llms-full.txt that inlines the documentation itself. Serpio only checks for /llms.txt. Add the full version if you have long docs and want to, but it is not required for the finding to clear.

  • Does llms.txt change my Search readiness score?

    No. It contributes to AI citation readiness and adds a small amount to the Crawlability and Agent accessibility components of Site health. Search readiness ignores it.

Your next article starts here.

Turn a topic that is trending right now into your first article.

Write my first article

3 free articles a month. No credit card.