The best WordPress SEO plugin for database performance, measured

The SEO Framework is the best SEO plugin for database performance we measured: zero extra queries per request, no custom tables, and the only plugin that returned autoloaded options to the exact baseline when deactivated. Slim SEO and Hydrogen SEO (ours) are effectively tied behind it, both with no tables and near-zero autoload growth; Slim SEO takes second on a cleaner exit.

Database figures in our seven-plugin benchmark were byte-identical across two full runs, so unlike timings they are exact for our test site. We build Hydrogen SEO.

How we ranked them

Three database costs, all deterministic:

  • Queries per request. Each is a round trip to MySQL. On localhost they are cheap; on hosting with network-attached MySQL, a handful of extra queries adds real time to every uncached page.
  • Autoloaded options. WordPress reads every autoloaded option on every request, admin and front end, whether the page needs it or not. Our baseline was 49.8 KB.
  • Custom tables and leftovers. Tables are schema you now own through backups, migrations and uninstalls. They survive deactivation, and so can autoloaded options.

Queries rank first, then autoload growth, then what is left behind.

  1. The SEO Framework

    +8 ms front-end, +0 queries, 0 custom tables, 9 JSON-LD types

    +0 queries, alone in the field. +4.2 KB of autoloaded options, no tables, and deactivation restored exactly 49.8 KB, the baseline to the decimal. Nothing is left to clean up. See The SEO Framework alternatives.

  2. Slim SEO

    +10 ms front-end, +2 queries, 0 custom tables, 10 JSON-LD types

    +2 queries, no tables, and autoloaded options that came out 0.2 KB below baseline. Deactivation released everything. It is one query behind Hydrogen SEO on a fresh install and cleaner on the way out, which is why it takes second in a near tie.

  3. Hydrogen SEO

    +12.9 ms front-end, +1 queries, 0 custom tables, 10 JSON-LD types

    +1 query on a fresh install and +0 once settings have been saved, 0.4 KB of autoloaded options and no tables: everything lives in standard options and post meta. Deactivation left 0.2 KB autoloading. The one query exists because it primes its settings in a single read; version 0.0.14 read them one key at a time and paid 7 queries, which the benchmark caught and we fixed.

  4. SEOPress

    +24.5 ms front-end, +1 queries, 1 custom tables, 0 JSON-LD types

    +1 query, but one custom table and 3.6 KB of autoloaded options that deactivation did not reduce at all. Per request it is cheap; as a long-term guest in your database it is less tidy.

  5. Yoast SEO

    +39 ms front-end, +3 queries, 6 custom tables, 12 JSON-LD types

    +3 queries is very good for its size, and the reason is six custom indexables tables that pre-compute SEO data instead of assembling it at render time. On a very large site, that design is built to save work. The costs are 13.6 KB of autoloaded options, 2.6 KB of which stay after deactivation, and tables that remain until you uninstall.

  6. Rank Math

    +36.1 ms front-end, +16 queries, 6 custom tables, 6 JSON-LD types

    +16 queries per request, six tables (four belong to Action Scheduler) and 11.6 KB of autoloaded options, of which 11.0 KB kept loading after deactivation. See Rank Math alternatives.

  7. All in One SEO

    +53.5 ms front-end, +22 queries, 9 custom tables, 8 JSON-LD types

    The heaviest database footprint in the test: +22 queries, nine custom tables, 14.6 KB of autoloaded options, and no reduction at all when deactivated. See Rank Math vs All in One SEO.

Deactivation is not uninstallation

If you are trialling SEO plugins, what stays behind matters. A deactivated plugin's autoloaded options are still read on every request, and its tables stay in every backup. In our run, deactivating All in One SEO or SEOPress did not reduce their autoloaded footprint by a single byte, and Rank Math kept almost all of its 11.6 KB.

To check your own site, record the autoloaded total before installing and again after deactivating:

sql
SELECT ROUND(SUM(LENGTH(option_value)) / 1024, 1) AS autoload_kb
FROM   wp_options
WHERE  autoload IN ('yes', 'on', 'auto', 'auto-on');

Modern WordPress uses several autoload values, so matching only 'yes' under-reports. Then diff SHOW TABLES for new tables. A persistent object cache such as Redis narrows the query gap between plugins, because repeated reads stop reaching MySQL, but it does not remove tables. The full procedure is in our benchmark method, and if slow responses are the real problem, see reducing TTFB in WordPress.

All seven, measured

MeasuredThe SEO Framework 5.1.4Slim SEO 4.10.1Hydrogen SEO 0.0.18SEOPress 10.2Yoast SEO 28.4Rank Math 1.0.278All in One SEO 5.0.1.1
Front-end PHP time added+8 ms+10 ms+12.9 ms+24.5 ms+39 ms+36.1 ms+53.5 ms
Peak memory added+2 MB+2 MB+4.5 MB+6.5 MB+10.5 MB+8.5 MB+14.5 MB
Database queries added+0+2+1+1+3+16+22
Hooks registered+8+51+22+114+187+155+100
<head> bytes added+3,821+1,649+4,259+2,380+5,656+4,965+6,668
Meta description by defaultYesYesYesYesNoYesYes
JSON-LD types printed9101001268
Open Graph / X tags10 / 511 / 210 / 510 / 610 / 511 / 86 / 3
Sitemap URLs listed51737258755973
Sitemap image entries04040404000
lastmod coverage51 / 5150 / 7372 / 7250 / 5874 / 7559 / 5973 / 73
Custom database tables0001669
Autoloaded options added+4.2 KB-0.2 KB+0.4 KB+3.6 KB+13.6 KB+11.6 KB+14.6 KB
Plugin package size2.9 MB1.4 MB4.6 MB11.7 MB21 MB15.1 MB24.4 MB
Block editor assets25 files, 77.6 KB14 files, 187.7 KB2 files, 700.4 KB17 files, 217 KB48 files, 4,160 KB24 files, 1,792 KB130 files, 3,543 KB
After deactivationReleases everything (exact baseline)Releases everything+0.2 KB left autoloadingNo reduction at all+2.6 KB left autoloading, 6 tables remain+11.0 KB still autoloadingNo reduction: 14.5 KB still autoloading

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. Bold marks the better number in each row. Full method: how we tested.

Common questions

Which SEO plugin adds the fewest database queries?

The SEO Framework, with zero extra queries in our benchmark. Hydrogen SEO and SEOPress added one, Slim SEO two, Yoast three, Rank Math 16 and All in One SEO 22.

Are custom database tables bad?

Not automatically. Yoast's tables are why it adds only three queries. But tables are schema you maintain, and in our test every plugin's tables survived deactivation.

What are autoloaded options?

Options WordPress loads from the database on every request. The SEO plugins we tested changed that total by between -0.2 KB (Slim SEO) and +14.6 KB (All in One SEO).

Does an object cache fix plugin query counts?

It reduces how many repeated queries reach MySQL, which narrows the gap between plugins. It does not remove custom tables or shrink the autoloaded options loaded on each request.