AI & Search
llms.txt: The Complete Implementation Guide for 2026
What llms.txt is, exactly how to write one, and what it does and does not do. A practical implementation guide with a working template and honest limitations.
If you have heard of llms.txt at all, it was probably described to you as "robots.txt for AI." That comparison is wrong in the way that matters most, and it leads people to implement the file incorrectly.
robots.txt is a permission file. It tells crawlers what they may not fetch.
llms.txt is a content file. It gives language models a clean, structured summary of what your site contains and where the important material lives, so they do not have to reconstruct it from navigation menus, cookie banners and marketing copy.
This guide covers what the convention actually specifies, how to write a file that helps, and — the part most articles skip — what it will not do for you.
What llms.txt actually is
The convention was proposed by Jeremy Howard of Answer.AI in September 2024. It specifies a Markdown file served at /llms.txt from your domain root.
The reasoning is straightforward. Language models have limited context windows. A modern marketing homepage might be 200KB of HTML, of which perhaps 3KB is substantive content — the rest is navigation, scripts, styling, tracking and boilerplate. When a model needs to know what your company does, forcing it to parse all of that is wasteful and lossy.
llms.txt gives it the 3KB directly.
The format is deliberately minimal:
- An H1 with the site or organisation name — the only required element
- An optional blockquote with a short summary
- Optional prose sections
- H2 sections containing lists of links, each optionally annotated with a description
There is also an extended convention, llms-full.txt, which contains the complete content rather than links to it.
Who actually reads it
This is where you should be sceptical of anything you read on the subject, including vendor marketing.
What is verifiable: the file is fetched. If you publish one and check your server logs, you will see requests for /llms.txt from a range of crawlers and agents. Several developer-tool companies — Anthropic, Cloudflare, Stripe, Perplexity, Zapier and others — publish one.
What is not verifiable: whether any major model provider currently uses it as a weighted ranking or retrieval signal. As of early 2026, none has published documentation confirming that they do. Google has stated publicly that it does not use llms.txt for search.
So why implement it?
Three honest reasons:
- The cost is near zero. It is one static file. Writing a good one takes an afternoon.
- Agentic retrieval is growing. When a user asks an AI assistant to research vendors, that assistant fetches pages in real time. A clean
llms.txtis directly useful to that process today, regardless of training-time indexing. - The exercise itself is valuable. Writing a factually dense, unambiguous 2KB description of your business surfaces problems — inconsistent service naming, vague positioning, contradictory claims — that also degrade your regular search performance.
What you should not do is pay anyone a significant sum to implement it, or believe a tool that claims to measure your "llms.txt ranking impact." That measurement does not currently exist.
The format, precisely
Here is the structure, with the rules that matter:
# Company Name
> One-paragraph summary. This is the highest-value sentence in the file —
> models frequently quote it verbatim. Make it factual and specific.
Optional prose. Keep it short. Facts, not adjectives.
## Section Name
- [Link title](https://example.com/page): Description of what is at this URL.
- [Another page](https://example.com/other): Another description.
## Optional
- [Lower priority material](https://example.com/archive): Content that can be
skipped when context is tight.
Rules worth knowing:
- H1 is required. Everything else is optional.
- The blockquote should be the whole summary, not an introduction to one.
- Use absolute URLs. Relative paths are ambiguous when the file is read out of context.
- The
## Optionalsection is special. It is the one section name with defined meaning: content a consumer may drop when short on context. - Serve it as
text/plainortext/markdown. Nottext/html. - It goes at the domain root.
/llms.txt, not/docs/llms.txt.
Writing one that is actually useful
Most published llms.txt files are bad. They read like a compressed marketing page. Here is what separates a useful one.
Lead with what you are, not what you promise
Bad:
We are a passionate team of digital innovators dedicated to transforming your online presence with cutting-edge solutions.
That sentence contains no extractable facts. A model cannot cite it to answer any question.
Good:
Live Ajans is a digital agency and software house with offices in Dover (USA), Düsseldorf (Germany) and Istanbul (Turkey). We build custom websites and software, brand identities, SEO and AI-search optimisation, and manage paid media on Google, Meta, TikTok and X. Client work is delivered in 26 languages.
Every clause in that version is a fact a model can retrieve and attribute.
Include the things people actually ask
Think about the questions a prospective customer would ask an AI assistant about a company like yours. Then make sure your file answers them:
- What exactly do you do? (services, specifically named)
- Where are you? (real addresses, not "global")
- What does it cost? (ranges are fine; silence is not)
- What languages / markets do you serve?
- How do people contact you?
Pricing is the one most companies omit, and it is the one most often asked. You do not have to publish a rate card — a range is enough, and it prevents a model from inventing one.
Be consistent with everything else
If your llms.txt says you have three offices and your Schema.org markup lists two, you have created ambiguity. Models weight consistency heavily when deciding what to state confidently. Your llms.txt, your structured data, your footer and your third-party directory listings should agree exactly.
Keep it short
The point of the file is context efficiency. A 40KB llms.txt defeats the purpose. Aim for 2–5KB in llms.txt, and put the long material in llms-full.txt.
A working template
# Acme Manufacturing
> Acme Manufacturing produces precision CNC components for the automotive
> and aerospace sectors from a single facility in Stuttgart, Germany.
> Founded 1998. Typical order volumes 500–50,000 units. ISO 9001 and
> IATF 16949 certified. Quotes returned within two business days.
## Capabilities
- [CNC Milling](https://example.com/cnc-milling): 5-axis milling to ±0.005mm, aluminium, steel and titanium.
- [CNC Turning](https://example.com/cnc-turning): Bar capacity to 65mm diameter, batch runs from 500 units.
- [Quality Assurance](https://example.com/quality): CMM inspection, full material traceability, PPAP documentation.
## Company
- [About](https://example.com/about): Founded 1998, 84 employees, 4,200m² facility in Stuttgart.
- [Certifications](https://example.com/certifications): ISO 9001:2015, IATF 16949:2016.
- [Contact](https://example.com/contact): +49 711 000000, sales@example.com.
## Optional
- [Case studies](https://example.com/cases): Detailed project write-ups.
- [Blog](https://example.com/blog): Technical articles on machining tolerances.
Note what this does: it puts the specifics — tolerances, capacities, certifications, minimum order quantities — where a model can retrieve them. A competitor whose file says "we deliver world-class quality" cannot be cited on any of those questions.
What llms.txt will not do
Being clear about this matters, because the gap between what the file does and what it is sold as is where money gets wasted.
It will not make you appear in ChatGPT answers on its own. Being cited depends overwhelmingly on whether authoritative sources reference you, whether your content is substantive, and whether your entity is unambiguous across the web. A text file does not change any of that.
It will not help if your site blocks AI crawlers. Check your robots.txt first. If GPTBot or ClaudeBot are disallowed, llms.txt is irrelevant — nothing is reading it. This is a surprisingly common misconfiguration, often inherited from a template.
It will not fix thin content. If your service pages say nothing specific, summarising them into a text file summarises nothing.
It is not a ranking factor in Google Search. Google has said so directly.
The order of work that actually matters
If your goal is to be found and cited by AI answer engines, llms.txt is roughly the fifth most important thing to do. In order:
- Unblock AI crawlers in
robots.txt. If they cannot read you, nothing else matters. - Server-render your content. Many AI crawlers do not execute JavaScript. If your content only appears after hydration, they see an empty page.
- Publish a connected Schema.org graph.
Organization,Service,Article,FAQPage— linked with@idreferences, not scattered as isolated blocks. - Restructure content for passage retrieval. Models retrieve sections, not pages. Each H2 section should open with a direct, self-contained answer before elaborating.
- Publish
llms.txt. Now that everything above is true, summarise it.
Doing step five first is the most common mistake. It is also the easiest one to sell.
Checking your own implementation
Once published, verify:
curl https://yourdomain.com/llms.txtreturns 200 with a plain-text content type- The file is not behind Cloudflare bot protection that blocks non-browser user agents
- Every URL in it resolves — dead links in an
llms.txtare worse than no file - The facts in it match your Schema.org markup exactly
- Your
robots.txtdoes not disallow the AI crawlers you want reading it
You can run those checks against any domain with our free AI visibility checker, which fetches the file, reads your robots.txt crawler rules and inspects your structured data.
The honest summary
llms.txt is a low-cost, low-risk piece of technical hygiene with genuine near-term utility for agentic retrieval and uncertain long-term value for training-time indexing. Implement it, spend an afternoon writing it properly, and do not let anyone charge you a project fee for it.
The real work — crawler access, server rendering, structured data, and content a model can actually extract a claim from — is what determines whether AI engines describe your business correctly. llms.txt is the last five percent, not the first ninety.