---
title: "llms.txt WordPress Plugins: Yoast vs Rank Math vs AIOSEO"
description: "We tested Yoast, Rank Math and AIOSEO on identical WordPress sites and compared what each writes to llms.txt, from caps to freshness."
date: 2026-09-26
tags: [llms-txt, wordpress, aeo, ai-search]
---

# llms.txt WordPress Plugins: Yoast vs Rank Math vs AIOSEO

llms.txt is a plain Markdown file at a site's root that gives AI systems a curated list of pages instead of raw HTML. We installed Yoast SEO 28.5, Rank Math 1.0.279 and All in One SEO (AIOSEO) 5.0.2, free tier only, on identical WordPress sites and compared what each plugin actually writes to /llms.txt.

## TL;DR

- Yoast, Rank Math and AIOSEO all generate llms.txt for free, but the files they produce are not interchangeable.
- Yoast and AIOSEO follow the spec's section order (BOM, H1, then content); Rank Math's credit line comes before its H1.
- Rank Math and AIOSEO list the same posts and pages, but AIOSEO also lists every category and tag with descriptions.
- AIOSEO is the only one of the three that carries a post's real meta description into the file; its freshness depends on WP-cron.
- Yoast writes the file only when the toggle is switched on or its settings change; otherwise it updates once a week, and hard-caps each post type at five links.

| If you need... | Pick |
|---|---|
| The freshest file right after publishing | Rank Math |
| Your actual meta descriptions in the file | AIOSEO |
| Zero new setup on a site already running Yoast | Yoast, with its limits in mind |
| The spec's own section order out of the box | Yoast or AIOSEO (Rank Math's credit line comes before the H1) |

## How I Tested

I installed [Yoast SEO 28.5](https://wordpress.org/plugins/wordpress-seo/), [Rank Math 1.0.279](https://wordpress.org/plugins/seo-by-rank-math/) and [AIOSEO 5.0.2](https://wordpress.org/plugins/all-in-one-seo-pack/), free tier only, on separate WordPress Playground CLI instances, PHP 8.3, current WordPress. Each plugin got one fresh instance, so no settings or database rows could leak between tests.

Every instance got the same fixture: a bakery site with 12 posts. Eight were published within the last year, two were dated 2024-05-10 and 2025-03-01, one was password-protected, and one was a draft. The fixture also included three custom pages and two categories, one with a description and one without.

Content and permalinks existed before I activated each plugin, matching real installs. I set each plugin's own SEO meta description and cornerstone or pillar flag identically before generating any file.

Free tier only: that's what most WordPress sites run, and the differences below are what an owner meets before any paywall.

Disclosure: I sell [Yoast Video SEO Booster](/plugins/yoast-video-seo-booster) and [other WordPress plugins](/plugins). I don't sell an llms.txt generator, and nothing below changes based on which of these three toggles you flip.

## What Each Plugin Actually Generated

Reading a comparison table is one thing; reading the actual file is another. Below are real fragments from each plugin's output, with only the test host's address swapped for example.com. Nothing else changed, including punctuation and escaping.

### Yoast SEO 28.5

Yoast opens with the H1 the specification requires, right after the file's byte-order mark (BOM), a [three-byte UTF-8 signature](https://www.w3.org/International/questions/qa-byte-order-mark) some parsers use to detect encoding. Then comes a plain credit paragraph instead of the specification's optional blockquote:

```markdown title="llms.txt from Yoast SEO 28.5"
# Harbor Bakery: Sourdough, rye and pastry from a small bakery in Porto

Generated by Yoast SEO v28.5, this is an llms.txt file, meant for consumption by LLMs.

## Pages
...

## Posts
- [The Classic Baguette: Our Most Read Recipe](https://example.com/old-01-evergreen-baguette/)
- [Hello world\!](https://example.com/hello-world/)
- [How to Keep a Sourdough Starter Alive](https://example.com/recent-01-sourdough-starter/): Feeding ratios and temperatures that keep a starter active for years\.
...
```

Yoast escapes Markdown punctuation, so a period or exclamation mark next to a link renders as `\.` or `\!`. The 2024 baguette post leads only because it is flagged cornerstone. Five posts per type is a hard-coded limit.

### Rank Math 1.0.279

Rank Math's file opens with its own credit line before anything else, then the H1, reversing the order the specification requires:

```markdown title="llms.txt from Rank Math 1.0.279"
Generated by Rank Math SEO, this is an llms.txt file designed to help LLMs better understand and index this website.

# My WordPress Website

...

## Pages
- [Wholesale](https://example.com/wholesale/): Bread for cafes and restaurants.
- [Contact](https://example.com/contact/): Rua das Flores 12, Porto.
...
```

That H1, "My WordPress Website," is not a typo. Rank Math stores the site's name into its Knowledge Graph setting (`titles.knowledgegraph_name`) at install and never refreshes it. The site still had the title our test environment starts with when we activated Rank Math; we renamed the site to "Harbor Bakery" afterward, and the stale name still shipped. The page descriptions above are each page's first paragraph, not Rank Math's own meta description field, which our test post carried but went unused.

### AIOSEO 5.0.2

AIOSEO opens the way the specification expects, H1 first, but spends the blockquote underneath it on a plugin credit rather than a site summary:

```markdown title="llms.txt from AIOSEO 5.0.2"
# Harbor Bakery

> Generated by All in One SEO v5.0.2, this is an llms.txt file, used by LLMs to index the site.

Sourdough, rye and pastry from a small bakery in Porto

...

## Posts

- [Croissant Lamination Without a Sheeter](https://example.com/recent-03-croissant-lamination/): SEO-META: lamination at home with a rolling pin and a fridge.
...
```

That last line is AIOSEO's clear edge over the other two: the description came from the post's own SEO meta description field, visible here by its "SEO-META:" prefix left over from our test setup, not a generated excerpt. Neither Yoast nor Rank Math pulled that field.

## Yoast vs. Rank Math vs. AIOSEO Compared

Most of what's below comes from generating the file on the fixture site; the link caps (100, 1000) and each plugin's off-by-default state come from its source, since our fixture never had enough posts to hit those caps. Where a default is also easy to confirm in a plugin's published documentation, like Yoast's twelve-month window and weekly schedule, we cross-checked it against [Yoast's own functional specification](https://developer.yoast.com/features/llms-txt/functional-specification/).

| Aspect | Yoast 28.5 | Rank Math 1.0.279 | AIOSEO 5.0.2 |
|---|---|---|---|
| On by default | No | No (module off) | No |
| How it's served | Physical file, written by PHP | Dynamic, via a rewrite rule | Physical file, written by PHP |
| First bytes | UTF-8 BOM, then H1 | Credit line, no BOM | UTF-8 BOM, then H1 |
| H1 position | First, right after the BOM | After the credit line | First, right after the BOM |
| H1 text | Site name plus tagline | Stale Knowledge Graph name from install | Site title, editable |
| Summary blockquote | Plain credit paragraph, not a blockquote | Empty unless a "summary" setting is filled in | Holds the plugin credit; tagline sits in a paragraph below |
| Default links per post type | 5, hard-coded | 100 | 1000 |
| Which posts qualify | Cornerstone, then newest edit; over 12 months old dropped unless cornerstone | All published, newest first | All published |
| Taxonomies included | Categories and tags, no descriptions | None | All public, with term descriptions |
| Link description source | Manual excerpt only; own meta description ignored | Excerpt, or the whole first paragraph, untrimmed | Own SEO meta description, else body text cut at 55 words |
| Noindex, password or draft posts | Excluded | Excluded | Excluded |
| Markdown escaping | Backslash-escapes punctuation | None; raw brackets pass through | None, raw |
| Sitemap link | Under "Optional" | Under "Sitemaps" | Under "Sitemaps" |
| Free-tier llms-full.txt | No, redirects to HTML | No, 404 | No, redirects to HTML |

Rank Math's default cap is twenty times Yoast's hard-coded five; AIOSEO's is ten times Rank Math's and two hundred times Yoast's. On a site with over five posts per type, that gap decides how much of the catalog an agent sees.

## When Does a New Post Show Up in llms.txt?

Publish speed varies once you look past the settings screen. We published a new post on each test site, then requested /llms.txt right after.

Rank Math's file is built on every request, so the new post appeared immediately: no cache, no queue.

AIOSEO schedules the update instead of writing it in real time. In the source of AIOSEO 5.0.2, publishing a post queues a regeneration job 10 seconds out through Action Scheduler, plus a recurring daily job (file `Llms.php`). Whether that job fires on schedule depends on WP-cron, which WordPress triggers on incoming traffic rather than a fixed clock, so a quiet site can wait well past 10 seconds. Playground never drains that queue itself; only after we manually ran it, the same step WP-cron performs live, did the new post appear, with the next daily run queued 24 hours out.

Yoast does not react to publishing at all. The physical file is written once when the toggle is switched on; after that, only a weekly cron job touches it again, unless the llms.txt selection settings change. We confirmed the new post stayed absent right after publishing and after simulated traffic. On a site that posts daily, Yoast's file can run up to seven days behind.

## Three Setup Traps I Reproduced

1. **Rank Math's module never loads until the setup wizard is finished or skipped.** In the source of Rank Math 1.0.279, an unresolved registration check blocks the module manager from being created, so /llms.txt 404s even with the toggle on. Clicking Skip in the wizard clears the block, and the toggle then works.
2. **Yoast can write empty links after a permalink change.** On one instance, changing the permalink structure and regenerating the file before running Yoast's "SEO data optimization" step turned every post and page link into an empty `[Title]()`. No URL appeared between the parentheses. Per the plugin's source, changing permalinks nulls the stored permalink data llms.txt reads from; the optimization step rebuilds it. Because Yoast only regenerates weekly on its own, a broken file can sit empty for up to a week if nobody notices.
3. **A stray physical file can likely outrank a plugin's own route.** Yoast and AIOSEO both need a writable site root, and Yoast refuses to overwrite an llms.txt it did not create. The reverse case, a leftover static llms.txt shadowing Rank Math's dynamic rewrite rule, is one we infer from how the two mechanisms resolve the same URL, not one we reproduced end to end.

## Which llms.txt Plugin Should You Use?

If Yoast is already running your site, turning the toggle on costs nothing. Know the defaults: five links per post type, anything older than a year dropped unless cornerstone, and a weekly catch-up at best. That's workable for a small site that rarely publishes, not for a large catalog or frequent posts.

If Rank Math is running, finish or skip its setup wizard first, or the endpoint 404s regardless of the toggle. Once it works, the whole catalog rebuilds on every request, at the cost of a credit line before the H1, breaking the file's reading order.

If AIOSEO is already running, it is the only one of the three that carries an actual meta description into the file instead of an excerpt. Its default cap is also the highest of the three. The tradeoff: freshness rides on WP-cron, and the summary blockquote goes to a plugin credit instead of a site description.

For a large archive, AIOSEO's default cap (1000) beats Rank Math's (100) and adds every taxonomy; Rank Math's cap is a configurable default, not a hard limit. For frequent publishing, Rank Math's per-request rebuild keeps the file current without waiting on WP-cron. For a small site where the free toggle is the whole ask, any of them clears that bar once its trap is handled.

## Does llms.txt Actually Work?

Short answer: it is a low-cost bet with an unproven payoff, and those two halves do not contradict each other.

The [llms.txt specification](https://llmstxt.org) explains the problem it targets directly: "Context windows, while larger than they were, are still too small for most websites in their entirety, and every wasted token costs time and money." The same page notes that OpenAI, Anthropic and Google Gemini each publish an llms.txt for their own developer documentation. That confirms AI labs back the format for their own docs, not that their crawlers read a bakery's llms.txt the same way.

What we can point to is our own data. According to our [AEO Adoption Scan](/aeo/research-2026) from August 2026, 49 of 93 ranking pages across 78 domains, 52.7%, served an llms.txt file. That's a correlation inside one narrow, self-selected topic area, seven AEO- and GEO-related search queries, on one day, in one market. It shows AI-visibility-focused sites tend to ship the file. It does not show that shipping the file is why they rank or get cited. We also did not test whether llms.txt changed citations in any chat assistant for any of the three plugins.

Given the setup cost, a free toggle, this is a reasonable low-effort addition. Which plugin hands you a spec-compliant, current file afterward is a separate question the toggle alone doesn't answer.

## How Do You Check Your llms.txt File?

The fastest check needs no plugin: open yoursite.com/llms.txt in a browser. A working file loads as plain text starting with an H1, not a 404 page and not a redirect to HTML; a redirect usually means that tier doesn't generate the file, which is what happened with Yoast's and AIOSEO's llms-full.txt in our test.

From there, compare what loads against the specification's order: byte-order mark, H1, then an optional blockquote, before any other content. My [AEO Checker extension](/extensions/aeo-checker) automates part of that: one check confirms /llms.txt answers 200 with a text/plain or text/markdown content type, among other AI-readiness signals.

If the file 404s while a toggle says it's on, check the plugin's setup requirements first, Rank Math's registration wizard especially, before assuming it's broken.

## FAQ

### What is an llms.txt file for?

llms.txt is a plain Markdown file placed at a site's root that gives AI systems a curated list of pages instead of raw HTML to parse. Its specification frames the problem this way: "context windows... are still too small for most websites in their entirety, and every wasted token costs time and money." It's a voluntary convention, not a rule enforced by any search engine or AI vendor.

### How to add llms.txt to WordPress?

On a site already running Yoast, Rank Math or AIOSEO, it's a single setting, not a new plugin. Yoast's and AIOSEO's toggles sit in their own SEO settings; Rank Math's needs its setup wizard finished or skipped first, or the endpoint 404s. Visiting yoursite.com/llms.txt afterward confirms it worked.

### How can I create an llms.txt file for a website?

Two ways: use a plugin if the CMS has one, or hand-write a Markdown file and upload it to the site's root as /llms.txt. Follow the specification's order: an H1 first, then an optional blockquote, then any other sections. On a Next.js site, [I added one in about 15 minutes](/blog/how-i-added-llms-txt-to-my-nextjs-blog-in-15-minutes), no plugin needed.

### Where to submit an llms.txt file?

Nowhere. The specification defines no submission process. The file sits at a conventional URL, the site's root, the same way [robots.txt](https://developers.google.com/search/docs/crawling-indexing/robots/create-robots-txt) does; any AI system looking for it fetches it directly, not through a registry. A few directories list llms.txt files voluntarily, but that's not part of the spec and isn't confirmed to affect whether AI systems read your file.

### Are llms.txt files worth it?

For a WordPress site already running one of these three plugins, yes. Flipping the toggle costs nothing, as long as you confirm the file actually loads. Whether it's worth chasing beyond that is separate. Our own scan found 52.7% of pages ranking for AEO and GEO related queries served the file, a correlation from one topic and one day, not proof the file moved rankings or citations.

## Sources

- [llms.txt specification](https://llmstxt.org) — the section order, including the optional byte-order mark and the optional summary blockquote
- [Yoast SEO: llms.txt functional specification](https://developer.yoast.com/features/llms-txt/functional-specification/) — five latest posts per type, the 12-month window, cornerstone priority and the weekly update
- [Yoast SEO](https://wordpress.org/plugins/wordpress-seo/), [Rank Math](https://wordpress.org/plugins/seo-by-rank-math/) and [All in One SEO](https://wordpress.org/plugins/all-in-one-seo-pack/) on wordpress.org — the free versions tested: 28.5, 1.0.279 and 5.0.2
- [W3C: the byte-order mark in HTML](https://www.w3.org/International/questions/qa-byte-order-mark) — what the three bytes at the start of Yoast's and AIOSEO's files are
- [Google Search Central: create a robots.txt file](https://developers.google.com/search/docs/crawling-indexing/robots/create-robots-txt) — the root-URL convention llms.txt borrows
- [AEO Adoption Scan 2026](/aeo/research-2026) — the 49 of 93 ranking pages that served an llms.txt file

Part of the [Answer Engine Optimization](/aeo) cluster, with the full reading order in dependency sequence, plus a [glossary](/aeo/glossary) of every term used across these articles.

---

**Running one of these plugins on a site you manage?**

Follow me on [LinkedIn](https://linkedin.com/in/alexturik) to keep up with the technical side of optimization for AI. If your WordPress site needs an AI-visibility audit or a clean llms.txt setup, [get in touch](mailto:alexturik@gmail.com) directly.
