Media Cleaner
Media Cleaner is a powerful plugin that helps you clean up your WordPress media library by deleting unused media entries and files, as well as fixing broken entries. With an internal trash feature, you can preview and confirm changes before permanently deleting anything. Plus, Media Cleaner uses smart analysis to ensure compatibility with specific plugins and themes. Use it alongside Database Cleaner for the ultimate clean-up experience. Media Cleaner is like a ninja assassin for your Media Library – it’ll stealthily take out all the unnecessary media and broken entries that are cluttering up the place. Just make sure you have a solid backup plan in place before you let this bad boy loose. To learn more about compatibility, features, and the Pro version, check out the tutorial on the official website. AI ASSISTANTS (MCP) Media Cleaner can be driven by an AI assistant, through the MCP server of AI Engine. Enable MCP in the Media Cleaner settings, and your assistant (Claude, ChatGPT, and the others) is able to run a scan, read the results, explain why a media was reported, ignore the false positives, and clean up. It is not a black box: the tools tell the assistant which builders and plugins are supported on your site, which ones are not, and what the scan cannot see, so it can warn you and check the doubtful cases instead of trusting the results blindly. Deleted files still go to the trash, and a permanent deletion always requires your explicit confirmation. COMPATIBILITY This plugin is compatible with all media types, including retina and WebP versions. It has been tested on a wide range of WordPress versions, including the latest version with Gutenberg, as well as on various themes with a large community of users. It also supports WooCommerce. For users with more complex plugins for handling website content, the Pro version may be necessary for optimal compatibility. We are constantly working to increase compatibility with other plugins. PRO VERSION Media Cleaner Pro adds extra features to the free version of Media Cleaner: Filesystem Analysis: Scans your physical /uploads directory and matches it against the Media Library. Extra support for complex plugins, such as ACF, Metabox, Divi Builder, Fusion Builder (Avada), WPBakery Page Builder, Visual Composer, Elementor, Beaver Builder, Brizy Builder, Oxygen Builder, Slider Revolution, Justified Image Grid, Avia Framework, and many more! Live Site Scan: Analyzes the online version of your website, potentially improving accuracy in some cases. WP-CLI support: Allows you to run the plugin at a higher speed or automatically with direct server access (via SSH).
Top keywords
- media14×3.28%
- cleaner8×1.87%
- media cleaner7×1.64%
- builder6×1.41%
- version6×1.41%
- compatibility5×1.17%
- pro4×0.94%
- ai3×0.70%
- assistant3×0.70%
- entries3×0.70%
- library3×0.70%
- mcp3×0.70%
WP-Sweep
WP-Sweep finds the rows WordPress leaves behind and removes them. Revisions of posts you edited years ago, meta belonging to a post that was deleted, terms attached to nothing, term relationships pointing at posts that no longer exist, expired transients: none of it is visible anywhere in wp-admin, and all of it is in your database. It uses the proper WordPress delete functions wherever they can reach the row, rather than running raw delete queries, so the hooks other plugins rely on still fire. Only the rows the API refuses to touch — orphaned meta whose object ID is 0 — are deleted directly. Features Revisions Auto drafts Deleted posts Unapproved comments Spammed comments Deleted comments Orphaned post meta Orphaned comment meta Orphaned user meta Orphaned term meta Orphaned term relationships Unused terms Duplicated post meta Duplicated comment meta Duplicated user meta Duplicated term meta Transient options oEmbed caches in post meta Optimizes database tables Delete functions used wp_delete_post_revision() wp_delete_post() wp_delete_comment() delete_post_meta() delete_comment_meta() delete_user_meta() delete_term_meta() wp_remove_object_terms() wp_delete_term() delete_transient() delete_site_transient() Known incompatibilities These plugins keep data in places WP-Sweep reads as orphaned. Protect their meta keys with the filters under Usage before sweeping. Custom Fonts Elementor Popup Builder MailPress Meta Slider Polylang Slider Revolution Viba Portfolio WPML Donations I spent most of my free time creating, updating, maintaining and supporting these plugins, if you really love my plugins and could spare me a couple of bucks, I will really appreciate it. If not feel free to use it without any obligations. Usage Every sweep is irreversible, so back your database up first. The screen lists every sweep with a short description of what it removes, how many items that is, and what proportion of the table they are. Tick the ones you want and use the Sweep bulk action, or use each row’s Sweep and Details buttons one at a time. Nothing on the screen needs JavaScript: the buttons are ordinary links and the bulk action is an ordinary form. There is no settings screen. The one thing worth tuning — how many items Details lists, 500 by default — is the wp_sweep_limit_details filter. The cap exists because the whole sample is held in memory and written into the page. WP-CLI wp sweep --all wp sweep revisions wp sweep revisions auto_drafts deleted_posts REST API All three routes need the activate_plugins capability. GET /wp-json/sweep/v1/count/ GET /wp-json/sweep/v1/details/ DELETE /wp-json/sweep/v1/sweep/ Item names revisions, `auto_drafts`, `deleted_posts`, `unapproved_comments`, `spam_comments`, `deleted_comments`, `transient_options`, `orphan_postmeta`, `orphan_commentmeta`, `orphan_usermeta`, `orphan_termmeta`, `orphan_term_relationships`, `unused_terms`, `duplicated_postmeta`, `duplicated_commentmeta`, `duplicated_usermeta`, `duplicated_termmeta`, `optimize_database`, `oembed_postmeta`. Filters wp_sweep_postmeta_whitelist (array) — post meta keys that must never be deleted, by the orphaned or the duplicated post meta sweep. * matches any run of characters. Default: empty. wp_sweep_commentmeta_whitelist (array) — the same, for comment meta. wp_sweep_usermeta_whitelist (array) — the same, for user meta. wp_sweep_termmeta_whitelist (array) — the same, for term meta. wp_sweep_excluded_taxonomies (array) — taxonomies left out of the orphaned term relationships sweep. Default: array( 'link_category' ). wp_sweep_excluded_termids (array) — term IDs left out of the unused terms sweep. Default: each taxonomy’s default term, plus any term that is the parent of another. wp_sweep_limit_details (int) — how many items a Details list shows. Default: 500. wp_sweep_defer_counts (bool) — whether the Sweep screen renders first and fetches its counts afterwards, one at a time. Return false to compute every count with the page, as versions before 2.0.1 always did. Default: true. wp_sweep_capability (string $capability, string $context) — the capability required. $context is one of sweep, ajax or rest. wp_sweep_total_count (int $count, string $name) — the total number of rows a sweep’s percentage is measured against. wp_sweep_count (int $count, string $name) — how many items a sweep would remove. wp_sweep_details (array $details, string $name) — the sample list shown by Details. wp_sweep_sweep (string $message, string $name) — the message reported after a sweep has run. Actions wp_sweep_admin_post_sweep, `wp_sweep_admin_comment_sweep`, `wp_sweep_admin_user_sweep`, `wp_sweep_admin_term_sweep`, `wp_sweep_admin_option_sweep` and `wp_sweep_admin_database_sweep` all fire below the sweep table, in that order. Protect specific post meta keys from being swept: add_filter( 'wp_sweep_postmeta_whitelist', function ( $meta_keys ) { $meta_keys[] = '_my_plugin_setting'; $meta_keys[] = '_acme_*'; return $meta_keys; } ); Exclude an additional taxonomy from the orphaned term relationships sweep: add_filter( 'wp_sweep_excluded_taxonomies', function ( $taxonomies ) { $taxonomies[] = 'product_type'; return $taxonomies; } );