# Missing llms.txt

> llms.txt hands AI assistants a clean markdown summary of your site so they read it accurately. Add one at /llms.txt to guide LLMs to your best pages.

_Category: AI readiness · Detector `aeo` · Check `llms-txt-missing` · Severity: info_

`llms.txt` is the emerging convention for handing LLMs a clean, curated markdown map of your site — what it is, and links to the pages you most want read — instead of leaving them to scrape rendered HTML full of navigation and markup. As assistants increasingly answer questions using your content, an `llms.txt` is a cheap way to steer them to the right, accurate source.

## Symptoms

- Assistants summarise your site from noisy scraped HTML
- No single machine-readable index of your key pages for LLMs
- A GET to `/llms.txt` returns 404
- You have no control over which pages LLMs prioritise

## How VibeCheck detects it

The `aeo` detector flags this live in the browser and reports it to the widget's Problems list — and to your coding agent over MCP.

- **Issue string:** `No llms.txt`
- **Threshold:** /llms.txt is not served as a 2xx text/plain or markdown response

## Root causes

- The file simply hasn’t been created yet
- It exists but isn’t served with a `text/plain` or markdown content type
- It’s not deployed to the site root

## The fix

Publish a markdown file at `/llms.txt`: an H1 with the site name, a short blockquote summary, then sections of links (title + one-line description) to the pages you want LLMs to read. Serve it as `text/plain` or `text/markdown` from the root.

### Steps

1. Write `/llms.txt`: an H1 title, a one-line summary, then curated link sections
2. Link your most important, canonical pages with a short description each
3. Serve it from the site root with a `text/plain` or markdown content type

_llms.txt (markdown)_

```html
# Acme Docs

> Acme is a widget platform. This file points LLMs to the canonical docs.

## Guides
- [Quickstart](https://acme.com/docs/quickstart): Get running in 5 minutes.
- [API reference](https://acme.com/docs/api): Every endpoint and type.
```

## Framework-specific fixes

### Next.js

Serve it from a Route Handler at `app/llms.txt/route.ts`, or generate it from your content and write it to `public/` at build. A route handler lets you build the link list from your real pages.

_app/llms.txt/route.ts_

```ts
export function GET() {
  const body = `# Acme Docs\n\n> Summary.\n\n## Guides\n- [Quickstart](https://acme.com/docs/quickstart)\n`
  return new Response(body, { headers: { 'Content-Type': 'text/plain; charset=utf-8' } })
}
```

### Svelte

Expose it via a SvelteKit endpoint that returns `text/plain`, or drop a static file in `static/`.

_src/routes/llms.txt/+server.ts_

```ts
export function GET() {
  return new Response('# Acme Docs\n\n> Summary.\n', { headers: { 'Content-Type': 'text/plain' } })
}
```

### Vanilla JS

Place a static `llms.txt` at the web root and ensure your server sends a `text/plain` content type for it.

```html
# served from https://acme.com/llms.txt with Content-Type: text/plain
```

## FAQ

### Is `llms.txt` an official standard?

It’s an emerging convention, not a formal standard, but it’s increasingly recognised. It costs almost nothing to add and gives you a curated surface for LLMs, which is why it’s worth doing.

### What’s the difference between `llms.txt` and `robots.txt`?

`robots.txt` controls what crawlers may access; `llms.txt` is a positive, curated markdown summary that points LLMs to your best content. They’re complementary.

### What should I put in it?

A title, a one-line description of the site, and grouped links to your most important canonical pages, each with a short description. Keep it concise and current.

## Related problems

- [No markdown content negotiation](https://vibecheck.wcgw.fun/fix/missing-markdown-negotiation.md) — AI readiness
- [Missing structured data (JSON-LD)](https://vibecheck.wcgw.fun/fix/missing-structured-data.md) — AI readiness
- [robots.txt blocks AI crawlers](https://vibecheck.wcgw.fun/fix/ai-crawlers-blocked.md) — AI readiness
- [No agent interface (MCP) advertised](https://vibecheck.wcgw.fun/fix/missing-mcp-discovery.md) — AI readiness

---

Fix guide from VibeCheck — https://vibecheck.wcgw.fun/fix/missing-llms-txt. Full site index for LLMs: https://vibecheck.wcgw.fun/llms.txt
