WordPress Plugin Audit: The Checklist I Use to Clean Up Slow, Risky Sites

A practical WordPress plugin audit process: inventory, overlap, maintenance status, security history, performance impact and how to remove plugins safely.

A WordPress plugin audit is a structured review of every installed plugin: what it does, whether another plugin already does it, whether it is maintained, whether it has had security issues, and what it costs in load time. The goal is a shorter, safer list of plugins you understand.

Most slow or hacked WordPress sites I am asked to fix have the same story: plugins added over years, each for a good reason, and none ever removed. This is the audit I run.

Why audit plugins at all?

Plugins are code from different authors running with full access to your site. Each one can add database queries, scripts, styles, cron jobs and admin notices. Unmaintained plugins are a common entry point for attacks, and overlapping plugins create conflicts that are hard to debug. An audit turns an accumulated mess back into deliberate choices.

Step 1: take a backup and work on staging

Before you touch anything, take a full backup of files and database, and if possible clone the site to staging. With WP-CLI:

wp db export ~/backups/pre-audit.sql
wp plugin list --fields=name,status,version,update --format=csv > plugins.csv

More useful commands are in my WP-CLI commands guide.

Step 2: build the inventory

For each plugin, add these columns to the spreadsheet:

Column What to record
Purpose One sentence: why is it installed?
Used where Front end, admin only, specific pages
Overlaps with Other plugins doing similar things
Last updated Date of the last release
Tested up to WordPress version it declares
Active installs From WordPress.org, as a rough signal
Security history Known vulnerabilities and whether they were fixed
Licence Free, premium, expired licence?

If nobody can explain why a plugin exists, mark it for investigation.

Step 3: find overlap

Common overlaps I see:

  • Two SEO plugins, or an SEO plugin plus a separate schema plugin plus a theme that also outputs schema.
  • A caching plugin plus a host cache plus an optimisation plugin all minifying CSS.
  • Several form plugins, each with its own scripts.
  • Page builder add-on packs where only one widget is used.
  • Security plugins doing the same firewall job as the host or Cloudflare.

Overlap is where conflicts and duplicate output come from. Duplicate structured data is a classic example; see schema markup.

Step 4: check maintenance and security

  • Last updated more than a year ago? Treat it as a risk and look for an alternative.
  • Closed on WordPress.org? Plugins can be closed for security or guideline reasons; find out why.
  • Known vulnerabilities? Check vulnerability databases such as WPScan, Patchstack or Wordfence Intelligence, and confirm you run a fixed version.
  • Nulled premium plugins? Remove them immediately. Pirated plugins are a well-known malware source.

Step 5: measure performance cost

Tools I use:

  • Query Monitor to see database queries, hooks and HTTP calls per page, grouped by plugin.
  • Browser DevTools network tab to list scripts and styles each plugin adds to the front end.
  • Lighthouse before and after deactivating a suspect plugin on staging.

Look especially for plugins that load scripts on every page when they are only needed on one (sliders, forms, maps). Many slow Total Blocking Time problems trace back to this.

Step 6: decide for each plugin

Each plugin gets one of four outcomes:

  1. Keep – needed, maintained, reasonable cost.
  2. Configure – needed, but loading too much; restrict it to the pages that need it.
  3. Replace – needed function, but a better maintained or lighter option exists, or a few lines of code in a child theme or a small custom plugin will do.
  4. Remove – not needed.

Step 7: remove safely

  • Change one plugin at a time on staging, then test.
  • Read the plugin’s uninstall behaviour; some delete their data, which is good for cleanup but bad if you might need it.
  • Check that shortcodes from the plugin are not left in content, showing as raw text.
  • After deactivation, delete it. Deactivated code is still on disk.
  • Check for leftover database tables or options if the plugin was large.
wp plugin deactivate old-slider
# test the site, then:
wp plugin delete old-slider

Step 8: test the critical paths

  • Home, key landing pages, blog post.
  • Forms send and arrive.
  • For stores: add to cart, checkout with each payment method, order emails.
  • Logged-in admin tasks the client actually does.

Step 9: document

Write a short plugins.md or a note in the admin: each plugin and why it is there. The next audit takes minutes instead of hours.

Audit checklist

  • Backup and staging ready
  • Inventory with purpose for every plugin
  • Overlaps identified
  • Maintenance and vulnerability status checked
  • Performance cost measured
  • Keep / configure / replace / remove decided
  • Changes applied one at a time and tested
  • Unused plugins deleted, not just deactivated
  • Document saved

Common mistakes

  • Removing plugins on the live site during business hours.
  • Judging by plugin count instead of impact.
  • Replacing a maintained plugin with custom code nobody will maintain.
  • Forgetting must-use plugins in wp-content/mu-plugins, which do not appear in the normal list.

A plugin audit is one of the cheapest ways to make a site faster and safer. It pairs naturally with the WordPress security checklist. If you would like me to run one on your site, contact me.

Frequently asked questions

How many plugins is too many?

There is no safe number. One badly written plugin can slow a site more than twenty lean ones. Judge plugins by what they load, how well they are maintained and whether you need them.

Are deactivated plugins a security risk?

Their files remain on the server and can still be reachable in some cases, so outdated deactivated plugins are a risk. Delete plugins you do not use.

How often should I audit plugins?

A light review every few months and a deeper audit before major changes, such as a redesign, migration or major WooCommerce update, works well for most sites.

Muhamed Ahmed

Ecommerce & Web Solutions Developer

I'm Muhamed Ahmed, an ecommerce and web solutions developer with 15 years of experience building fast, secure online stores and websites on WooCommerce, WordPress and custom Laravel platforms. I write about website speed, SEO, automation and conversion.

All articles Work with me

Related articles