CrawlPact

Implementation guide

How to publish an llms.txt file

A step-by-step implementation guide for adding a valid llms.txt (and llms-full.txt) file to your site.

By CrawlPactPublished Updated

llms.txt is a community-proposed convention (not an IETF or W3C standard) for giving AI systems a concise, structured entry point to a site’s most relevant content, in Markdown.

Step 1: Create the file at your domain root

Place a plain-text file at /llms.txt — for example https://example.com/llms.txt. Where that file physically lives depends on your hosting:

  • Static-site hosts (Cloudflare Pages/Workers Assets, Netlify, Vercel, or any static-site generator, including this site) — put the file in the project’s static-assets directory (often named public/), so it’s copied to the site root unchanged at build time, alongside files like robots.txt and favicon.ico.
  • WordPress — a real file placed directly in the site’s web root (via SFTP or your host’s file manager) is served as-is; Apache and Nginx check for a matching file on disk before handing the request to WordPress’s own routing, so no plugin is required if you have direct file access. If your host doesn’t allow that, a small plugin (or a functions.php snippet hooked to WordPress’s init action, matching the request path and outputting the content with a text/plain content-type) can serve it instead — the same technique WordPress itself uses to serve a virtual robots.txt when no physical file exists.

Step 2: Start with a top-level Markdown heading

# Example Site

A top-level # heading near the start of the file is the structural convention this format is built around — CrawlPact’s llms.txt validator specifically checks for its presence, since the proposal starts the file with one.

# Example Site

> A one-line summary of what this site is.

## Documentation

- [Getting started](/docs/getting-started)
- [API reference](/docs/api)

Each Markdown link ([label](url)) is a linked resource an AI system reading this file can follow. Keep the list focused — this file is meant to be a concise entry point, not a full sitemap.

Step 4 (optional): Publish a longer llms-full.txt

Some sites also publish /llms-full.txt — the same convention, but with more complete content inlined rather than just linked, for systems that prefer a single larger fetch over following multiple links.

Step 5: Verify

Run CrawlPact’s llms.txt validator. It reports the file’s size, whether a top-level heading was found, and how many linked resources were detected, for both /llms.txt and /llms-full.txt independently.

What this doesn’t do

Publishing llms.txt is informational — it does not control crawler access (that’s robots.txt’s role) and there is no guarantee any specific AI system reads or prioritises it, since adoption of this convention varies by operator.

Related guides

See how this applies to your own site

Run a free audit to check your declared AI crawler policy against your own domain.

Analytics preferences

CrawlPact uses optional Google Analytics and Microsoft Clarity on public pages to learn which content is useful. Clarity records clicks and scrolling (session replay), with anything you type masked. Neither runs in the app or admin areas, and CrawlPact works the same whether you accept or decline. See the privacy policy.