# llms.txt: what it is, examples, and how to write yours

You can add llms.txt in an hour and move on. It is a simple Markdown file that gives models a curated map of your site. Here is what it is for, what it is not, the structure, a clean example, how to write one fast, and where it sits with robots and your sitemap.

Updated 2026-09-13 · Source: https://porteur.ai/guides/llms-txt

## Why write llms.txt at all

You want agents and models to find the right pages first. You also want fewer wrong quotes from your docs or pricing. llms.txt gives them a short map you control.

It is low effort for a small site. One Markdown file with a title, a short summary and a few link lists. You can draft it in under an hour, then keep it fresh when you ship.

Adoption is voluntary. As of 2026 no major AI vendor has committed to reading it. You lose little by adding it, and you control the story models see when they do read it.

## What llms.txt is, and what it is not

llms.txt is a proposal published in September 2024 by Jeremy Howard of Answer.AI at llmstxt.org. It is a Markdown file served at /llms.txt. It gives language models and agents a curated map of a site.

- It contains an H1 with your site or project name. This is the only required element.
- Then a blockquote with a one paragraph summary.
- You may add plain paragraphs for short extra context.
- Then H2 sections. Each section holds a list of links in the form [title](url): one line description.
- A section titled Optional marks links an agent can skip when its context is short.
- /llms-full.txt is optional. It carries the full text of the pages as Markdown.

> It is not an access control, opt out or licensing file. robots.txt governs what a crawler may fetch. llms.txt only says what your site is and where the useful pages are.

## The file structure at a glance

Keep to the simple structure. Plain Markdown. No HTML. Avoid long prose in llms.txt itself. Put full page text in llms-full.txt when you need it.

```en
# YourProduct

> YourProduct helps small teams capture feedback and turn it into clear product updates. Built for SaaS with a two week release cycle.

Short context line if needed.

## Start here

[Home](/): Overview of what it does and who it is for.
[Pricing](/pricing): Plans and limits in plain language.
[Changelog](/changelog): What shipped recently.

## Docs

[Getting started](/guides/getting-started): Install and set up in five minutes.
[CLI reference](/docs/cli): Commands with examples.
[Webhooks](/docs/webhooks): Events you can listen to.

## Use cases

[For product managers](/use-cases/product-managers): Triage, prioritise, and close the loop.
[For support teams](/use-cases/support): Turn tickets into tidy issues.

## Company

[About](/about): Team and background.
[Security](/security): Data handling and compliance.

## Optional

[Blog](/blog): Opinions and longer reads.
[Careers](/careers): Open roles.
```

Each link has a one line description. Keep it literal, not hype. Use absolute paths if your site is single domain. Use full URLs if you need cross domain links.

## A clean llms.txt example for a product site

Here is a fuller worked example for a small SaaS. Replace the domain and adjust sections to match your site. This covers the core pages a model should try first.

```en
# AcmeBoard

> AcmeBoard is a lightweight issue tracker for SaaS teams. Create tasks from support tickets, prioritise with impact, and ship in two week cycles.

AcmeBoard runs in the browser and on macOS. Data is stored in the EU. Email support replies become tasks.

## Start here

[Home](https://yourproduct.com/): What it is and the main value.
[Pricing](https://yourproduct.com/pricing): Plans, limits, and billing cycle.
[Changelog](https://yourproduct.com/changelog): Latest fixes and features.

## Product docs

[Guides: getting started](https://yourproduct.com/guides/getting-started): Sign up, connect email, create first board.
[API reference](https://yourproduct.com/docs/api): Endpoints with auth, rate limits, and examples.
[Webhooks](https://yourproduct.com/docs/webhooks): Events and payloads.
[Import](https://yourproduct.com/docs/import): Bring data from Trello or Jira.

## Security and legal

[Security](https://yourproduct.com/security): Data handling, backups, SSO.
[Terms](https://yourproduct.com/terms): Service terms.
[Privacy](https://yourproduct.com/privacy): What data we process.

## Use cases

[For product managers](https://yourproduct.com/use-cases/product-managers): Plan and report.
[For support teams](https://yourproduct.com/use-cases/support): Turn tickets into tasks.

## Optional

[Blog](https://yourproduct.com/blog): Long form product writing.
[Case studies](https://yourproduct.com/case-studies): Customer stories.
[Careers](https://yourproduct.com/careers): Roles at AcmeBoard.
```

A good file reads like a table of contents. Clear titles, short descriptions, and sections that match your site IA. Put marketing fluff in your blog, not here.

## Write yours in twenty minutes

You can draft a solid first version fast. Use your nav and docs index as your source. Keep the scope tight on v1, then expand later if you need to.

1. **Create the file** Open a plain text editor. Save a new file as llms.txt. Add it at the root of your site later, for example yourproduct.com/llms.txt.
2. **Add the H1** Write a single line with # YourProduct. This is required. Use your site or project name, not a slogan.
3. **Add a one paragraph summary** Add a blockquote line starting with >. Write one paragraph. State what the product is, who it helps, and the main proof point in one or two clauses.
4. **Optional context lines** Add one or two plain lines if needed. For runtime, platform, region, or data basics. Keep each line under a sentence.
5. **Choose 4 to 8 core sections** Common picks: Start here, Product docs, Use cases, Security and legal, Company, Optional. Use H2 headings with ##.
6. **List 3 to 6 links per core section** Format is [Title](URL): one line description. Use your most canonical URLs. Do not list every page. Link the source of truth, like /docs/api not a blog about it.
7. **Add an Optional section** List pages that help with colour but are not needed when context is short. Blog, case studies, press, event recaps.
8. **Review for accuracy** Open each link and check the title and description match the first screen and H1. Fix vague wording. Keep verbs plain: set up, import, secure, bill.
9. **Publish** Upload the file to the site root so it is served at /llms.txt with Content-Type text/plain or text/markdown. Ensure it is public and cacheable.
10. **Optional: write llms-full.txt** Only if you have time and steady docs. Add the full text of the linked pages as Markdown. Store it at /llms-full.txt.

A tidy v1 could link only Home, Pricing, Getting started, API reference, Security, and Privacy. That is enough signal for most agent tasks. Expand later with more docs and use cases.

## Where llms.txt sits with robots and your sitemap

Serve llms.txt at the root of your primary domain. For example, https://yourproduct.com/llms.txt. If you have a docs subdomain, keep its links absolute in the file. You still host one file at the main root.

- robots.txt controls what crawlers may fetch. Do not attempt to block with llms.txt.
- Your XML sitemap lists URLs for discovery and indexation. It is not a content guide.
- llms.txt complements both. It points models to the most useful pages and sections.
- Do not list staging or admin URLs. Only public, canonical pages belong here.
- If you must exclude a path from crawlers, set that in robots.txt, not in llms.txt.

```en
# robots.txt snippet for clarity
User-agent: *
Allow: /
# Block private paths here if needed, not in llms.txt
Disallow: /admin

# You do not need to reference llms.txt in robots.txt or sitemaps
# But you can link to it from your footer for humans and agents.
```

## How to check it exists and works

You do not need a special validator. You need three checks: does it load, is the format clean Markdown, and are the links valid. Add one check to find it from your homepage.

1. **Direct fetch** Open https://yourproduct.com/llms.txt in an incognito window. You should see plain text Markdown. No redirects. 200 response.
2. **Content type** Check headers. text/plain or text/markdown is fine. Avoid text/html.
3. **Link sanity** Copy each URL into a new tab. Fix any 404s or redirects. Prefer the clean, canonical path.
4. **Footer link** Optional: add a small link to /llms.txt in your footer next to /robots.txt and /sitemap.xml. Humans and agents will find it faster.
5. **Full text file** If you created /llms-full.txt, fetch it once. Check the Markdown renders and the content matches the live pages.

You can also run a crawler on your domain and confirm the file is discoverable. It should not be blocked by robots.txt. Treat it like any other public asset in your checks.

## When and how to use llms-full.txt

llms-full.txt is optional. Use it when your key docs are long and you want to give models the full text in one fetch. It should mirror the links you list in llms.txt, but with full Markdown content below each heading.

```en
# YourProduct full text

> Full text companion to /llms.txt. See that file for the curated map.

## Getting started

[Getting started](https://yourproduct.com/guides/getting-started)

# Getting started

Install the CLI by running...

## API reference

[API reference](https://yourproduct.com/docs/api)

# API reference

Authentication

Use a bearer token...
```

- Keep only canonical, public content.
- Match headings to the sections in llms.txt for easy cross reference.
- Do not paste secrets or draft docs.
- Regenerate when you ship large doc changes.

## Keeping it fresh and measuring value

Treat llms.txt like your nav in code. Update it when you add or remove core pages. Review once per release cycle. It should reflect what a model should read first, as of today, not last year.

- Set an owner. Make it part of the release checklist.
- When you ship a major feature, add the doc and remove old ones.
- Keep descriptions aligned with the page H1 and first paragraph.
- Scan links for redirects quarterly. Clean them to the final URL.
- If you add llms-full.txt, rebuild it as part of your docs deploy.

You will not see direct traffic from it. Any effect will show in fewer wrong quotes in support, better answers from agents you test, and faster agent runs on your own stack. If a vendor announces support, you are ready without a scramble.

## Common mistakes to avoid

- Using slogans instead of literal descriptions.
- Listing every blog post. Keep it curated.
- Forgetting the Optional section, which helps context constrained agents.
- Putting licensing or opt out text in llms.txt. Use robots.txt for access rules.
- Letting it drift from your current IA. Treat it as living config.

## Questions

### What is an llms.txt file?

A plain Markdown file at /llms.txt that gives language models and agents a curated map of your site. It starts with an H1 that names your site, a one paragraph summary as a blockquote, optional context lines, then H2 sections of links with one line descriptions. It is a voluntary proposal, not a standard, published in 2024 at llmstxt.org.

### Is LLMs.txt actually used by major AI vendors?

Adoption is voluntary. As of 2026 no major AI vendor has committed to reading it. You can still add it now. It takes little time and puts your best pages forward for agents that do read it.

### Is llms.txt mandatory or required for SEO?

No. It is not mandatory and it is not part of search engine indexation. robots.txt governs crawler access. Your sitemap lists URLs for discovery. llms.txt only curates useful pages for models and agents.

### How do I generate an llms.txt file fast?

Use a text editor and follow the structure here. Start with your top nav and docs index. In twenty minutes you can list Home, Pricing, Getting started, API, Security, and legal pages with one line descriptions. If you prefer a helper, you can use a simple generator and then edit by hand for accuracy.

### Should I host more than one llms.txt file?

Host one at the root of your main domain. If you have subdomains, include absolute links to them in the one file. Keep staging and private paths out of it. If you want to add full text, create a separate /llms-full.txt file.

### How is llms.txt different from robots.txt and sitemaps?

robots.txt tells crawlers what they may fetch. Your XML sitemap lists URLs for discovery. llms.txt is not about access or indexation. It is a human written map of the most useful public pages with short descriptions and sections.

## Read next

- [llms.txt](https://porteur.ai/glossary/llms-txt): llms.txt is a Markdown file at /llms.txt that maps your site for AI agents. See what to put in it, how to publish it, and the traps to avoid.
- [robots.txt for AI crawlers: GPTBot, ClaudeBot, PerplexityBot and what to allow](https://porteur.ai/guides/robots-txt-for-ai-crawlers): Decide which AI crawlers to allow in robots.txt, why it matters, and copy‑paste examples for GPTBot, ClaudeBot, PerplexityBot, Google‑Extended and more.
- [llms.txt generator](https://porteur.ai/tools/llms-txt-generator): Write an llms.txt from your site or from a few fields, in sections, and check the one a site already has against the proposal, link by link.
- [AI crawler access checker](https://porteur.ai/tools/ai-crawler-access-checker): Paste a site or a page and see, crawler by crawler, whether it may read it: root and page, the rule that decides, the text without JavaScript, llms.txt.
- [Sitemap checker](https://porteur.ai/tools/sitemap-checker): Read a sitemap the way a crawler does: what it lists, how it is dated, whether robots.txt names it, and whether thirty of its addresses answer 200.
- [Technical SEO checklist for a small site](https://porteur.ai/guides/technical-seo-checklist): Run these 20 technical SEO checks, in order. Each shows how to check it free and what fixed looks like for a site under 1,000 pages.
- [Keyword stuffing](https://porteur.ai/glossary/keyword-stuffing): Keyword stuffing is loading pages with repeated terms to game rankings. See why it fails, what Google’s policies say, how to spot it, and what to write instead.

Paste your homepage URL to get a free read of your site and nearby searches in about thirty seconds, and see three findings you can act on now. Free check: https://porteur.ai/
