2026年11月12日
2026年11月12日
How to Find and Safely Remove Unnecessary WordPress Plugins
This article is a localized edition of the Japanese original. Read the Japanese original
Leaving unused plugins or abandoned plugins installed can mean vulnerabilities that never get fixed, conflicts with other plugins, and a slower admin or front end. This article shows how to find plugins you don't need and remove them without damaging your data.
Before you start, back up your files and database. If possible, try the steps on a staging site configured like production first. Run the WP-CLI commands over SSH in the directory where WordPress is installed. The WP-CLI options were checked against the developer.wordpress.org handbook as of November 2026.
1. List your current plugins
You can see active and inactive plugins under "Plugins → Installed Plugins" in the admin. WP-CLI lets you filter them by status.
# All plugins (with status, available updates and auto-update setting)
wp plugin list
# Active plugins only
wp plugin list --status=active
# Inactive plugins only (candidates for removal)
wp plugin list --status=inactive
# Plugins with updates available
wp plugin list --update=available
For plugins distributed on WordPress.org, you can also check the last-updated date and distribution status. A plugin whose wporg_status is closed is no longer distributed on WordPress.org.
wp plugin list --fields=name,status,version,wporg_status,wporg_last_updated
These two fields are fetched from WordPress.org, so your server must be able to make outbound connections. They are empty for plugins obtained outside WordPress.org.
2. Decide which plugins are candidates for removal
Consider removing any plugin that matches one of the following.
| What to check | How to check it |
|---|---|
| It has been inactive and unused | wp plugin list --status=inactive. "Tools → Site Health" in the admin also recommends removing inactive plugins |
| It has been closed | wporg_status is closed. The plugin's WordPress.org page shows a notice that it has been closed |
| It hasn't been updated in a long time | The wporg_last_updated date. Check whether the plugin's WordPress.org page warns that it hasn't been tested with recent major releases |
| Its features overlap with another plugin | Two or more plugins do the same job (see the table below) |
| It was installed for a one-off task | Migration, testing or development plugins are still installed |
A plugin that hasn't been updated in a long time isn't necessarily dangerous on its own. Some plugins are small and simply don't need changes. However, if a vulnerability is reported, a fix is unlikely to come, so consider migrating if there is an alternative.
When several plugins do the same job, you get duplicated output and conflicting settings. For example, pick just one from each of these combinations.
| Role | Examples of overlapping combinations |
|---|---|
| SEO | Yoast SEO and Rank Math, All in One SEO |
| Caching | WP Rocket and W3 Total Cache, WP Super Cache |
| Security | Wordfence and Solid Security (formerly iThemes Security) |
| Forms | Contact Form 7 and WPForms (check which forms are in use first) |
3. Check whether active plugins are actually in use
Even active plugins are sometimes not actually used. Before removing one, check the following.
- Shortcodes and blocks: If a plugin's shortcodes or blocks remain in your posts, those parts may disappear after removal, or the raw shortcode text may be displayed. Search your post content to check.
- Widgets and theme integration: Check for widgets the plugin provides and places where your theme calls the plugin's functions.
- Dependencies: Since WordPress 6.5, dependencies are managed through a plugin's "Requires Plugins" header. A plugin that other plugins require can't be deactivated until the plugins that depend on it are deactivated first.
# Example: find posts and pages that use the Contact Form 7 shortcode
wp post list --post_type=post,page --s='contact-form-7' --fields=ID,post_title,post_type
--s works like the regular WordPress search and covers post content and titles. Replace the search string with the plugin's shortcode or block name.
4. Check the performance impact
To see whether a plugin slows your pages down, compare before and after deactivating it.
- On a staging site, measure the load time of a page such as the home page
- Deactivate one candidate plugin
- Measure the same page again and compare
# Measure the page response time (seconds) five times
for i in 1 2 3 4 5; do curl -o /dev/null -s -w "%{time_total}\n" https://example.com/; done
Page caching can hide the difference, so compare with caching off or while logged in. To see a per-plugin breakdown, use the Query Monitor plugin. It groups database queries by plugin or theme (component) and also lists the CSS and JavaScript files loaded on the page.
5. Deactivate vs. uninstall vs. delete
How you remove a plugin determines whether its data stays behind.
| Action | What it does |
|---|---|
| Deactivate | Stops loading the plugin. Its files and settings remain, so reactivating it restores everything |
| "Delete" in the admin | Deletes the files of an inactive plugin. If the plugin provides an uninstall routine (such as uninstall.php), that runs too |
wp plugin uninstall |
Like "Delete" in the admin, runs the uninstall routine and then deletes the files |
wp plugin delete |
Deletes only the files. The uninstall routine does not run |
What an uninstall routine removes varies by plugin. Some delete their settings and database tables, some let you choose in their options, and some delete nothing. Check the plugin's description or documentation.
The safe approach is to deactivate first and watch for problems for a few days to a week.
# Deactivate (data is kept)
wp plugin deactivate example-plugin
# If there are no problems, uninstall (runs the uninstall routine, then deletes the files)
wp plugin uninstall example-plugin
# Deactivate and uninstall in one step
wp plugin deactivate example-plugin --uninstall
To remove all inactive plugins at once, review the list before running the command.
# Review the targets
wp plugin list --status=inactive --field=name
# Uninstall all inactive plugins at once
wp plugin uninstall $(wp plugin list --status=inactive --field=name)
Deleted plugins can't be restored. Also make sure none of the inactive plugins are ones you plan to use later (for example, for a seasonal campaign) before running it.
6. Check for leftover data after removal
Plugins without an uninstall routine leave their settings and tables in the database. Leftover data rarely gets in the way, but large autoloaded settings can slow pages down.
# List database tables (check for tables named after the plugin)
wp db tables --all-tables-with-prefix
# Find settings (options) containing the plugin's name (example: wpcf7)
wp option list --search="wpcf7*" --fields=option_name,autoload
If you remove leftovers, first confirm that no other plugin uses those tables or options, and take a backup. Don't judge by name alone; check the plugin's documentation for the data it creates.
# Example: delete an option you've confirmed is no longer needed
wp option delete example_plugin_settings
# Delete expired transients (temporary data)
wp transient delete --expired
If the plugin registered its own post types or URL rewrites, rebuild the rewrite rules after removal by clicking "Save Changes" without changing anything under "Settings → Permalinks", or by running wp rewrite flush.
Review regularly
Reviewing plugins is not a one-time job. If you set a schedule, such as every six months, to check the list, review distribution status and last-updated dates, and uninstall unused plugins, unnecessary plugins are less likely to pile up. When you install a new plugin, recording its purpose and who is responsible for it makes it easier to decide later whether you still need it.
Related articles
- How to manage the number of WordPress plugins
- How to check whether a plugin is safe
- How to disable plugins when you can't log in to the admin
Questions about WordPress? The publisher of this site is based in Japan and replies in Japanese. Contact (Japanese)