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.
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:
- Open the Network tab in DevTools
- Navigate to the slow plugin settings page
- Look for requests to
wp-admin/admin.php?page=[plugin-slug]that take over 2 seconds - 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:
- Deactivate all plugins except WordPress core
- Test if the admin is fast
- If yes: reactivate plugins one by one, testing the admin after each reactivation
- 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
Related reading
Frequently Asked Questions
Why is my WordPress admin so slow but the front end is fine?
How do I find which plugin is slowing down my WordPress admin?
Does increasing PHP memory fix a slow WordPress admin?
Can WordPress debug logging cause admin slowness?
// new_articles
Get notified when new guides drop
Practical WordPress guides from a working agency owner. No filler. Unsubscribe any time.
Was this article helpful?
Thanks for the feedback!