This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

Custom Post Type Cleanup


Custom post type posts are left in the database if a post type is no longer registered (in use).

Plugins and themes can (without you knowing) use custom post types as a way to store data. These posts stay in the database forever if they’re not cleaned up by the plugin/theme itself upon deletion.

There are a lot of plugins that clean your database (by removing revisions, drafts etc.), but I haven’t found one that does a cleanup of unused post type posts.

This plugin provides an easy way to detect and remove posts from post types that are no longer in use. The settings page for this plugin is at wp-admin > Tools > Custom Post Type Cleanup.

Note: The proper WordPress delete function wp_delete_post is used instead of running a direct MySQL query to delete the posts. This way all associated post data (comments, post meta etc.) are also deleted from the database.

Since version 1.2.0 you can re-register unused custom post types for a limited period of time. This allows you to inspect and delete the posts like you would normally (in the wp-admin).


  • Plugin page
  • Plugin page after re-registering unused custom post types.
  • Plugin page after cleaning up all unused post type posts


Follow these instructions to install the plugin.

  1. In your WordPress admin panel, go to Plugins > New Plugin, search for “custom post type cleanup” and click “Install now”.
  2. Alternatively, download the plugin and upload the contents of to your plugins directory, which usually is /wp-content/plugins/.
  3. Activate the plugin
  4. Go to wp-admin > Tools > Custom Post Type Cleanup and see if there are unused custom post type posts in the database.


October 7, 2021
This plugin, even though it's over a year since its last update, still works as of this post date. I wanted to clean out all my custom post types. What the plugin found, in addition to the custom posts, were files that were left over from a previous theme I used years ago. This plugin cleaned all those files out.
May 26, 2021
It's always bugged me that this junk sticks around, not to mention the junk I end up leaving behind by registering a CPT, then testing with it, then realizing I don't need it, and removing it. I often forget to delete the posts first! Great plugin, thanks.
May 13, 2021
I had to delete 10,000+ posts from a plugin that was being deactivated and even thought the plugin had an Uninstall button, the server couldn't handle the quantity. This plugin solved the problem and let me fine-tune the batch quantity for deletion to a number that made the server happy. Saved me a lot of pain. Thanks!
March 9, 2021
Amazing plugin. Plugins leaving their crap behind in the DB has annoyed me for years and I've never found an easy way to deal with it. This is so simple, the option to temporarily register everything is genius, super useful.
August 10, 2020
Simple plugin that works great. Does exactly what it says. Saved me a ton of time
July 26, 2020
Within minutes of installing this terrific plugin, I was able to quickly identify and remove hundreds of old posts in my database from several very old and no longer used custom post types, thereby helping me shrink and streamline a bloated database. Huge thanks to the developer for providing this great tool for free. <3
Read all 26 reviews

Contributors & Developers

“Custom Post Type Cleanup” is open source software. The following people have contributed to this plugin.


“Custom Post Type Cleanup” has been translated into 1 locale. Thank you to the translators for their contributions.

Translate “Custom Post Type Cleanup” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Add batch size option to admin form.


  • Add ability to re-register unused custom post types.