The best WordPress SEO plugin for schema markup, measured
Yoast SEO prints the richest schema graph of the seven plugins we measured: 12 JSON-LD types on a standard post at defaults, in 3,976 bytes. Hydrogen SEO (ours) is second with 10 types in 2,071 bytes, the most efficient complete graph in the test, and Slim SEO matches its 10 types at nearly twice the size. SEOPress free printed none.
The measurements come from our seven-plugin benchmark, one plugin at a time on WordPress 7.1, free versions at defaults. We build Hydrogen SEO, and we ranked it below Yoast because Yoast's graph describes more of the page.
How we ranked them
We counted what each plugin put in the page on one standard post with a featured image, two taxonomies and internal links, with no schema settings touched:
- JSON-LD types: how many distinct schema.org types the default graph contains. More types usually means more of the page is described: the article, its author, the site, the publisher, breadcrumbs, images.
- JSON-LD bytes: how large that graph is. Two graphs with similar coverage can differ by 2x in size.
Types decide the rank; bytes break ties. We did not measure which types each plugin lets you add by hand, so this ranks the default graph, not the ceiling. Run your own pages through the JSON-LD validator and Google's test, as the rich results guide shows.
Yoast SEO
Measured on 28.4: +39 ms front-end, +3 queries, 12 JSON-LD types, 6 custom tables
12 types in 3,976 bytes, the most complete default graph we measured, and the benchmark's "richest schema graph" winner. Yoast's indexables tables store the data behind it, which is part of why it stays at +3 queries. You pay elsewhere: +39.0 ms, six custom tables and 4,160 KB of editor assets. See Yoast SEO alternatives.
Hydrogen SEO
Measured on 0.0.18: +12.9 ms front-end, +1 queries, 10 JSON-LD types, custom tables in 0.0.31: 1 (2 with the 404 Monitor on)
10 types in 2,071 bytes, the benchmark's "most efficient schema": roughly half Yoast's bytes for a comparable graph. Beyond the default graph you can add Article, Product, FAQ, HowTo, Recipe, Course, Event and Local Business per page or site-wide, with smart tags in every field, plus an optional AI draft you review before saving (free account and credits needed). Beta software.
Slim SEO
Measured on 4.10.1: +10 ms front-end, +2 queries, 10 JSON-LD types, 0 custom tables
10 types, the same count as Hydrogen SEO, in 3,828 bytes, with nothing to configure. If you want a full default graph and no schema settings to think about, it is the simplest route, for +10.0 ms. See Hydrogen SEO vs Slim SEO.
The SEO Framework
Measured on 5.1.4: +8 ms front-end, +0 queries, 9 JSON-LD types, 0 custom tables
9 types in 1,881 bytes, the smallest graph of any plugin that printed a full one, from the plugin with the lowest server cost in the field. One type fewer than Hydrogen SEO and Slim SEO, and enough for most blogs. The trade-off with The SEO Framework is fewer built-in extras overall, some of which arrive through extensions.
All in One SEO
Measured on 5.0.1.1: +53.5 ms front-end, +22 queries, 8 JSON-LD types, 9 custom tables
8 types in 4,544 bytes: the largest graph by size and the least efficient, with fewer types than four other plugins in more bytes than any of them. It is a complete, valid starting point from the plugin that costs the most to run (+53.5 ms, +22 queries).
Rank Math
Measured on 1.0.278: +36.1 ms front-end, +16 queries, 6 JSON-LD types, 6 custom tables
6 types in 2,665 bytes at defaults. Complete and valid, but it covers less of the page than five of the others. Rank Math is known for extensive schema options, so its ceiling is higher than its default; our test measured only the default. Remember it prints nothing at all until its setup wizard is finished or skipped.
SEOPress
Measured on 10.2: +24.5 ms front-end, +1 queries, 0 JSON-LD types, 1 custom tables
No JSON-LD at all on a standard post in the free version at defaults, the largest single output gap in the benchmark. Its meta and social tags are solid; for schema you need its paid version or a separate tool.
More types, or fewer bytes?
A bigger graph is not automatically better. Google uses structured data to understand a page and to decide eligibility for rich results, and it checks whether the markup matches what is visible. Types that describe the page accurately help; extra bytes do not. On a typical post the core graph (article, author, site, publisher, breadcrumbs) is what matters, and all six plugins that printed schema covered a version of it.
The bigger differences come from the page-specific types you add yourself: a Product on a product page, a Recipe on a recipe, FAQ on a genuine question-and-answer section. Those depend on your content, not on defaults. Google no longer shows FAQ or HowTo rich results at all, so treat those types as description rather than a route to a display. Our guide to adding schema markup to WordPress covers which types belong where, and the schema types reference lists what Hydrogen SEO supports.
All seven, measured
| Measured | Yoast SEO 28.4 | Hydrogen SEO 0.0.18 | Slim SEO 4.10.1 | The SEO Framework 5.1.4 | All in One SEO 5.0.1.1 | Rank Math 1.0.278 | SEOPress 10.2 |
|---|---|---|---|---|---|---|---|
| Front-end PHP time added | +39 ms | +12.9 ms | +10 ms | +8 ms | +53.5 ms | +36.1 ms | +24.5 ms |
| Peak memory added | +10.5 MB | +4.5 MB | +2 MB | +2 MB | +14.5 MB | +8.5 MB | +6.5 MB |
| Database queries added | +3 | +1 | +2 | +0 | +22 | +16 | +1 |
| Hooks registered | +187 | +22 | +51 | +8 | +100 | +155 | +114 |
<head> bytes added | +5,656 | +4,259 | +1,649 | +3,821 | +6,668 | +4,965 | +2,380 |
| Meta description by default | No | Yes | Yes | Yes | Yes | Yes | Yes |
| JSON-LD types printed | 12 | 10 | 10 | 9 | 8 | 6 | 0 |
| Open Graph / X tags | 10 / 5 | 10 / 5 | 11 / 2 | 10 / 5 | 6 / 3 | 11 / 8 | 10 / 6 |
| Sitemap URLs listed | 75 | 72 | 73 | 51 | 73 | 59 | 58 |
| Sitemap image entries | 40 | 40 | 40 | 0 | 0 | 0 | 40 |
lastmod coverage | 74 / 75 | 72 / 72 | 50 / 73 | 51 / 51 | 73 / 73 | 59 / 59 | 50 / 58 |
| Custom database tables | 6 | 1 (2 with the 404 Monitor on) | 0 | 0 | 9 | 6 | 1 |
| Autoloaded options added | +13.6 KB | +0.4 KB | -0.2 KB | +4.2 KB | +14.6 KB | +11.6 KB | +3.6 KB |
| Plugin package size | 21 MB | 4.6 MB | 1.4 MB | 2.9 MB | 24.4 MB | 15.1 MB | 11.7 MB |
| Block editor assets | 48 files, 4,160 KB | 2 files, 700.4 KB | 14 files, 187.7 KB | 25 files, 77.6 KB | 130 files, 3,543 KB | 24 files, 1,792 KB | 17 files, 217 KB |
| After deactivation | +2.6 KB left autoloading, 6 tables remain | +0.2 KB left autoloading | Releases everything | Releases everything (exact baseline) | No reduction: 14.5 KB still autoloading | +11.0 KB still autoloading | No reduction at all |
Measured on one WordPress 7.1 install (PHP 8.2, MySQL 8.0, Twenty Twenty-Five, 40 posts), each plugin alone with default settings, against a no-plugin baseline. Each column heading names the version that was measured. Bold marks the better number in each row. Full method: how we tested.
Hydrogen SEO's figures were measured on 0.0.18 and have not been re-run on later versions. The custom tables row is the exception: it is counted from the 0.0.31 source. A default install has one table, for the internal link counter. Switching on the 404 Monitor, which is off by default, creates a second for its log. Deleting the plugin removes both.
Features: free, paid or not offered
| Feature | Yoast SEO 28.8 | Hydrogen SEO 0.0.31 | Slim SEO 4.11.5 | The SEO Framework 5.2.1 | All in One SEO 5.0.5 | Rank Math 1.0.282 | SEOPress 10.4 |
|---|---|---|---|---|---|---|---|
| Search engine verification codes | Free | Free | — | Free | Free | Free | Free |
| IndexNow instant indexing | Paid | Free | — | — | Paid | Free | Free |
| Redirect manager | Paid | Free | Free | — | Paid | Free | Paid |
| 404 monitor | — | Free | Free | No | Paid | Free | Paid |
| SEO column on the Posts screen | Free | Free | Free | Free | Free | Free | Free |
| SEO fields in Quick Edit | — | Free | Free | Free | — | Paid | Free |
| Attachment page redirects | Free | Free | Free | — | Free | Free | Free |
| Author and date archive controls | Free | Free | — | Free | Free | Free | Free |
| RSS feed text | Free | Free | — | — | Free | Free | — |
| max-snippet and preview controls | — | Free | — | Free | Free | Free | — |
| Primary category | Free | Free | Free | Free | Paid | Free | Free |
| Internal link counts on the Posts screen | Free | Free | — | — | — | Free | Free |
| Automatic image alt attributes | — | Free | Free | — | Paid | Free | Free |
| Table of contents block | Paid | Free | — | — | Free | Free | — |
| HTML sitemap | — | Free | — | — | Free | Free | Free |
| Pillar or cornerstone content flag | Free | Free | — | — | Paid | Free | — |
| Crawl cleanup switches | Free | Free | — | — | — | — | Free |
| Video sitemap | Paid | Free | — | — | Paid | Paid | Paid |
| Google News sitemap | Paid | Free | Free | — | Paid | Paid | Paid |
| llms.txt | Free | Free | — | — | Free | Free | Paid |
This table is not benchmark data. It is based on each plugin's WordPress.org listing, the code of its free version there, and its official documentation and pricing pages, checked on 12 November 2026, for the version in each column heading. Free means the feature is in the plugin's own free version. Paid means it needs that plugin's paid version or a paid add-on. No means the plugin's listing says it does not offer it. A dash means we could not confirm it either way; it does not mean the feature is missing. A row says a feature exists, not how complete it is. Plugins change, so check the plugin's own site before relying on a cell. If a cell is wrong, tell us and we will correct it.
Common questions
Which WordPress SEO plugin has the best schema?
Yoast SEO printed the richest default graph in our benchmark: 12 JSON-LD types. Hydrogen SEO printed 10 types in 2,071 bytes, about half Yoast's size.
Does SEOPress free add schema markup?
Not at default settings. On a standard post the free version printed no JSON-LD at all in our test.
Is a bigger schema graph better for SEO?
Not by itself. Accurate types that match the visible page matter; byte count does not. Validate the output rather than counting it.
Can Hydrogen SEO write schema with AI?
Yes, as an optional feature. You describe the page, the AI drafts the fields, and you review them before saving. It needs a free hydrogenseo.com account and uses credits.