llms.txt: What It Is, How to Create It, and Why Your WordPress Needs It in 2026
Practical llms.txt guide for WordPress in 2026: what it really is, why no major AI provider has confirmed reading it in production, and why it's still worth implementing in 30 minutes. With 3 approaches, code examples, and FAQ.
Quick Answer
llms.txt is a Markdown file at your domain root (e.g.,
yoursite.com/llms.txt) that serves as a curated index for generative AIs. Proposed by Jeremy Howard in 2024, adopted by ~10% of websites today, but as of Q1 2026 no major AI provider (OpenAI, Google, Anthropic, Meta) has publicly confirmed reading it in production systems. Worth implementing anyway: 30 minutes one-time setup, free insurance for the next 18 months of AI search evolution.
Transparency
This article takes a deliberately contrarian, honest position on llms.txt — pointing out the gap between marketing hype and current evidence. Full disclosure: GEO Cite 22, the WordPress plugin we develop, generates llms.txt automatically, so we have a stake in the topic. We've written this article the way we'd want to read it: skeptical first, practical second, salesy never.
You searched for llms.txt generator because someone pitched it to you as "the next robots.txt for the AI era" — or a client asked whether it matters for their site and you weren't sure how to answer. You're in the right place, but before we get to the "how", here's the reality check most guides skip.
llms.txt is not a cheat code. In Q1 2026 data, no major AI provider has publicly confirmed reading it in production, and independent studies of tens of thousands of cited URLs find no statistically significant uplift in AI citations from llms.txt adoption. If someone is selling you llms.txt as "+30% AI citations in two weeks", they're overselling.
So why a 3,000-word article on how to do it well? Because it's still the right thing to do, for three concrete reasons: the cost is near-zero, AI crawlers fetch the file observably in server logs, and the standard is already de facto for developer tooling — Stripe, Vercel, Zapier, and Anthropic itself have all adopted it. Setup time: 30 minutes manual, 2 minutes via a WordPress plugin. Realistic expectation: insurance for the next 18 months of AI search evolution, not an immediate traffic boost.
Reading time: 14 minutes. Let's go.
What llms.txt is (and what it isn't)
llms.txt is a plain-text file in Markdown format placed at the root of your domain, reachable at https://yoursite.com/llms.txt. Its function: provide generative AIs with a curated index of your site's most important pages, in a clean format that bypasses most of the noise typical of web pages — navigation menus, footers, cookie banners, heavy JavaScript, marketing copy scattered everywhere.
The standard was proposed by Jeremy Howard (founder of Answer.AI, co-creator of fast.ai) in September 2024, and has gained organic adoption since — without any formal W3C/IETF endorsement, but with tech-driven traction that includes relevant names: Anthropic, Cloudflare, Stripe, Vercel, Supabase, Zapier, Modal.
The canonical format from the original proposal has four elements:
H1 with site or project name (required)
Blockquote with one-line description under the H1 (required)
H2 sections with link lists, formatted as
- [Title](URL): brief description, grouped by categoryOptional section labeled
## Optional, indicating secondary resources AIs can skip if context is tight
Now the most important part: four things llms.txt is NOT, and that most guides routinely confuse.
It's not an XML sitemap. A sitemap lists every URL on your site; llms.txt is curated — ideally 20 to 50 links total. The purpose is opposite: a sitemap says "here's everything", llms.txt says "here's what matters most, in order of importance". Treating it as a sitemap (full URL dump) is one of the most frequent mistakes — we cover it in section 6.
It's not robots.txt. robots.txt controls access to bots; llms.txt guides those who already have access. If you block a bot in robots.txt, that bot won't even read your llms.txt. The two files are complementary, not alternatives — they work together.
It's not a Google ranking factor. Google's John Mueller publicly stated that no Google AI system currently uses llms.txt, and this includes AI Overviews, AI Mode, and Gemini as a product. Across the entire Google ecosystem the file is currently inert. Implementing it won't help you in Google Search.
It's not a formal standard. There's no IETF RFC, no W3C specification, no standards body. It's a community-driven convention that may evolve — or be replaced by something better — in the next 12 to 24 months. Implementing it today doesn't guarantee future compatibility, though breakage risk is low (Markdown stays readable).
Do AIs actually read it? What the Q1 2026 data shows
This is the section most guides skip — and it's the one Marco, the freelance SEO consultant, needs to read before pitching llms.txt to a client. Here's what the data actually says.
Adoption is real but small
SE Ranking's analysis of 300,000 domains in late 2025 found a 10.13% adoption rate for llms.txt. BuiltWith's tracking, as of October 2025, recorded 844,000+ websites with the file implemented. Both numbers are growing month over month, but neither suggests llms.txt is mainstream yet — for context, schema.org markup appears on roughly 40% of all indexed sites.
No major AI provider has confirmed production use
As of Q1 2026, none of the major AI providers — OpenAI, Google, Anthropic, Meta, or Mistral — has publicly committed to reading or acting on llms.txt in their production systems. Anthropic publishes its own llms.txt and lists it in Claude's documentation, but has not confirmed that Claude's models reference the file during conversations. OpenAI hasn't announced that ChatGPT or any of its crawlers parse the file. Google's John Mueller stated explicitly that no Google AI system currently uses llms.txt — that includes AI Overviews and Gemini.
Independent studies find no measurable citation uplift
ALLMO's research, published January 2026, analyzed 94,000+ URLs cited across ChatGPT, Claude, Perplexity, Gemini, and Grok in live web searches. The finding: no industry, no site structure, no llms.txt format produced a statistically significant uplift in citation frequency. Among the most-cited domains in their dataset, llms.txt presence was actually below the population average.
Server logs tell a more nuanced story
The picture isn't entirely flat. AI crawlers do fetch llms.txt files when present — Mintlify reported 436 visits from AI crawlers to their llms.txt within weeks of publishing it, the bulk attributed to ChatGPT-User and GPTBot. Independent observations show GPTBot occasionally fetches the file, suggesting OpenAI is at minimum aware of it. The pattern: AI tools read llms.txt perfectly when given the URL directly by a user, but proactive fetching during live searches is inconsistent across platforms.
Where it clearly does work: developer tooling
The strongest real-world use case for llms.txt isn't AI search — it's AI coding assistants. Tools like Cursor, GitHub Copilot, and Claude Code retrieve documentation in real time as developers code. Companies like Stripe, Vercel, Supabase, and Zapier have adopted llms.txt specifically because their users rely on AI coding assistants that need clean, parseable documentation. If your site is technical documentation, an API reference, or developer tooling, llms.txt has demonstrable utility today.
Honest conclusion
llms.txt is insurance, not magic. The evidence in 2026 doesn't support claims of immediate citation uplift for general content sites. It does support implementing the file as a low-cost hedge: it costs nothing to maintain, it's already a de facto standard for developer tooling, and if any major AI provider commits to it in 2026 or 2027, you're already there. Implement it with realistic expectations and you won't be disappointed.
Anatomy of a well-written llms.txt
The spec is simple, which makes it deceptively easy to get wrong. A good llms.txt does three things: identifies your site, prioritizes content, and stays within an AI's context budget. Here's a complete example for a fictional SEO consultancy:
# Marco Rossi — GEO Consulting
> Independent SEO consultancy specializing in Generative Engine Optimization for B2B SaaS companies in Italy and EU.
## About
- [About Marco](https://marcorossi.it/about): 12 years of SEO experience, GEO-focused since 2024
- [Services overview](https://marcorossi.it/services): Audit, implementation, ongoing optimization
## Guides
- [Complete GEO guide for WordPress](https://marcorossi.it/wordpress-geo-guide): 9 concrete actions with code examples
- [llms.txt explained](https://marcorossi.it/llms-txt): What it is, how to create one
- [Schema markup for AI search](https://marcorossi.it/schema-ai): Article, FAQPage, Person schema
## Case studies
- [SaaS B2B: 220 AI mentions/month](https://marcorossi.it/case-saas): 90-day GEO implementation
- [E-commerce: from invisible to top-cited](https://marcorossi.it/case-ecommerce): Schema-driven approach
## Contact
- [Get in touch](https://marcorossi.it/contact): Free 30-minute consultation
## Optional
- [Blog archive](https://marcorossi.it/blog): All posts from 2018 onward
- [Newsletter archive](https://marcorossi.it/newsletter): Weekly GEO insights
Five rules for getting it right
1. Keep it under 50 links total. The whole point is curation. A 500-link file isn't a curated index, it's a sitemap in disguise. The AIs you're trying to help have limited context windows — give them the top of the pyramid, not the whole pyramid.
2. Write descriptive titles and link descriptions. "Click here" or "Our services" tells an AI nothing about what it will find. "Services overview: audit, implementation, ongoing optimization" tells it exactly what's behind the link and helps it decide whether to fetch the page.
3. Group by category, not by date. Sections like "Guides", "Case studies", "Tools" help AIs build a mental map of what your site offers. Date-ordered lists (most-recent-first) make sense for humans browsing a blog but are noise for an AI looking for authoritative content.
4. Use the Optional section to indicate "skip if you must". If your site has a blog archive of 500 posts, listing them all kills your token budget. Instead, list the cornerstone content in the main sections, and put "Blog archive" as a single link in the Optional section.
5. Update it every quarter. An llms.txt pointing to deleted pages, deprecated services, or stale content is worse than no file at all — it signals to AIs that you don't maintain your information.
How to create one on WordPress: three approaches
WordPress doesn't generate llms.txt natively. You have three implementation paths, in order of effort.
Approach 1 — Manual static file
The simplest method. Write the file in any text editor, save it as llms.txt, upload it to your domain root via SFTP or your hosting file manager.
Steps:
Open a plain-text editor (VS Code, Sublime, even Notepad)
Write the file following the structure shown in the previous section
Save it as
llms.txt— not.md, not.txt.md, exactlyllms.txtUpload to your hosting root:
/public_html/llms.txton shared hosting, or/var/www/html/llms.txton a VPSVerify it's reachable at
https://yoursite.com/llms.txt
Best for: small sites (under 30 pages) where you publish rarely and have full FTP access.
Approach 2 — PHP filter via mu-plugin
The right answer if you're comfortable with a small amount of PHP. Create a must-use plugin that intercepts requests to /llms.txt and serves the content dynamically. This keeps the configuration in version control and survives WordPress core updates.
Create a file at /wp-content/mu-plugins/llms-txt.php:
<?php
/**
* Plugin Name: llms.txt generator
* Description: Serves a dynamic llms.txt at the domain root
*/
add_action( 'init', function() {
add_rewrite_rule( '^llms\.txt$', 'index.php?llms_txt=1', 'top' );
} );
add_filter( 'query_vars', function( $vars ) {
$vars[] = 'llms_txt';
return $vars;
} );
add_action( 'template_redirect', function() {
if ( ! get_query_var( 'llms_txt' ) ) {
return;
}
header( 'Content-Type: text/plain; charset=utf-8' );
header( 'Cache-Control: public, max-age=3600' );
$site_name = get_bloginfo( 'name' );
$site_desc = get_bloginfo( 'description' );
echo "# {$site_name}\n";
echo "> {$site_desc}\n\n";
echo "## Guides\n";
$cornerstone = new WP_Query( [
'post_type' => 'post',
'posts_per_page' => 30,
'meta_key' => '_cornerstone',
'meta_value' => '1',
] );
while ( $cornerstone->have_posts() ) {
$cornerstone->the_post();
printf(
"- [%s](%s): %s\n",
get_the_title(),
get_permalink(),
wp_strip_all_tags( get_the_excerpt() )
);
}
wp_reset_postdata();
echo "\n## Contact\n";
echo "- [Get in touch](" . home_url( '/contact/' ) . ")\n";
exit;
} );
After saving the file, visit Settings → Permalinks and click Save to flush rewrite rules. The file is now served dynamically at https://yoursite.com/llms.txt.
Best for: technical site owners and developers who maintain the site themselves.
Approach 3 — Dedicated GEO plugin (automatic)
If you'd rather not touch code, a plugin handles everything. GEO Cite 22 — full disclosure, it's the plugin we develop — generates both llms.txt and the more advanced llms-full.txt automatically based on your cornerstone content, regenerates on every save_post, and includes optional UTM tracking on every link so you can attribute AI-referred traffic in GA4. The Base tier is free on WordPress.org.
Other plugins exist that handle the basics — Website LLMs.txt (30,000+ installs) being the most popular general-purpose option. They differ mainly in how much automation and what advanced features (multi-language support, UTM tracking, AI Mention Tracker preparation) they offer.
Best for: most site owners. Honestly, this is the right answer for 80%+ of WordPress sites.
Comparison at a glance
| Criterion | Manual static file | PHP filter (mu-plugin) | GEO plugin |
|---|---|---|---|
| Setup time | 30 minutes | 1-2 hours | 2 minutes |
| Maintenance | Manual (quarterly) | Manual code edits | Automatic |
| Auto-update on new posts | No | Yes (with custom logic) | Yes |
| Version-controlled | Only if file is in git | Yes | Plugin settings only |
| Requires technical skills | Low | High (PHP, hooks) | None |
| Cost | Free | Free | Free tier available |
llms-full.txt: the variant for going all in
llms-full.txt is the longer, more aggressive cousin of llms.txt. Where llms.txt is a curated index of 20 to 50 links, llms-full.txt contains the actual full text content of every important page, concatenated into a single Markdown document.
The format:
# Site name
> Description
---
# Page 1 title
Full Markdown content of page 1...
---
# Page 2 title
Full Markdown content of page 2...
The idea: an AI fetching llms-full.txt gets your entire knowledge base in one request, with zero noise. No HTML parsing, no navigation extraction, no JavaScript execution. Pure content, ready for the model's context window.
When llms-full.txt makes sense
It works in three specific scenarios:
API and developer documentation. AI coding assistants pull docs at runtime;
llms-full.txtgives them everything they need in one fetch. Stripe, Vercel, and Supabase use this pattern.Knowledge bases and help centers. Support content is exactly what AIs want: structured, factual, self-contained. A consolidated
llms-full.txtturns your help center into a single, citable resource.Niche reference sites. If your site is the authority on a narrow topic (say, regulatory compliance for Italian medical devices),
llms-full.txtmakes it trivial for AIs to pull authoritative answers.
Three risks to know about
Duplicate content. If the Markdown files in llms-full.txt become individually indexable by Google (because you generate them as separate URLs), you've created duplicate content at scale. Solution: either keep llms-full.txt as a single concatenated file, or add noindex to any per-page Markdown versions.
Token budget overload. An llms-full.txt larger than ~500KB starts exceeding the context window of many AI tools. Past 1MB, you've made the file useless for its purpose. Keep it under 200,000 tokens (roughly 800KB of plain text) for safety.
Maintenance cost. Every content update means regenerating the file. If you don't have automation, this becomes a chore quickly. This is one of the few scenarios where a plugin (or a CI/CD pipeline) is essentially mandatory.
For most WordPress sites that aren't documentation-heavy, llms-full.txt is overkill. Start with llms.txt, and consider llms-full.txt only if you have a strong, specific use case.
Five common mistakes to avoid
After reviewing hundreds of llms.txt files in the wild, the same mistakes recur — and each one cancels much of the value of having the file at all.
1. Treating llms.txt as a sitemap. Listing 200+ URLs with no descriptions, no grouping, no prioritization. This defeats the entire purpose. The file is curation, not enumeration. If you have a sitemap, link to it from llms.txt or skip listing every page. Aim for 20 to 50 carefully chosen links.
2. Vague link descriptions. "Read more", "Click here", "Our blog" — these tell an AI nothing useful. The description after the colon is what the model uses to decide whether to fetch the page. Write it like a search snippet: specific, factual, informative. "Our blog" becomes "Blog: weekly posts on GEO, schema markup, and AI search trends in Italy and EU".
3. Letting the file go stale. Pointing to deleted pages, deprecated services, or old branding is worse than not having the file. AIs that hit a 404 from your llms.txt may downgrade trust in the entire file. Set a quarterly calendar reminder to review and update — or use a plugin that auto-regenerates on content changes.
4. Confusing llms.txt with robots.txt. They're not interchangeable. robots.txt controls who can crawl your site; llms.txt guides those who already have crawl access. Putting "User-agent" directives or "Disallow" rules in llms.txt does nothing — those directives only work in robots.txt. Conversely, listing your important pages in robots.txt with Allow rules is pointless.
5. Generating llms-full.txt without a token budget. Concatenating every page of a 5,000-post WordPress site produces a 50MB Markdown file that no AI can use. Cap llms-full.txt at 500KB to 1MB, prioritize cornerstone content, and skip ephemeral pages (news flashes, event announcements, time-limited offers).
Frequently asked questions
Does llms.txt work for small WordPress sites with few pages?
Yes, but the benefit is marginal. If your site has fewer than 20 pages total, the index function llms.txt provides is already trivially obvious from your sitemap. Implement it anyway as insurance — it costs 30 minutes — but don't expect dramatic results.
Should I use llms.txt or an XML sitemap?
Both. They serve different purposes. The XML sitemap is for search engines (Google, Bing) and lists every URL on your site. llms.txt is for AI generative tools and curates your top 20 to 50 pages with descriptions. Most sites should have both. They don't conflict, and they don't overlap functionally.
How often should I update llms.txt?
Every quarter at minimum, or whenever you publish major new content (a new pillar article, a new service page, a new case study). For active publishers, monthly review is better. Plugins that auto-regenerate on save_post handle this automatically — manual files need a calendar reminder.
Does llms.txt replace JSON-LD structured data?
No. They're complementary signals at different levels. JSON-LD lives on each page and tells AIs what that page is about (Article, FAQPage, Person, Organization). llms.txt lives at the domain root and tells AIs what your site is about and which pages matter most. Implement both for full coverage.
Will llms.txt help me rank on Google?
No. Google's John Mueller has publicly stated that no Google system — including AI Overviews, AI Mode, and Gemini — currently uses llms.txt. Implementing the file will not affect your Google rankings, your AI Overviews appearance, or your Gemini citations. It's a signal aimed at non-Google AI ecosystems.
Is llms.txt worth implementing in 2026, honestly?
Yes, with realistic expectations. Implementation cost is near-zero (30 minutes manual or 2 minutes via plugin), maintenance is trivial if automated, and the file is already a de facto standard for developer tooling. The honest expectation is "insurance against the next 18 months of AI search evolution" — not "+30% AI citations next month". Skip the hype, do it anyway.
Implementation checklist
If you're ready to implement, here's the operational checklist — copy and paste into your project manager.
llms.txt — implementation checklist
One-time setup (~30 minutes)
- [ ] Choose approach: manual file / PHP filter / plugin
- [ ] Write H1 with site name (exactly one)
- [ ] Write one-line blockquote description under H1
- [ ] Identify 20-50 cornerstone pages, group by category
- [ ] Write descriptive titles + descriptions for each link
- [ ] Add Optional section for archive/secondary content
- [ ] Verify file is reachable at yoursite.com/llms.txt
- [ ] Test parsing: ask ChatGPT/Claude to "summarize yoursite.com/llms.txt"
Quarterly review (~15 minutes)
- [ ] Check that all linked URLs return 200 (not 404)
- [ ] Update descriptions for changed services/products
- [ ] Add new cornerstone content published since last review
- [ ] Remove deprecated or low-priority links
- [ ] Verify Optional section hasn't bloated past 30 entries
When publishing major new content
- [ ] Add to llms.txt within 48 hours if it qualifies as cornerstone
- [ ] Or rely on plugin auto-regeneration if you use one
If you'd rather skip the manual maintenance entirely, GEO Cite 22 generates and maintains llms.txt automatically — free on WordPress.org for the Base tier, which covers everything described in this article. Setup time is under two minutes.
For deeper context on how llms.txt fits into the bigger GEO picture, see our pillar guide on optimizing WordPress for ChatGPT, Claude, and Perplexity.
Key takeaway: llms.txt is worth doing despite the lack of confirmed AI provider adoption. The cost is near-zero, the standard is real for developer tooling, and you're positioning for an ecosystem that's evolving fast. Implement it with honest expectations and you'll never regret it.
Frequently asked questions
What is llms.txt and what is it used for? +
llms.txt is a plain-text Markdown file placed at your domain root that provides generative AIs with a curated index of your site's most important pages. It helps AI tools navigate your content efficiently, bypassing noise like navigation menus, cookie banners, and heavy JavaScript. It was proposed by Jeremy Howard in September 2024.
Do AI systems like ChatGPT or Claude actually read llms.txt? +
As of Q1 2026, no major AI provider — OpenAI, Google, Anthropic, or Meta — has publicly confirmed reading llms.txt in production systems. Server logs show AI crawlers do fetch the file when present, but proactive use during live searches is inconsistent. Independent studies found no statistically significant uplift in AI citations from llms.txt adoption.
How do I create an llms.txt file for my WordPress site? +
You have three options: (1) manually write and upload a static llms.txt file via SFTP to your domain root; (2) create a PHP mu-plugin that serves the file dynamically; or (3) use a dedicated plugin like GEO Cite 22 or Website LLMs.txt that generates the file automatically. Manual setup takes ~30 minutes; a plugin takes ~2 minutes.
What is the difference between llms.txt and robots.txt? +
robots.txt controls which bots can crawl your site; llms.txt guides bots that already have crawl access toward your most important content. They are complementary, not alternatives. If a bot is blocked in robots.txt, it will not read your llms.txt either. Both files should coexist on your site.
Will llms.txt improve my Google rankings or AI Overviews appearance? +
No. Google's John Mueller has explicitly stated that no Google system — including AI Overviews, AI Mode, and Gemini — currently uses llms.txt. Implementing the file will not affect your Google rankings or your visibility in Google's AI-powered features. Its value lies in non-Google AI ecosystems.
What is llms-full.txt and when should I use it? +
llms-full.txt is an extended variant containing the full text of every important page concatenated into a single Markdown document. It is best suited for API documentation, developer tooling, and knowledge bases where AI coding assistants need complete content in one fetch. For most general WordPress sites, standard llms.txt is sufficient.
Sources
- llms.txt proposal by Jeremy Howard — Answer.AI
- SE Ranking: llms.txt adoption analysis across 300,000 domains
- ALLMO research: AI citation study across 94,000+ URLs (ChatGPT, Claude, Perplexity, Gemini, Grok)
- Anthropic llms.txt implementation and Claude documentation reference
- Google John Mueller on llms.txt and Google AI systems — Search Central