Every few years a new file appears at the root of websites. First robots.txt, then sitemap.xml, then ads.txt. The newest candidate is llms.txt, a plain Markdown file that tells large language models what your site is about and which pages matter most.
This guide explains what the file actually does (and does not do), the format it follows, and three ways to create llms.txt in WordPress: uploading it by hand, generating it with a small code snippet, and letting a free plugin build it for you.
What is llms.txt?
llms.txt was proposed in September 2024 by Jeremy Howard of Answer.AI. The idea is simple. When an AI assistant or an answer engine tries to understand a website, it has to wade through navigation menus, cookie banners, scripts and ads. A context window is limited, so a lot of that effort is wasted. A short Markdown file at a known address gives the model a clean summary and a curated list of the pages worth reading.
Two honest points before you spend time on it:
- It is a convention, not an official standard. No standards body governs it and nobody is obliged to read it.
- No search engine has committed to using it for ranking. Google representatives have said publicly that Google Search does not rely on it. Some AI tools and developer platforms do read llms.txt, especially for documentation sites, but adoption is uneven.
So why bother? Because it costs almost nothing. It is one small text file, it cannot hurt your SEO, and if AI assistants lean on it more over time, you will already have a good one. Think of it as a low-cost experiment, part of a wider generative engine optimisation approach rather than a magic switch.
The llms.txt format
The proposal defines a loose but specific structure in Markdown:
- An H1 with the name of the site or project. This is the only required part.
- A blockquote summary, one or two sentences that say what the site is.
- Optional free text, plain paragraphs or lists with extra context (no headings).
- H2 sections containing lists of links, each in the form
- [Page name](URL): short note. - An optional section literally called
## Optional, for links a model can skip when it is short on space.
A small business example:
# Sharma Interiors
> Sharma Interiors is an interior design studio in Pune offering
> residential and office design, modular kitchens and turnkey execution.
We work across Pune and PCMC. Consultations are by appointment.
## Services
- [Residential interiors](https://example.com/residential/): full-home design and execution
- [Modular kitchens](https://example.com/modular-kitchens/): layouts, materials and pricing approach
- [Office interiors](https://example.com/office/): workspace design for small teams
## Company
- [About us](https://example.com/about/): team, experience and process
- [Contact](https://example.com/contact/): address, phone and booking form
## Optional
- [Blog](https://example.com/blog/): design ideas and case studies
Keep it short. A curated list of ten to thirty links is far more useful than an export of every URL on your site. That is what your XML sitemap is for.
What to include and what to leave out
Include:
- The pages that best explain who you are and what you offer: services, products, categories.
- Documentation, help pages or guides, if you have them. This is where llms.txt is most useful.
- Pricing, about and contact pages, so an assistant can answer "how much" and "how do I reach them".
- A few cornerstone articles that represent your expertise.
Leave out:
- Tag and date archives, author archives and search pages.
- Thin or outdated posts you would not want quoted.
- Anything you have set to noindex. Listing a page you hide from search engines sends a mixed signal.
- Login, cart, checkout and account pages.
- Private or sensitive information. The file is public; anyone can read it.
Write the notes after each link for a reader who has never heard of you. "Pricing" is vague. "Pricing: one-time and custom plans, prices in INR" is useful.
Method 1: Upload a physical file
This works on any host and needs no plugin.
- Write your llms.txt in a plain text editor (Notepad, VS Code, TextEdit in plain-text mode). Save it as
llms.txtwith UTF-8 encoding. - Open your hosting File Manager (cPanel, hPanel, Plesk) or connect by FTP/SFTP with a client such as FileZilla.
- Go to your WordPress root, the folder that contains
wp-config.phpandwp-content. It is usuallypublic_htmlorhtdocs. - Upload
llms.txtthere. - Open
https://yoursite.com/llms.txtin a browser to confirm it loads.
One thing to know: a physical file always wins. Apache and Nginx serve a real file before handing the request to WordPress, so if you later install a plugin that generates llms.txt, the plugin's version will never be seen until you delete the uploaded file. The same applies the other way round: if you switch to a plugin, remember to remove the old file.
The downside of this method is maintenance. Every time you add a service page or rename a URL, you have to edit and re-upload the file by hand.
Method 2: Serve it with a code snippet
If you are comfortable with a little PHP, you can have WordPress output the file dynamically. Add this to a site-specific plugin or a snippets plugin (not directly to a theme you might update):
add_action( 'init', function () {
add_rewrite_rule( '^llms\.txt$', 'index.php?my_llms=1', 'top' );
} );
add_filter( 'query_vars', function ( $vars ) {
$vars[] = 'my_llms';
return $vars;
} );
add_action( 'template_redirect', function () {
if ( ! get_query_var( 'my_llms' ) ) {
return;
}
header( 'Content-Type: text/plain; charset=UTF-8' );
echo '# ' . get_bloginfo( 'name' ) . "\n\n";
echo '> ' . get_bloginfo( 'description' ) . "\n\n";
echo "## Key pages\n\n";
foreach ( get_pages( array( 'number' => 15 ) ) as $page ) {
echo '- [' . get_the_title( $page ) . '](' . get_permalink( $page ) . ")\n";
}
exit;
} );
After saving, go to Settings → Permalinks and click Save Changes once. That flushes WordPress's rewrite rules so the new /llms.txt address is recognised. Without this step you will get a 404.
This version stays up to date as you add pages, but it is basic. It does not skip noindexed pages, has no way to add custom notes, and you now own a piece of code to maintain.
Method 3: Use the free llms.txt generator in Impex Rank SEO
Impex Rank SEO is a free WordPress SEO plugin with an llms.txt generator built in. It combines the two approaches above: an automatic file that keeps itself current, plus a box to write your own when you want full control.
- Install Impex Rank SEO from WordPress.org (Plugins → Add New, search "Impex Rank SEO") and activate it.
- Go to Impex Rank SEO → Tools and scroll to the llms.txt section.
- Check that Serve llms.txt is ticked. It is on by default after activation.
- Open
yoursite.com/llms.txt.
With the Custom llms.txt box left blank, the plugin generates the file for you:
- Your site title as the H1 and your tagline as the summary blockquote.
- A Key Pages section with up to 15 of your pages, in menu order. Pages you have marked noindex are skipped automatically.
- A Recent Posts section with your 20 most recent published posts, including a short excerpt where the post has one.
Because it is generated on request, it updates itself as you publish. It is served as plain text with an X-Robots-Tag: noindex header, so the file itself does not turn up as a page in search results.
Want a hand-curated file instead, like the example earlier? Paste your Markdown into Custom llms.txt. It overrides the automatic version completely. Many sites start with the automatic file and switch to a custom one once they know which pages they want to feature.
Two tips:
- Delete any old uploaded llms.txt first, for the reason explained in Method 1.
- Add excerpts to important posts. The generator uses them as link notes, so a good excerpt makes a more useful manifest.
For a closer look at the feature, see the llms.txt generator page.
How to test your llms.txt
A quick check takes a minute:
- Browser: open
https://yoursite.com/llms.txt. You should see plain text, not your theme's 404 page. - Command line: run
curl -I https://yoursite.com/llms.txtand look forHTTP/2 200(or200 OK) andcontent-type: text/plain. - Links: click a few of the URLs in the file to be sure none point at deleted or redirected pages.
- Cache: if you edited the file and still see the old version, purge your caching plugin and CDN.
- Security rules: some firewalls block unfamiliar
.txtpaths. If you get a 403, check your security plugin or host's WAF.
llms.txt is not robots.txt
People often confuse the two, so it is worth saying plainly. robots.txt tells crawlers what they may and may not fetch. llms.txt suggests what they might want to read. llms.txt cannot block anything. If you want to stop specific AI crawlers from using your content, write rules for user agents such as GPTBot or ClaudeBot in robots.txt. Impex Rank SEO's Tools screen has a robots.txt editor for exactly that, right above the llms.txt section.
Frequently asked questions
Does llms.txt improve my Google rankings?
No. llms.txt is a proposed convention for AI tools, not a ranking signal. Google has not said it uses the file for Search. Treat it as a cheap, low-risk experiment, not an SEO tactic.
Where should llms.txt live on a WordPress site?
At the root of your domain, so it opens at yoursite.com/llms.txt. Either upload a physical file to the folder that holds wp-config.php, or let a plugin serve it through WordPress.
Should I put every page of my site in llms.txt?
No. The point is a short, curated map. List the pages that best explain what you do: key service or product pages, documentation, pricing, about and contact. Leave out tag archives, thin posts and anything you have set to noindex.
Can I use llms.txt to stop AI bots from using my content?
No. llms.txt is a map, not an access control. To ask crawlers such as GPTBot or ClaudeBot to stay away, use rules in robots.txt instead.
Is the llms.txt generator in Impex Rank SEO free?
Yes. The llms.txt generator is part of the free Impex Rank SEO plugin on WordPress.org, with no usage limit. You can serve an auto-generated file or paste your own Markdown.
Add llms.txt to your site in two minutes. Install Impex Rank SEO free from WordPress.org, and your llms.txt is live straight away (check Serve llms.txt under Tools if you want to confirm or customise it). While you are there, look at the rest of the free features: schema, sitemaps, redirects, IndexNow and a live content analyser, all in one plugin.