Blog / Speed

Speed 6 min read

Why wp-admin is slow when the front end is fine, and how to fix it

The site loads fast for visitors but the dashboard takes eight seconds and saving a post feels like dial-up. That gap has a short list of causes, none of which a caching plugin can reach. Here they are, with the check for each.

Bishoy AwadFounder, RoundBorders · WordPress since 2012
In this post
  1. Find out what’s slow first
  2. Autoloaded options
  3. Heartbeat and Cron
  4. Plugins that phone home
  5. The admin screens themselves
  6. PHP workers and the host

A slow dashboard is a different problem from a slow site, and it fools people because the usual fixes don’t apply. Page caching serves visitors a saved copy; it never serves you, because you’re logged in. So the front end can be quick while wp-admin runs every plugin, every query, and every background job on every click. The good news: the list of causes is short, and each has a one-minute check.

Step 01 Find out what’s slow first

Install Query Monitor (temporarily), open the dashboard, and read the top bar: total time, number of queries, and the slowest component. In two minutes it tells you whether you’re waiting on the database, on a plugin, or on an outside server. If the admin bar shows 400 queries and 6 seconds, keep reading. If it shows 60 queries and 0.4 seconds but the page still feels slow, the wait is in the browser: a plugin’s admin JavaScript, or a page builder loading its whole editor on every screen.

Step 02 Autoloaded options

The most common one. WordPress loads every wp_options row marked autoload = yes on every request, including admin ones. Years of plugins leave megabytes behind.

SELECT option_name, LENGTH(option_value) / 1024 AS kb
FROM wp_options WHERE autoload = 'yes'
ORDER BY kb DESC LIMIT 20;

If the top rows belong to plugins you removed years ago, set their autoload to no or delete them. If the total is over 2 MB, this alone is a visible improvement. (The same check is step 04 of the TTFB post; it hurts admin more because admin is never cached.)

Dashboard snappy now?

Stop here. Add "clear expired transients" to your monthly routine.

Still crawling?

Step 03.

Step 03 Heartbeat and Cron

Two background workers run inside wp-admin. Heartbeat pings the server every 15 seconds while a post editor is open (autosave, post locking). On a slow server with several editors open, those pings queue up and everything waits. Reduce it to 60 seconds, or disable it outside the editor; most performance plugins have the switch.

WP-Cron is worse: it runs scheduled jobs (backups, email queues, WooCommerce’s Action Scheduler) during a real request, so the visitor or admin who happens to trigger it waits for the job. Move it to a real server cron: add define( 'DISABLE_WP_CRON', true ); to wp-config.php and have the host call wp-cron.php every five minutes. Every managed host documents this.

Step 04 Plugins that phone home

Some plugins check a licence, fetch news for their dashboard widget, or call an analytics API when an admin page loads. If that remote server is slow, your dashboard waits for it. Query Monitor’s “HTTP API Calls” panel lists them with timings. The fix is a setting (disable the news widget), a replacement, or, in one memorable case, an entire plugin whose only slow part was a wp_remote_get to a server that had been switched off two years earlier.

Step 05 The admin screens themselves

Dashboard widgets from every plugin, a WooCommerce orders list with 200 rows per page, an admin theme, a page builder that loads its editor on screens that don’t need it. Screen Options (top right) hides widgets and reduces rows per page; both change what loads. And check the object cache: without Redis or Memcached, every admin screen re-runs the same queries WordPress could have remembered.

Step 06 PHP workers and the host

If the site is busy, wp-admin competes with visitors for the same PHP workers, and on cheap plans there are two. Uncached front-end traffic (search, carts, logged-in users) fills them, and your admin click waits in line. The host’s resource graphs show it. The fix is more workers, which usually means the next plan up, or a host whose plans are built for WordPress.

That’s the list. Ninety percent of slow dashboards I see are steps 02 and 03. If yours isn’t, and you’d like it measured instead of guessed, that’s the performance work I do, admin side included.

If you're here, it isn't a quick one

Still slow? Then fixed.

We measure your real traffic, tell you which of these causes you actually have, and quote a fixed price to fix them.

Performance workfrom $299
MeasurementBefore and after
Receipt840 → 110 ms TTFB
wp-adminheartbeatautoloadcron
Found a mistake, or a step that didn't work? Write me