What is llms.txt? Format, adoption, and a SaaS template
llms.txt is a proposed Markdown file, served at yoursite.com/llms.txt, that gives large language models a short, curated summary of your site and links to the pages that matter most. It was proposed by Jeremy Howard in 2024 and is cheap to add, but at the time of writing no major AI engine has committed to using it for ranking or citations. Treat it as a low-cost extra, not a replacement for crawlable pages or a correct robots.txt.
- Format: an H1 with your name, a blockquote summary, optional detail paragraphs, and H2 sections of Markdown links. An "Optional" section marks links that can be skipped.
- llms-full.txt is a companion convention that puts full page content in a single file.
- robots.txt controls access, sitemap.xml lists URLs for discovery, llms.txt explains your site. They do different jobs.
- Adoption by AI search engines is unconfirmed. Spend an hour on it, not a sprint.
- It cannot fix pages that render empty without JavaScript or crawlers you have blocked.
What is llms.txt?
The llms.txt proposal was published in 2024 by Jeremy Howard, cofounder of Answer.AI and fast.ai. The idea starts from a practical problem: websites are built for human browsers, full of navigation, scripts, cookie banners, and layout markup. A language model trying to understand a site has to wade through all of that, and its context window cannot hold most sites in full anyway.
llms.txt offers a shortcut. You publish one plain Markdown file at the root of your domain that says, in effect: here is who we are, here is a one-paragraph summary, and here are the pages worth reading, with a note on each. The proposal is aimed mostly at inference time, meaning the moment an assistant or agent is trying to answer a question about your site, rather than at model training.
The same proposal also suggests offering clean Markdown versions of individual pages at the same URL with .md appended. That part is less widely adopted than the llms.txt file itself.
What format does llms.txt use?
The file is Markdown with a specific order of sections:
- An H1 with the site or project name. This is the only required element.
- A blockquote summary. A short description with the key information someone needs to understand the rest of the file.
- Optional detail. Zero or more paragraphs or lists (no headings) with more context, such as key facts or how to interpret the links.
- H2 sections with file lists. Each section is a Markdown list where every item is a link,
[Name](url), optionally followed by a colon and a short note. - An "Optional" H2 section. This name has special meaning: links listed here are secondary and can be skipped when a tool needs a shorter context.
A minimal valid example looks like this:
# Acme Metrics > Acme Metrics is product analytics software for B2B SaaS teams. ## Docs - [Getting started](https://example.com/docs/start): Install the SDK and send your first event
What is llms-full.txt?
llms-full.txt is a companion convention that grew up around the proposal, popularized by documentation platforms. Instead of linking to pages, it includes their full content concatenated into one Markdown file, so a tool can load everything in a single request. It is most useful for developer documentation, where someone might want an assistant to read the whole API reference at once. For a typical SaaS marketing site, llms.txt alone is usually enough. If you do publish llms-full.txt, generate it automatically from your docs source so it never drifts from the real pages.
Who actually reads llms.txt today?
This is where honesty matters. At the time of writing, none of the major AI search providers (OpenAI, Google, Anthropic, Perplexity) has publicly committed to using llms.txt as a signal for crawling, ranking, or citing sources, and Google representatives have publicly downplayed it. Their crawlers primarily fetch your regular HTML pages, governed by robots.txt. That could change, so check each vendor's official crawler documentation rather than relying on blog posts, including this one.
Where llms.txt is used today is mostly developer tooling. Some coding assistants, documentation tools, and agent frameworks can fetch a site's llms.txt or llms-full.txt when a user points them at it, and many developer documentation sites publish one for that reason. A person can also paste the file into a chat to give an assistant fast context.
So why bother? Because the cost is close to zero. Writing the file takes under an hour, it forces you to articulate what your product is in plain words, and if engines do start reading it, you are already set up. Just do not expect it to move traffic on its own.
How is llms.txt different from robots.txt and sitemap.xml?
| File | Job | Format | Status |
|---|---|---|---|
| robots.txt | Tells crawlers which paths they may or may not fetch | Plain text directives | Long-established standard; honored by major search and AI crawlers |
| sitemap.xml | Lists indexable URLs so search engines can discover them | XML | Widely supported by search engines |
| llms.txt | Explains the site and points language models to the best pages | Markdown | Proposal; adoption by AI search engines unconfirmed |
The key point: llms.txt grants and blocks nothing. If your robots.txt disallows GPTBot or ClaudeBot, listing pages in llms.txt does not override that. For access control, see robots.txt for AI crawlers. And if a CDN or firewall is blocking AI bots before they reach your server, neither file matters until you fix that; see Cloudflare blocking AI crawlers.
What should a SaaS llms.txt include?
Think of it as a briefing for someone who has never heard of you and has two minutes. Lead with the facts a buyer would ask an AI assistant about: what the product is, who it is for, what it costs, and where to verify each claim. Here is a full template using a fictional product. Replace every value.
# Acme Metrics > Acme Metrics is product analytics software for B2B SaaS teams. It tracks > funnels, retention, and feature adoption with a lightweight SDK. Plans: > Free, Team ($29/month), and Business ($99/month), with a 14-day trial on > paid plans. Key facts: - Category: product analytics for B2B SaaS - Best for: founders and product managers at SaaS companies - Works with: web apps via a JavaScript SDK, plus a REST API - Integrations: Slack, HubSpot, and Segment - Pricing and plan limits are listed on the pricing page linked below ## Product - [Product overview](https://example.com/product): What Acme Metrics does and who it is for - [Funnels](https://example.com/features/funnels): Conversion funnel analysis - [Retention](https://example.com/features/retention): Cohort retention reports - [Feature adoption](https://example.com/features/adoption): Track which features customers use ## Pricing - [Pricing](https://example.com/pricing): Plans, limits, trial terms, and billing FAQs ## Docs - [Getting started](https://example.com/docs/start): Install the SDK and send your first event - [API reference](https://example.com/docs/api): REST endpoints and authentication - [Integrations](https://example.com/docs/integrations): Setup guides for each integration ## Comparisons - [Acme Metrics alternatives](https://example.com/alternatives): Side-by-side comparison with other analytics tools ## Company - [About](https://example.com/about): Team and mission - [Security](https://example.com/security): Data handling and security practices - [Contact](https://example.com/contact): Sales and support ## Optional - [Blog](https://example.com/blog): Guides on product analytics - [Changelog](https://example.com/changelog): Release notes
Writing tips
- Write the summary like a definition. "[Product] is a [category] for [audience]" beats a tagline. Use the same wording as your homepage so the two reinforce each other.
- Curate, do not dump. This is not a sitemap. Link your money pages, core docs, and comparisons. Twenty to forty links is plenty for most SaaS sites.
- Make every note useful. "Plans, limits, trial terms" tells a model what it will find. "Learn more" does not.
- Use absolute URLs to canonical pages, not redirects or tracking links.
- Stay factual. No superlatives you cannot back up. Every claim should be verifiable on a linked page.
How do I create an llms.txt file step by step?
- Copy your definition. Take the first paragraph of your homepage, or write a plain "[Product] is a [category] for [audience]" sentence if the homepage does not have one yet. That becomes the blockquote.
- List the facts buyers ask about. Category, audience, plans and prices, trial terms, platforms, and main integrations. Keep each to one line.
- Pick your links. Start from your money pages (homepage, pricing, top feature pages, docs entry, comparisons), then add core docs. Put blog, changelog, and press under Optional.
- Write one note per link. Say what the page answers, in a few words.
- Check it renders. Paste the file into any Markdown previewer to confirm headings, the blockquote, and links are well formed.
- Publish and verify. Upload it to the root of your domain and load the URL in a browser and from a command line request.
Where do I host llms.txt?
At the root of your main domain, so it loads at https://yoursite.com/llms.txt. It should return a 200 status, plain text or Markdown content type, and UTF-8 encoding. How you get it there depends on your stack:
- React, Next.js, Astro, or other static builds: put the file in the public or static folder. It deploys with the site.
- WordPress: upload it to the site root through your host's file manager or SFTP. Some SEO plugins now offer to generate one; check your plugin's documentation.
- Webflow and Shopify: root file uploads are more restricted. Check each platform's current help docs for llms.txt support. If it is not supported on your plan, a common workaround is to host the file elsewhere and add a redirect from /llms.txt.
After publishing, open the URL in a browser and confirm it loads as text. Then make sure bots can reach it too: bot protection rules sometimes block non-browser requests to every path. The free AI crawler checker checks for llms.txt alongside robots.txt rules for nine crawlers and what GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, and Googlebot actually receive from your pages.
How do I keep llms.txt up to date?
- Tie it to pricing changes. Prices and plan names in the summary are the facts most likely to go stale. Add "update llms.txt" to your pricing-change checklist.
- Generate what you can. If your site is built from a CMS or Markdown files, generate the link sections at build time from the same source as your sitemap, and keep the hand-written summary at the top.
- Review quarterly. Check for broken links, renamed pages, and new money pages or comparisons worth adding.
- Keep it consistent. If llms.txt says one thing and your pricing page says another, you have created a contradiction for any model that reads both.
What llms.txt cannot do
llms.txt points to pages. If those pages are client-rendered React apps that return an almost empty HTML shell, a model following your links still finds nothing to read. Fixing that, by prerendering or server-rendering your key pages, matters far more than any index file; see why AI bots see empty React pages. The same goes for structured data: JSON-LD in your HTML, as described in the JSON-LD guide for SaaS, is read by established parsers today, while llms.txt support is still emerging.
A sensible priority order for AI visibility is: allow the right crawlers in robots.txt, make sure your pages render real content without JavaScript, make those pages clear and quotable with direct answers, FAQs, and schema, and only then add llms.txt. For the bigger picture on earning citations, read how to get cited by ChatGPT.
What are common llms.txt mistakes?
- Writing a marketing slogan in the summary instead of a plain definition.
- Listing hundreds of URLs, which defeats the purpose of a curated file.
- Leaving old prices or discontinued plans in the summary.
- Linking to pages that are blocked in robots.txt or behind a login.
- Serving the file as an HTML page or with a 404 behind a redirect chain.
- Expecting it to replace robots.txt, sitemap.xml, or server-rendered content.
FAQ
- What is llms.txt?
- llms.txt is a proposed Markdown file served at the root of a website, such as example.com/llms.txt. It gives language models a short summary of the site and a curated list of links to its most important pages, each with a brief note. Jeremy Howard proposed it in 2024 at llmstxt.org.
- Does ChatGPT or Google use llms.txt?
- At the time of writing, no major AI search provider, including OpenAI, Google, Anthropic, and Perplexity, has publicly committed to using llms.txt for crawling, ranking, or citations. Their crawlers mainly read regular HTML pages and follow robots.txt. Check each vendor's official crawler documentation for changes.
- What is the difference between llms.txt and robots.txt?
- robots.txt controls access: it tells crawlers which paths they may or may not fetch, and major crawlers honor it. llms.txt controls nothing. It is a guide that summarizes your site and points to key pages. Listing a page in llms.txt does not override a robots.txt disallow rule.
- What is llms-full.txt?
- llms-full.txt is a companion convention to llms.txt that contains the full content of your key pages concatenated into one Markdown file, so a tool can load everything in a single request. It is most useful for developer documentation. Most SaaS marketing sites only need llms.txt.
- Should my SaaS website have an llms.txt file?
- It is worth adding because it costs under an hour and clarifies how you describe your product. But it is a low priority compared with allowing AI crawlers in robots.txt, server-rendering your key pages, and making money pages clear and quotable. Do those first, then add llms.txt.
Check what AI crawlers see on your site
Test robots.txt, llms.txt, and the words GPTBot, ClaudeBot, and PerplexityBot actually read. Then fix your money pages.
Start free View pricing