Check your llms.txt: the six things a valid file needs
llms.txt is a plain-text file at the root of your site, written for language models and the agents built on them: what the site is, who it is for, and where the important pages are. It is a convention proposed in 2024, not a standard, and no search or answer engine has committed to using it for ranking. It is still the cheapest place to publish the one-sentence description you want repeated, and a growing number of agents and developer tools read it.
Most published files fail for mechanical reasons rather than content: the server returns the HTML 404 page with a 200 status, the content type is text/html, or the file is a copy of the sitemap. This page is the checklist. The AstraVerify scan runs the first three checks automatically and reads the file so you can judge the rest.
The six checks
| Check | Pass | Common failure | Tested by the scan |
|---|---|---|---|
| 1. Location | https://yourdomain.com/llms.txt on the canonical host, reachable over HTTPS | Only on www when apex is canonical, or the reverse | Yes |
| 2. Status | 200, possibly after one redirect | A 200 that is actually the site's not-found page; a 404 from a framework route | Yes |
| 3. Content type | text/plain or text/markdown | text/html, because a single-page app answers every path with index.html | Yes (the file must also not begin with an HTML tag) |
| 4. Structure | A # heading with the site name, a > blockquote with the one-sentence definition, then sections of - [Title](URL): description links | A paste of the sitemap, or a marketing page in Markdown | Shown in the report excerpt |
| 5. The definition | One sentence saying what the site or product is, for whom, doing what; the same sentence as the first paragraph of the home page | A slogan ("Trust, simplified") that names nothing | Shown in the excerpt; the home page check tests the definitional paragraph |
| 6. Links | Absolute URLs on the canonical host, each with a one-line description, all returning 200 | Relative paths, or links to pages that redirect or need login | No; check them by hand |
A file that passes
Keep it short. The point is a summary a model can take in whole, not a second website. Ten to thirty links is plenty for most sites; a documentation site can add an "Optional" section for the long tail, which readers under a size limit may skip.
- Name
llms.txt- Type
text/plain- Value
# Yourbrand > Yourbrand is accounting software for freelancers in the UK. It files VAT returns, chases invoices and connects to UK bank feeds. ## Product - [Features](https://yourdomain.com/features): what the product does, by module - [Pricing](https://yourdomain.com/pricing): plans and what each includes - [Security](https://yourdomain.com/security): data location, backups, access controls ## Help - [Guides](https://yourdomain.com/guides): setup and how-to articles - [Contact](https://yourdomain.com/contact): support hours and email ## Optional - [Changelog](https://yourdomain.com/changelog): release notes
Fixing the status and content type
- Static hosting (Netlify, Vercel, Cloudflare Pages, Firebase Hosting, GitHub Pages): put llms.txt in the public folder; it is served as text/plain by extension. If a single-page app rewrite catches every path, add llms.txt to the rewrite exceptions or list it as a static file first.
- WordPress: several SEO plugins now write llms.txt for you; otherwise upload the file to the web root by FTP or the hosting file manager, next to robots.txt.
- Nginx: a plain file in the document root is enough; if a location block proxies everything to an app, add location = /llms.txt { root /var/www/site; } above it.
- Frameworks with catch-all routes (Next.js, Rails, Django, Laravel): serve it from the static or public directory, not from a route, so the 200 and content type come from the web server.
What the scan does with the file
The Answer-engine readiness component of the Discoverability score gives four points for an llms.txt that returns 200 as text/plain or text/markdown, is not HTML, and has more than a token of content. The report shows the first 600 characters so you can see what a model would read. The definitional-paragraph check on the home page is scored separately; the two together are what gives an assistant something to quote when it is asked what your company does.
What llms.txt does not do
- It does not control crawling. Allowing or blocking AI crawlers is done in robots.txt and at your CDN.
- It does not replace structured data. JSON-LD tells search engines and answer engines what your pages are; llms.txt is prose for a model.
- It does not need llms-full.txt. The full variant (all documentation in one file) is useful for developer tools with a docs site and unnecessary for most businesses.
Frequently asked questions
- Does Google or ChatGPT read llms.txt?
- Neither has said it uses the file for search or answers. Some agents, coding assistants and documentation tools read it. Publish it because it costs a minute and states your own description in your own words; do not expect a ranking change from it.
- My file is there but the scan says text/html. Why?
- The server answered the request with your application page instead of the file, usually because a single-page app rewrites every path to index.html. Add the file to the static exceptions so the web server serves it directly.
- Should llms.txt list every page?
- No. List the pages that explain what you are and what you offer, with one line each. A model reading the file needs orientation, not a sitemap; the sitemap already exists for that.
- Plain text or Markdown?
- The convention is Markdown structure in a .txt file served as text/plain or text/markdown. Either content type passes; text/html fails.
Check your own domain. The scan shows your live records, a score out of 100 and the exact record to publish for each fix.
Related guides
- What is llms.txt? A plain-text summary for AI agents
- How to make your site readable by ChatGPT, Perplexity and Claude
- JSON-LD structured data for small business sites
- How the Discoverability score is calculated
Canonical: https://astraverify.com/llms-txt-checker