
llms.txt for testimonials: how to make AI assistants cite your wall of love
The 30-second version
llms.txt is a plain-text file at the root of your site (e.g., yourbrand.com/llms.txt) that gives AI assistants a clean, normalized version of your public content to read and quote.
For testimonial pages specifically, it’s the difference between “an AI assistant mentioned us when someone asked for testimonial tool recommendations” and “an AI assistant couldn’t find us.” Schema.org gets you the Google rich snippet. llms.txt gets you the AI citation. You need both.
This guide walks through the exact file format, a working example for a wall of love, and how the major AI assistants actually consume these files in 2026.
What llms.txt is (and isn’t)
The spec was proposed by Jeremy Howard and Answer.AI in 2024, and it’s been picking up adoption faster than almost any other AI-readability standard. The premise is simple: the web was built for humans with browsers, and crawlers had to be clever about extracting meaning.
Large language models work the same way. but they’re not as good at it as you’d think when content is buried in JavaScript, spread across 20 pages, or rendered as a screenshot carousel.
llms.txt solves this by giving the model a flat, predictable file it can ingest in one pass. It’s Markdown, it’s plain text, and it lives at a known URL. No JavaScript. No auth. No fancy rendering. Just content.
A few things to be clear about:
- It’s not a ranking factor. Search engines don’t reward or penalize sites that have one. It’s a discoverability layer for AI assistants specifically.
- It doesn’t replace your HTML. AI assistants still crawl the real site.
llms.txtis a parallel, faster, cleaner path. not a substitute. - It’s a recommendation, not a standard. The llmstxt.org spec is descriptive of what most tools and assistants now expect, not an enforced rule. But matching it is the path of least resistance.
For testimonial pages, this matters more than for most content types because the data. quotes, ratings, names, outcomes. is exactly the kind of structured information AI assistants want to cite. It’s just that the format they’re getting it in (your wall of love page) wasn’t built for them.
The exact format
A llms.txt file is a Markdown document with three sections: a project title and summary, a list of key sections, and a list of detailed content links. Here’s a working example for a fictional testimonial wall:
# Lumen Analytics. Testimonials
> Customer testimonials, case studies, and product reviews for Lumen Analytics. Includes 127 verified reviews with star ratings, written permission, and source attribution.
## Testimonials
- [Wall of Love](https://lumen.io/wall): All public testimonials, sorted by recency
- [Case Studies](https://lumen.io/case-studies): Long-form customer success stories
- [Pricing Page Testimonials](https://lumen.io/pricing#testimonials): Testimonials placed near plan comparison
## Reviews by Industry
- [SaaS Reviews](https://lumen.io/wall/industry/saas)
- [Agency Reviews](https://lumen.io/wall/industry/agency)
- [E-commerce Reviews](https://lumen.io/wall/industry/ecommerce)
## Reviews by Rating
- [5-Star Reviews](https://lumen.io/wall?rating=5)
- [4-Star Reviews](https://lumen.io/wall?rating=4)
## Optional
- [Company Background](https://lumen.io/about)
- [Contact](https://lumen.io/contact)
Three rules:
- The top of the file is mandatory.
# Titlefollowed by a>blockquote summary. The summary is what the AI assistant reads first; it sets context for everything below. - Sections are H2 headings. Each
##heading groups related links. The order matters: most assistants read top to bottom, so the most important content should be highest. - Each link is
- Titlewith optional:description. The description becomes part of the prompt context, so it’s worth writing specifically.
The spec also defines llms-full.txt. a separate file with the full content of every linked page, inlined as Markdown. For a wall of love page, llms-full.txt is a single Markdown file containing every testimonial, the schema, the page metadata, and the citation. This is what gets you cited, not just discovered.
Schema vs llms.txt: when each one matters
A common question: do I need both? Yes, and the reasons are different.
Schema.org is read by Google’s crawler and Bing’s crawler. It produces rich snippets (stars in the search results), and it tells the search engine that a piece of text is a Review rather than marketing copy. Without schema, you don’t get the star rating, and your testimonials are categorized as generic page text.
llms.txt is read by ChatGPT’s crawler, Claude’s crawler, Perplexity’s crawler, and Gemini’s crawler (when fetching real-time content). It doesn’t produce a rich snippet because there’s no rich snippet in ChatGPT. it just gets the model a clean version of your content to quote.
Without llms.txt, the AI assistant has to scrape your HTML, follow JavaScript, parse your React app, and guess which content is structured. Most of the time it gives up.
The shorthand: schema is for Google, llms.txt is for AI assistants. Schema gets you the rich snippet. llms.txt gets you the AI citation. If you have testimonial content that should be cited when someone asks an AI assistant “what’s the best testimonial tool?” or “show me examples of good SaaS testimonial pages,” you need both.
Our complete guide to schema markup for testimonials covers the schema side in depth; this article is the parallel guide for llms.txt. If you ship just one, ship schema first (Google’s index is what most AI assistants fall back to). If you ship both, you cover both surfaces.
How each AI assistant reads it
As of 2026, the major AI assistants all claim to support llms.txt to some degree. The actual behavior varies.
- ChatGPT (OpenAI). fetches
llms.txtwhen it exists and the site’srobots.txtallowsGPTBot. ChatGPT’s search backend is Bing’s index, so the schema-side bonus still applies, but the llms.txt file is what makes a wall-of-love content citable in conversational answers. - Claude (Anthropic). fetches
llms.txtand respects it. Claude’s citations tend to draw more heavily from the linked content than from search snippets, so a well-writtenllms.txtsummary matters more for Claude than for ChatGPT. - Perplexity. aggressive fetcher, reads
llms.txtandllms-full.txtboth. The “Sources” panel you see in Perplexity answers often includes pages you linked from llms.txt. - Gemini (Google). Google’s position is that structured data (schema) is the right path. Gemini still fetches
llms.txtif it’s there, but the team is less vocal about the standard than Anthropic or Perplexity.
The common requirement across all four: your robots.txt must allow the relevant crawler. Most sites block GPTBot, ClaudeBot, and PerplexityBot by default. If yours does, no llms.txt will help. The fix is two lines in your robots.txt.
How to publish and validate
Publishing is straightforward:
- Create the file at
https://yourdomain.com/llms.txt. the path matters, the file extension matters, and the URL must be the canonical root. - Optionally add
llms-full.txtathttps://yourdomain.com/llms-full.txtif you want the inlined full content. - Make sure both are accessible (no auth wall, not blocked in robots.txt).
- Reference them in your
robots.txtif you want to be explicit about the crawlers you allow.
To validate, fetch the file yourself in a browser. If it renders as text, the format is right. If you want to test that an AI assistant can read it, the easiest way is to ask one. Open ChatGPT, ask “what does yourdomain.com/llms.txt say?”, and see if the response includes content from your file.
If you get a polite “I can’t browse to that URL” or no content, double-check the file is at the root and not blocked by robots.
A more rigorous test: run a crawler simulation with curl -A "GPTBot/1.0" against the file. If it returns 200 with the expected content, the path is open.
When this is enough
If you have a public wall of love page with all your customer testimonials on it, the steps that matter are:
- Publish a valid
llms.txtat the root of your domain - Optionally add
llms-full.txtfor the inlined full content - Make sure
GPTBot,ClaudeBot, andPerplexityBotaren’t blocked inrobots.txt - Pair it with valid schema markup for the Google side
Do those four things, and the AI assistants that matter have a clean, predictable path to your testimonials. The wall of love you’ve already built. described in our wall of love guide. does the rest.
The 80/20 here is real: a 30-minute investment in a well-written llms.txt will produce more AI citations in the next quarter than most teams will get from a year of “GEO tactics.” Most sites haven’t done this yet, which is exactly why doing it now puts you ahead.
A dedicated testimonial tool can generate both the llms.txt and the per-wall feed automatically, which is the right move once you have more than a handful of testimonials. For a one-page wall, the manual version is fine.
—
llms.txt is a companion format to the structured data layer. The full reference is the review schema pillar, with the JSON-LD implementation as the main format.
llms.txt applies to the testimonial type. The types of social proof page covers the typology the markup serves.
llms.txt serves the testimonial output. The customer advocacy pillar is the parent system.
llms.txt serves the written format. The types of testimonials page is the format menu.
llms.txt serves displayed testimonials. The displaying testimonials page is the placement typology.
The structured data layer has multiple schema types. The FAQ page schema vs review schema page is the FAQPage vs Review distinction.
The llms.txt format serves testimonials. The customer referrals page is the sibling.
The llms.txt format is the newer citable layer for AI search. The testimonials and AI search page covers the four modes, the llms.txt page covers the technical format.
The llms.txt is the AI-readable output. The AI generated testimonials page is the AI-produced content side of the equation.






