How to Fix a Slow WordPress Admin Dashboard

A slow WordPress admin is caused by plugins making external requests, unoptimised queries, or debug logging. How to diagnose and fix each cause.

Dobromir Dechev
Dobromir WordPress agency owner

Quick answer

A slow WordPress admin dashboard is most commonly caused by plugins making external HTTP requests on every page load, unoptimised database queries, or debug logging left enabled — disabling plugins one by one and checking Query Monitor output identifies the culprit in most cases.

A slow WordPress admin panel is a productivity killer. Page loads over 3-5 seconds when navigating the dashboard, opening posts, or saving changes add up to hours of wasted time. Unlike slow front-end performance (which primarily affects visitors), a slow admin affects everyone who manages the site.

The causes are usually different from what makes the front end slow - and so are the fixes.


Step 1 - Measure which admin pages are slow

Before investigating, identify exactly where the slowness occurs:

  • Dashboard home (WordPress admin front page)
  • Post/page editor (opening an existing post or creating new)
  • Post list screens (Pages, Posts, Custom Post Types)
  • Plugin management page
  • A specific plugin's settings screen
  • Saving/publishing posts

Use the browser's Network tab (open DevTools > Network before loading the page) to check how long each admin request takes. The admin-ajax.php and /wp-admin/ entries show server response times.


Step 2 - Check for external HTTP requests during admin loads

One of the most common causes of slow admin pages: a plugin making HTTP requests to an external server during every admin page load.

This can happen because:

  • A plugin is checking for licence validity or updates on every page load
  • A plugin is pulling in external data (exchange rates, weather, social feeds)
  • A plugin's update server is down or slow

Diagnose with Query Monitor

Install the Query Monitor plugin. It adds a toolbar item in the admin with detailed performance data including:

  • HTTP requests made during the page load
  • Time taken by each request
  • Which plugin or theme initiated each request
  • Database queries and their execution times

Look at the "HTTP API Calls" section. Any requests taking over 500ms are candidates for the problem. Note which plugin triggers them.

Check with a temporary server-side monitor

Add this to wp-config.php temporarily to log slow HTTP requests:

add_filter( 'http_request_args', function( $args, $url ) {
    $args['timeout'] = 5; // 5-second timeout instead of default 5
    return $args;
}, 10, 2 );

Or set a shorter timeout to identify which plugin's requests are blocking:

// Log all outgoing HTTP requests with timing
add_action( 'http_api_debug', function( $response, $context, $class, $args, $url ) {
    if ( is_wp_error( $response ) ) {
        error_log( "WP HTTP Error: {$url} - " . $response->get_error_message() );
    }
}, 10, 5 );

Remove this code after diagnosis.


Step 3 - Disable heartbeat in admin

The WordPress Heartbeat API sends AJAX requests to the server every 15-60 seconds while the admin is open. This is used for auto-saving posts, checking for updates, and keeping the editor session alive.

On sites with many active editors or on slow servers, these requests can cumulatively slow down the admin. Control the Heartbeat API:

// Reduce heartbeat frequency in admin (in functions.php)
add_filter( 'heartbeat_settings', function( $settings ) {
    $settings['interval'] = 60; // seconds (default is 15)
    return $settings;
});

// Or disable heartbeat entirely in admin (not recommended if using Gutenberg)
add_action( 'init', function() {
    if ( is_admin() ) {
        wp_deregister_script( 'heartbeat' );
    }
});

Or use the Heartbeat Control plugin for a UI-based approach.


Step 4 - Check for database query bottlenecks

Query Monitor shows all database queries for each admin page load. Look for:

  • Queries taking over 100ms
  • The same query running 50+ times on a single page load (N+1 problem)
  • Queries with SELECT * on large tables without WHERE clauses

Common culprits:

WooCommerce order screens: As the number of orders grows, the orders list and dashboard widgets run expensive queries. Install the WooCommerce order table migration (HPOS - High Performance Order Storage) if you are on WooCommerce 7.1+. HPOS replaces the old post-based order storage with dedicated order tables that are far more efficient:

In WooCommerce > Settings > Advanced > Features > High-performance order storage: enable it.

Unoptimised custom plugins: Custom meta queries without proper indexes. If a custom plugin queries wp_postmeta with meta_key conditions, verify there is a database index on meta_key. WordPress adds this by default, but plugins that create their own tables sometimes do not.

Transients not working: If the object cache is not configured, plugins rely on database transients for caching. If transients are not being stored or retrieved correctly, the same data is queried from scratch on every page load.


Step 5 - Check debug logging

If WP_DEBUG_LOG is enabled on a busy site, the debug log file can grow to hundreds of megabytes. PHP writing to a large log file on every request causes noticeable slowdown.

Check:

// In wp-config.php - should be false on production
define( 'WP_DEBUG',         false );
define( 'WP_DEBUG_LOG',     false );
define( 'WP_DEBUG_DISPLAY', false );

Also check the actual log file size:

ls -lh /var/www/html/wp-content/debug.log

If it is over 10MB, it was left enabled in production. Disable it and delete the log file.


Step 6 - Diagnose slow plugin settings pages

Some plugin settings pages are slow because they:

  • Load a large amount of data from the database on open
  • Make live API calls to validate settings
  • Render large option tables without pagination

To identify which plugin is causing a slow settings page:

  1. Open the Network tab in DevTools
  2. Navigate to the slow plugin settings page
  3. Look for requests to wp-admin/admin.php?page=[plugin-slug] that take over 2 seconds
  4. The slow server time is usually in the "Waiting for server response" (TTFB) metric

If one plugin's settings page is consistently slow regardless of other factors, contact the plugin developer - it is likely a server-side optimisation issue in their code.


Step 7 - Increase PHP memory limit

The admin can be slow if PHP is constantly hitting the memory limit and garbage collecting. Check:

define( 'WP_MAX_MEMORY_LIMIT', '512M' ); // memory available to admin operations
define( 'WP_MEMORY_LIMIT',     '256M' ); // memory available to front end

Also check php.ini:

memory_limit = 512M
max_execution_time = 300

On managed hosts (Kinsta, WP Engine), these are set appropriately by default. On VPS setups, they may be left at lower defaults.


Step 8 - Deactivate and isolate plugins

If the above steps have not identified the cause, use plugin isolation:

  1. Deactivate all plugins except WordPress core
  2. Test if the admin is fast
  3. If yes: reactivate plugins one by one, testing the admin after each reactivation
  4. The plugin that causes the slowdown when activated is the culprit

This process takes 20-30 minutes but identifies the problem definitively. Once you know which plugin is causing it, you can:

  • Look for a configuration option that disables the problematic behaviour
  • Replace the plugin with an alternative
  • Report the performance issue to the plugin developer

Quick checklist

  • [ ] Query Monitor installed and reviewed
  • [ ] External HTTP requests checked for slow responses
  • [ ] Heartbeat interval increased or controlled
  • [ ] WP_DEBUG_LOG disabled and log file cleared
  • [ ] WooCommerce HPOS enabled (if applicable)
  • [ ] WP_MAX_MEMORY_LIMIT set to 512M
  • [ ] Plugin isolation test if problem persists

Frequently Asked Questions

Why is my WordPress admin so slow but the front end is fine?
The admin and front end run different code paths. Admin slowness is usually caused by plugins that fire external API requests (analytics, social feeds, licence checks) on every backend page load, or by admin-only scripts added by poorly coded plugins. The Query Monitor plugin will show you exactly which requests and queries are taking the most time.
How do I find which plugin is slowing down my WordPress admin?
Go to Plugins > Installed Plugins and deactivate all non-essential plugins. If the admin speeds up immediately, reactivate them one at a time and reload the dashboard after each — the slowdown will return when you activate the problematic plugin. Query Monitor is a faster alternative: it profiles every request and query without you having to toggle plugins.
Does increasing PHP memory fix a slow WordPress admin?
Rarely. A slow admin is usually a time problem, not a memory problem. Increasing memory helps if you see memory exhaustion errors, but sluggish page loads are almost always caused by slow queries or external HTTP requests, which extra memory does not fix. Profile first with Query Monitor before changing server settings.
Can WordPress debug logging cause admin slowness?
Yes. If WP_DEBUG_LOG is enabled and the debug.log file has grown to hundreds of megabytes, writing to it on every request adds noticeable overhead. Open wp-config.php, set WP_DEBUG and WP_DEBUG_LOG to false, and delete or archive the oversized log file.

Was this article helpful?