About this plugin
Your uploads folder is bigger than it needs to be. Images uploaded twice, copies left behind by old themes and page builders, thumbnail sizes WordPress no longer uses, backup folders and full-size originals nobody sees. They fill your hosting space, make every backup slower and larger, and are hard to find by hand.
Clearyvo Media Cleanup finds these files, shows you exactly why each one can go, and moves only the ones you choose to a restorable quarantine. Nothing is deleted straight away: if anything is missing, put it back with one click.
What it finds
- Duplicate images – byte-for-byte identical copies of a picture that stays.
- Look-alike copies – the same picture saved again at the same or a lower resolution, confirmed by a strict picture comparison.
- Unused thumbnail sizes – old photo-300x200.jpg files left behind after a theme change or thumbnail regeneration, which WordPress no longer lists.
- Backup folders – images in old, backup or archive folders inside uploads.
- Full-size originals – the large originals WordPress keeps next to its 2560 px “-scaled” copy.
- Heavy and oversized images – files above 300 KB, larger than 2560 px, or PNG photos above 500 KB, with the pages they are used on, so you know what slows your pages down.
Safe by design
- Images in the Media Library are never moved. Registered duplicates are only listed.
- Every use is checked – posts, pages, products, custom fields, page builder data, settings, widgets, the active theme’s files and CSS, featured images, galleries, block IDs, the site icon and the logo.
- A check-only pass runs first and shows what would happen.
- Right before every move each file is checked again against the live site.
- Quarantine instead of delete – restore any file for 3, 7, 10 or 30 days (you choose); only then is it removed for good.
Works on any host
The scan runs in short, resumable steps while the page is open, so it finishes on shared hosting and on libraries with tens of thousands of images, without PHP time-limit errors. Visitors are not affected.
Part of the Clearyvo family
Focused plugins that each check one part of your site and share one Site Toolkit menu with a Site health score: broken links, SEO, PDFs, database cleanup, backups, speed and more. The Site Toolkit plugin has every checker in one plugin. com.
How it works
Every image file in uploads is classified: Media Library originals, registered sizes, pre-scaling originals and image-editor backups (never moved); orphan sizes; files in backup folders; plugin-managed folders and WebP/AVIF copies (never touched); and unregistered files.
Within every group of same-picture files the plugin keeps the best copy in use (referenced, then registered) and the highest-resolution copy. Other copies are only offered when they are unregistered, unreferenced, not recent and verified: identical copies by SHA-256, look-alikes by a two-stage picture comparison (16×16 prefilter, then a strict 32×32 comparison). Anything that does not pass is listed as “unverified” and cannot be quarantined.
Limitations
- Image names that plugin code builds on the fly cannot be seen. Plugin folders and plugin-generated images are therefore left alone, and every move goes to the quarantine first.
- Plugin files (other than the active theme and CSS in uploads) are not searched for references.
- If theme files could not be read, quarantine is disabled until a scan completes cleanly. A scan older than 3 days must be repeated before quarantining.
- Visual comparison needs PHP GD (exact duplicates and orphan sizes work without it) and 64-bit PHP.
- Multisite: each site scans its own uploads folder; the main site skips the sites/ folders.
- The quarantine folder is inside wp-content (random name, protected with.htaccess/web.config). On Nginx add a deny rule for wp-content/wpmc-quarantine-*.
For developers
- Filter wpmc_backup_regex: the regular expression that decides which folders count as backup folders.
- On uninstall, tables and settings are removed. Quarantined files are kept (with the table that records where they belong) unless WPMC_REMOVE_QUARANTINE_ON_UNINSTALL is defined as true in wp-config.php.