Skip to content
CH SCShop classwordpress · beginner · ~45 min · 6 steps

How to audit and remove WordPress plugins you don't need

Work out which plugins earn their keep, deactivate and delete the rest safely, and shrink your update burden and attack surface at once.

August 10, 2026 · by Dane Petersen

Plugins accumulate the way gear accumulates in a garage: each one made sense on the day, and five years later you can’t close the door. Every plugin you carry is code to update, a possible security hole, and a little drag on every page load — so the cheapest maintenance win on most WordPress sites is owning less of it. This works from the admin alone, though WP-CLI makes the listing faster. Take a backup that restores before you start deleting.

List everything and what it claims to do

Get the full roster on paper — or in a spreadsheet, which is where this is headed. From Plugins in the admin, or:

wp plugin list --fields=name,status,version,update

One row per plugin, three columns: what it says it does, whether it’s active, and — next step — what job it actually has on your site. Inactive plugins go on the list too. Deactivated code still sits on the server, and a known hole in an inactive plugin is still a hole.

Match each plugin to a job on the site

Now the honest column. For each plugin, name the page, form, or feature that stops working without it. Plenty will be obvious — the contact form, the SEO plugin, the backup tool. The interesting ones are the rest: the slider for a design you replaced, three caching plugins fighting over the same job, the “coming soon” plugin from launch week. If nobody can say what a plugin does for the site today, it’s a candidate. Not a deletion yet — a candidate.

Check for abandonware

Even a plugin doing a real job is a liability if nobody maintains it anymore. Look up each keeper on wordpress.org and check three things: when it was last updated (past a year, get wary), whether it’s tested with your WordPress version, and whether support threads get answers. A plugin that’s been abandoned by its developer needs a replacement on your schedule, before it becomes a hole on an attacker’s schedule — the same logic as spotting an abandoned website, one layer down.

Deactivate candidates one at a time

Deactivating is reversible, which makes it the perfect test. One candidate at a time:

wp plugin deactivate PLUGIN_NAME

After each one, click the parts of the site a visitor uses: front page, a content page, the forms, search, checkout if you sell. Something broke? Reactivate, and that plugin just proved it has a job — update its row and move on. Nothing broke? Leave it off and let it sit.

Delete after a quiet week

A week of silence is the real test — some plugins only work on cron schedules, weekly digests, or that one form nobody submits on weekends. When a deactivated plugin has caused zero complaints for a week, delete it:

wp plugin delete PLUGIN_NAME

Delete, not just deactivate — deletion removes the code from the server, which is the actual security win. Most plugins leave some settings behind in the database, which is harmless clutter; if you want it gone too, that’s a job for the database cleanup tutorial.

Verify nothing missed it

Run the visitor loop one more time, end to end: pages render, forms send, search searches, orders complete. Then check the admin for surprises — no error notices, no broken settings screens. Your plugin list should now fit on one screen, every row should have a job you can name, and the next update round should be noticeably shorter. That’s the measurable proof: fewer plugins to update means fewer chances for an update to go sideways, and a smaller target for everything else. Put a quarterly reminder on the calendar — the garage fills back up if you let it.

That's the lesson. Back to the shop for more — or if this is the chore your organization never gets to,that's literally what we're for.