Admin Performance

WordPress Admin
Dashboard Slow?

Every click takes 3 seconds. Saving a post feels like dial-up. It's not your hosting. It's what's running inside wp-admin.

Why wp-admin Feels Slow

Your frontend might be fast—cached, CDN-delivered, optimized. But wp-admin bypasses all of that. Every admin page is generated fresh by PHP, runs its own set of database queries, and loads every active plugin's admin hooks.

The Pattern

The frontend loads in 1.2 seconds. The admin dashboard takes 6+ seconds. You upgrade hosting. It helps for a week. Then it's slow again.

Caching plugins don't help here—they intentionally skip admin pages. CDN doesn't help—admin is dynamic. The slowness comes from inside WordPress itself.

Why Common WordPress Admin Speed Tips Don't Work

What People Tell You
  • "Upgrade your PHP version"
  • "Switch to better hosting"
  • "Install a caching plugin"
  • "Disable plugins you don't use"
  • "Increase memory limit"
What's Actually Happening
  • One plugin's admin_init callback takes 800ms
  • Heartbeat API fires every 15 seconds
  • Admin-ajax.php handles 12 concurrent requests
  • 2MB of autoloaded data on every request
  • A slow query runs on every admin page

Generic advice isn't wrong—it's just not specific enough. You don't need to "disable plugins." You need to know which plugin, which hook, and which function is the bottleneck.

4 Real Causes of Slow WordPress Admin Performance

1. admin-ajax.php Bottleneck

WordPress routes all AJAX requests through a single file: admin-ajax.php. Every request bootstraps the entire WordPress stack. If 5 plugins make AJAX calls on the dashboard, that's 5 full WordPress loads happening simultaneously.

# Check admin-ajax traffic in your browser:
# DevTools → Network → Filter "admin-ajax"
# Look at how many requests fire on a single page load

2. Heartbeat API Overhead

WordPress Heartbeat sends an AJAX request every 15–60 seconds to check for autosaves, post locks, and notifications. Each request loads the full WordPress stack. On shared hosting, this alone can saturate your PHP workers.

// Slow down heartbeat to reduce load:
add_filter('heartbeat_settings', function($settings) {
    $settings['interval'] = 120; // seconds (default: 15-60)
    return $settings;
});

3. Slow Plugin Callbacks on admin_init

Plugins hook into admin_init, admin_menu, and admin_enqueue_scripts. These run on every admin page, not just the plugin's own settings page. A single poorly-written callback can add 500ms+ to every admin request.

4. Autoload Bloat

The same wp_options autoload query that affects your frontend also runs on every admin page. But admin pages are never cached, so you feel the full impact every time. Read the full autoload guide.

How to Diagnose

  1. Open DevTools on any admin page — Go to Network tab. Note the main page load time, then count admin-ajax requests. If you see 5+ AJAX calls, that's 5 full WordPress bootstraps.
  2. Time admin_init hooks — Add SAVEQUERIES to wp-config.php and check which functions run on admin_init. Sort by execution time to find the slow ones.
  3. Deactivate plugins one at a time — Measure admin page load after each deactivation. When it gets fast, you found the culprit. This is tedious but definitive.
  4. Check database query count — A healthy admin page should run 50–100 queries. If you're seeing 300+, plugins are adding unnecessary queries to every admin page. See our slow queries guide for how to track these down.
  5. Monitor Heartbeat frequency — In DevTools, watch the Network tab for 60 seconds. Count how many admin-ajax.php requests fire. Each one is a full PHP request.

How to Speed Up WordPress Admin Dashboard

Reduce Heartbeat Frequency

Changing Heartbeat from 15s to 120s cuts background admin-ajax requests by 87%. Most sites won't notice any difference in functionality.

Disable Dashboard Widgets

Every dashboard widget runs its own queries on page load. Remove widgets from plugins you don't check daily:

add_action('wp_dashboard_setup', function() {
    remove_meta_box('dashboard_quick_press', 'dashboard', 'side');
    remove_meta_box('dashboard_primary', 'dashboard', 'side');
    // Remove plugin widgets that make external API calls
});

Add Object Caching

Redis or Memcached dramatically improves admin performance because admin pages are query-heavy and never page-cached. Database lookups that run on every admin page get served from memory instead.

87%
Fewer background requests (Heartbeat 120s)
50%+
TTFB reduction with object cache
300+
Queries on bloated admin pages

Why wp-admin Gets Slower Over Time

Admin slowness is a death by a thousand cuts. No single plugin is the villain. It's the accumulation of:

  1. 15 plugins each adding 50ms to admin_init = 750ms baseline
  2. Dashboard widgets making external API calls on every load
  3. AJAX handlers running full WordPress bootstrap for trivial tasks
  4. Autoloaded data growing 100KB per month from plugin churn

You can't fix what you can't see. You need per-callback timing —not just "which plugin is slow" but "which function in which plugin takes how long on which hook."

Find Your Admin Bottleneck

WP Multitool's Slow Callback Finder times every hook callback in wp-admin and ranks them by execution time. Find the exact function that's costing you 800ms—not just the plugin name.

Get WP Multitool Slow Queries Guide