October 4, 2026
WordPress plugin audit process with Query Monitor showing database query counts by component
Run a plugin audit to identify bloated, unused plugins slowing your WordPress site. Step-by-step process using Query Monitor to profile and remove overhead.

Your WordPress dashboard is sluggish. The admin area takes seven seconds to load. Every time you add a product or publish a post, you're waiting. You've installed 47 plugins over three years, and most of them are still active even though you stopped using half of them months ago. Plugin bloat isn't just about raw numbers - it's about what each plugin does behind the scenes. This audit walks you through identifying the real culprits, measuring their actual impact, and removing them without breaking your site.

The setup

You'll work in Plugins > Installed Plugins, the Query Monitor plugin interface, and occasionally WP-CLI if you have SSH access. This is not a general performance review - it's a structured process to find which plugins are adding database queries, HTTP requests, or load time, then deciding whether each one still earns its keep. The audit doesn't touch theme files or server configuration.

Install a profiling plugin first

You need data, not guesses. Query Monitor is the standard tool for plugin audits because it shows you which plugins fire database queries, which ones load scripts on every page, and how much time each component adds to your page load. Install it from the repository, activate it, then load your homepage. You'll see a new admin bar menu labeled "Queries" with a number next to it.

Click into Queries by Component. This view breaks down every database query by the plugin or theme that triggered it. A contact form plugin that runs six queries on your homepage when the form only appears on the contact page is wasting resources. An analytics plugin that loads three external scripts on every admin page is slowing down your workflow. Plugin performance audits show that even a single poorly coded plugin can add 200-300ms to load time through inefficient queries alone.

wordpress plugins

Next, check the Scripts and Styles panel. This lists every CSS and JavaScript file loaded on the current page, grouped by plugin. Look for plugins loading assets on pages where they're not needed. A slider plugin that enqueues its JavaScript on checkout pages. A gallery plugin that loads CSS site-wide when you only use galleries in blog posts. These are fixable, but first you need the list.

Take screenshots or notes for each major page type: homepage, product page, cart, checkout, blog post, admin dashboard. The plugin impact varies by context. A page builder might be silent on the front end but add 40 queries to the admin editor. A checkout optimization plugin might be lean everywhere except the checkout flow itself.

Classify every plugin by usage and impact

Open your Installed Plugins screen and create a spreadsheet with four columns: Plugin Name, Last Used, Query Count, and Keep or Remove. Go through the list one by one. For each plugin, answer two questions: when did you last actively use this feature, and how much overhead does it add?

Plugins you haven't touched in six months are immediate candidates for removal. Deactivating isn't enough - deactivated plugins still leave database tables and options rows behind, and they still show up in your update queue. Delete them fully.

Next, look for functional overlap. You don't need three SEO plugins. You don't need two backup solutions unless one is offsite and one is local, and even then you should verify they're not duplicating the same database dumps. One caching plugin is enough - running two cache plugins simultaneously causes more problems than it solves. One security plugin is enough. If you're running Wordfence and iThemes Security at the same time, pick one and remove the other.

Check for plugins that solved a problem you no longer have. You installed a redirect manager when you migrated from Joomla in 2023, and it's been running ever since even though all the redirects are stable and you haven't added a new one in 18 months. You added a maintenance mode plugin for a site redesign that finished a year ago. These plugins aren't causing obvious harm, but they're adding weight for zero benefit.

For WooCommerce sites, audit extensions separately. Extensions for payment gateways you disabled. Shipping calculators for carriers you don't use. Currency switchers that made sense when you sold internationally but you've been domestic-only for two years. These often add hooks to the checkout flow even when they're not actively processing transactions.

Test removal in stages with backups

Never delete ten plugins at once in production. Take a full backup first - database and files. If you're using a staging environment, run the audit there first. If you don't have staging, do this during a low-traffic window and keep the backup ready to restore.

Start with the obvious dead weight - plugins you haven't used in months with low query counts. Deactivate, test the site (front end, admin, checkout if applicable), then delete. Check for PHP errors in Query Monitor's PHP Errors panel. Check your error log at wp-content/debug.log if you have WP_DEBUG_LOG enabled in wp-config.php.

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

After removing each batch, clear all caches - plugin cache, object cache if you're using Redis or Memcached, and your CDN cache if applicable. Then re-test with Query Monitor. You should see the query count drop and page load time improve. If you don't see improvement after removing five plugins, you removed the wrong ones. Go back to the profiling data and target higher-impact plugins.

For plugins you're uncertain about, deactivate and wait 48 hours. If no one reports a missing feature and you don't notice anything broken, it's safe to delete. If you discover you actually need it, reactivate. Don't leave plugins in a deactivated state long-term - that's just clutter with extra steps.

When you delete a plugin, check whether it left database tables behind. Install WP-Optimize or a similar database cleaner, go to the Database tab, and look for tables with prefixes matching the old plugin name. Most plugins clean up after themselves, but some don't. Leaving orphaned tables doesn't break anything, but it bloats your database and slows down full-database operations like backups and search-replace during migrations.

What breaks

The plugin is gone but its shortcodes remain in old posts

You remove a gallery plugin you stopped using two years ago. The site loads fine. Then a visitor lands on a 2022 blog post, and there's a raw shortcode in the middle of the content: . The plugin that processed that shortcode is gone, so WordPress just prints it as text. You need to search your post content for the old shortcode and either replace it with a current solution or remove it. Run this in the database via phpMyAdmin or WP-CLI:

SELECT ID, post_title 
FROM wp_posts 
WHERE post_content LIKE '%[old_shortcode%' 
AND post_status = 'publish';

Review each post, update or remove the shortcode, and republish. Alternatively, keep a lightweight shortcode handler plugin that renders retired shortcodes as empty strings so they don't display.

A removed plugin handled a URL structure and now you have 404s

You delete a custom post type plugin that registered a /portfolio/ post type. Google still has 30 portfolio URLs indexed. Visitors click those links and hit 404 pages. The content is gone, but you need to redirect those URLs to avoid broken links. If the portfolio items map to regular posts or pages, set up 301 redirects in your .htaccess file or use Redirection plugin. If the content is truly obsolete, return a 410 Gone status instead of 404 so search engines know to drop it from the index.

Redirect 301 /portfolio/old-item https://yoursite.com/new-location

Check Google Search Console under Coverage after a week to confirm the old URLs are being recrawled and removed from search results.

Removing a plugin breaks functionality you didn't realize depended on it

You remove a "helper" plugin that seemed redundant. Two days later, your checkout flow throws a fatal error. The payment gateway plugin relied on a function from the helper plugin, but it never showed up in Query Monitor's component list because it was only called during checkout, and you tested on the homepage. The fix is to restore the plugin immediately, then investigate whether there's a single plugin that combines both functions or whether the dependency is actually documented but you missed it. Check the payment gateway's documentation for required dependencies. Some WooCommerce extensions require WooCommerce Blocks, WooCommerce Subscriptions, or specific helper libraries that aren't obvious from the plugin name.

FAQs

How many plugins is too many?

There's no magic number. A site with 50 well-coded, single-purpose plugins can outperform a site with 15 bloated, all-in-one plugins. The question is total overhead, not count. Run the profiling audit and measure query count, script load, and page generation time. If you're under 40 database queries on a standard page and load time is under 1.5 seconds (server response, not including external resources), the number doesn't matter. If you're at 150 queries with 18 plugins, you have a quality problem, not a quantity problem.

Should I replace multiple single-function plugins with one all-in-one plugin?

Only if the all-in-one plugin is genuinely lighter. Many "all-in-one" plugins load every feature's code on every page even if you only use two of the twelve included modules. Three focused plugins that each load 8kb of CSS and run two queries are better than one 200kb monolith that runs 30 queries to handle forms, SEO, and security in one package. Test both configurations with Query Monitor and compare the actual resource usage, not the perceived simplicity of having one plugin instead of three.

Can I audit plugins on a live site or do I need staging?

You can profile on a live site - Query Monitor only shows data to logged-in admins and doesn't affect visitor experience. But you should test removal on staging or a local copy first. If you don't have staging, take a complete backup, do the audit during low-traffic hours, and keep the backup ready to restore within five minutes if something breaks. Never delete plugins in production without a same-day backup available.

What do I do about plugins the theme requires?

Required plugins are usually for page builders, demo content importers, or custom post types. Check whether the theme actually breaks without the plugin or whether it just nags you with an admin notice. Deactivate the plugin and test thoroughly. If core functionality breaks - layouts don't render, custom post types disappear - the plugin is truly required. If the site works fine and you only see a dismissible notice, the plugin is recommended, not required, and you can remove it. Document which plugins are genuine dependencies so you don't accidentally remove them during future audits.

How often should I audit plugins?

Run a full audit every six months or whenever you notice performance degradation. Do a quick check quarterly - look at your plugin list, deactivate anything you haven't used since the last check, and verify it's still unnecessary after a week. Set a calendar reminder. Plugin bloat accumulates gradually because you install solutions for temporary problems and forget to remove them when the problem is solved. Regular review prevents three years of accumulated weight from turning your site into a slow, unstable mess.

Verdict: Run this audit every six months using Query Monitor to identify high-overhead plugins, remove anything you haven't actively used in the last quarter, and test removals on staging before touching production. If you're seeing 100-plus queries per page or admin load times over three seconds, you've waited too long - start the audit today and expect to remove 30-40% of your current plugin count.