Why Is My WordPress Site Slow? It Could Be Your Old Plugins (Not Your Host)

Before you start — is this your problem?

  • Your site used to feel fast and now takes 3-5 seconds to load
  • It’s slow on every page, not just specific ones
  • You’ve upgraded hosting and nothing changed

If all three are true, keep reading. If not, check your images, CDN, or caching plugin first — this won’t help.

A slow WordPress site is rarely a hosting problem. It’s almost always a database carrying years of leftover plugin data on every single page load — and that’s fixable in an afternoon without touching your hosting plan.

The real culprit: autoloaded options

Every setting a plugin saves goes into the wp_options table. By default, those values are marked autoload = 'yes' — WordPress loads them into memory on every page view forever, whether the current page uses them or not.

On a fresh install this table holds a few kilobytes. After a year with a typical plugin stack, several megabytes is normal. Over 10MB happens more often than you’d think. That’s the database equivalent of loading an entire ebook into memory just to render a blog post.

Step 1: Measure it

Install Query Monitor (free) and check its Autoloaded Options panel. If you prefer SQL, run this in phpMyAdmin:

SELECT option_name, ROUND(LENGTH(option_value)/1024, 2) AS size_kb
FROM wp_options
WHERE autoload IN ('yes','on')
ORDER BY LENGTH(option_value) DESC
LIMIT 30;

Benchmark: under 800KB is healthy. Above 2-3MB you have a problem. Above 5MB, this is likely your main bottleneck.

Step 2: Identify what’s safe and what’s junk

The option name tells you which plugin created it — elementor_settings, wpforms_options, etc. If the plugin is still active, leave it alone. If it’s deactivated, that row is dead weight.

A few common cases:

  • rewrite_rules — can hit 500KB on WooCommerce sites. Leave it; it regenerates on its own.
  • _site_transient_update_* — update caches. Safe to delete.
  • cron — the scheduled tasks array. If bloated, deregister the cron jobs instead of deleting the row.
  • Anything named after a plugin you deactivated years ago — that’s pure garbage. Delete it.

Step 3: Clean it up

Back up your database first. Then, for each orphaned option you identified:

DELETE FROM wp_options WHERE option_name = 'that_old_plugin_settings';

If SQL isn’t comfortable, Advanced Database Cleaner or WP-Optimize both provide a UI that finds orphaned options for one-click removal. Re-run the Step 1 query after cleanup — the drop is usually immediate and noticeable.

Step 4: Make it a habit

Bloat accumulates from every plugin install, theme switch, and abandoned test you’ve run. The fix that holds:

  • Delete expired transients weekly (WP-Optimize automates this)
  • Review the autoload report monthly
  • Fully delete unused plugins — deactivating alone leaves their options behind

The bottom line

An hour with Query Monitor and a cleanup plugin will tell you exactly how much weight your database is carrying. In most cases, removing it costs nothing and the improvement is immediate and noticeable.

Want us to take a look at yours?
If you’d rather not dig through wp_options yourself, send us your site and we’ll run the audit for you — free autoload report, no commitment.

Contact us for a free autoload audit