AgentScan logoAgentScan
Standards8 min read

llms.txt vs llms-full.txt: when to use which

The two emerging conventions look similar but solve different problems. Here is how to pick, what to put in each, and how to deploy them on Next.js.

llms.txt vs llms-full.txt: when to use which

llms.txt vs llms-full.txt: when to use which

Two adjacent conventions are gaining traction for AI-readable sites. They are easy to confuse because the names are almost identical, but they exist for different reasons. Pick the wrong one and you either over-share or under-deliver. Here is the practical breakdown.

llms.txt is an index

/llms.txt is a small markdown document that points an agent at the canonical entry points of your site. Think of it as a sitemap with prose: a short site description, then a curated list of important URLs grouped by purpose, each with a one-line summary.

Typical size: 1 to 5 KB. Typical scope: under 50 links.

A minimal example:

# Acme Docs

> Developer documentation for Acme's REST API.

Acme is a payments platform. The links below give an agent a complete map
of the public API and supporting docs.

## Core

- [Getting Started](https://acme.com/docs/start): install and first request
- [Authentication](https://acme.com/docs/auth): API key and OAuth flows

## Reference

- [API Reference](https://acme.com/docs/api): endpoints and schemas
- [Webhooks](https://acme.com/docs/webhooks): event types and signing

## Optional

- [Changelog](https://acme.com/changelog): release notes

llms.txt is for agents that need to discover what your site offers without crawling everything. It is a navigation aid.

llms-full.txt is the content

/llms-full.txt is a single file that embeds the full content of your most important pages so an agent can ingest your site in one fetch.

Typical size: 10 KB to a few MB. Typical scope: everything an agent might want to quote.

It is structured as concatenated markdown sections separated by horizontal rules:

# Acme Docs

> Full content bundle for AI ingestion.

---

## Getting Started

Install the package:

`npm install @acme/sdk`

Then call:

`import { client } from "@acme/sdk";`
`const result = await client.charges.create({...});`

---

## Authentication

The API supports two methods. The recommended path is OAuth 2.0...

llms-full.txt is for agents that need to answer questions about your site without making N additional fetches.

When to use which

GoalFileWhy
Help agents find your most important pagesllms.txtCompact index with one-line summaries
Let agents quote your docs accurately in answersllms-full.txtFull content available in a single fetch
BothPublish bothThey are complementary, not alternatives

If you only have time for one, start with llms.txt. It is small, low-effort, and useful immediately. Add llms-full.txt later when you have stable canonical content worth bundling.

Adoption check

A May 2026 crawl of the Tranco Top 10,000 found ~5.86% adoption for llms.txt and ~1.03% for llms-full.txt. Both numbers are small, but the curve is up and to the right, and adoption skews heavily toward developer-tooling and documentation sites.

Deploying both on Next.js

Two route handlers and you are done.

// app/llms.txt/route.ts
import { NextResponse } from "next/server";
const BODY = `# Your Site\n\n> Tagline.\n\n## Core\n\n- ...\n`;
export async function GET() {
  return new NextResponse(BODY, {
    status: 200,
    headers: {
      "content-type": "text/plain; charset=utf-8",
      "cache-control": "public, max-age=3600",
    },
  });
}
// app/llms-full.txt/route.ts
import { NextResponse } from "next/server";
const BODY = `# Your Site\n\n---\n\n## Section A\n\nBody...\n`;
export async function GET() {
  return new NextResponse(BODY, {
    status: 200,
    headers: {
      "content-type": "text/markdown; charset=utf-8",
      "cache-control": "public, max-age=900",
    },
  });
}

Then advertise both from your homepage with a Link header:

Link: </llms.txt>; rel="describedby"; type="text/plain",
      </llms-full.txt>; rel="describedby"; type="text/markdown"

Common mistakes

  • Treating llms-full.txt as a database dump. Quality beats coverage. A clean 50 KB bundle of canonical docs beats a 5 MB bundle of every page on the site.
  • Forgetting to update them. Both files should be regenerated on the same deploy that ships content changes. If they drift, agents will quote stale content.
  • Pointing to URLs that 404. Every URL in llms.txt must resolve. Run a link checker on it as part of CI.

Build them with our tools

We ship browser-side generators for both: the llms.txt Generator for the index format and the llms-full.txt Generator for the deep-content bundle. Both produce drop-in markdown and copy-paste prompts for your coding agent.