Scans the uploads folder in small resumable steps (no PHP time-limit problems) and classifies every image file:
name-300x200.jpg files whose original is in the Media Library but which WordPress no longer lists.Within every group of same-picture files the plugin keeps (1) the best copy in use (referenced, then registered) and (2) the highest-resolution copy. Other copies are only offered when they are unregistered, unreferenced, not recent, and verified:
References are looked up in posts, post meta, term meta, user meta, settings (options), the active theme’s files and CSS files in uploads. Attachment-level use (featured image, wp-image-ID classes, block and gallery IDs, site icon, logo) is detected as well. Revisions and transients are ignored.
Heavy and oversized images (free): images the site serves that are heavier than 300 KB, larger than 2560 px on their longest side, or PNG files above 500 KB (usually photos in the wrong format), with where they are used.
“Delete” means quarantine: files move to a private folder and can be restored for the retention period (3, 7, 10 or 30 days; default 30), then they are removed automatically. Before every move the file is re-checked against the live site (unchanged, not newly referenced, not registered, kept copy still valid and identical in content). A “check only” pass runs first and shows what would happen.
Part of the Clearyvo plugin family: focused plugins that each check one part of your site and share one “Site Toolkit” menu with a Site health score. The Site Toolkit plugin has every checker in one plugin, switched on one by one; when it is installed, this plugin’s settings and results are shared with it. More at wp-sitechecker.com.
Clearyvo Pro is a separate add-on: the Pro features are its own code, not part of this plugin. One add-on adds the Pro features of every checker; it works with this plugin and with the Site Toolkit plugin.
For every JPEG/PNG the site serves (Media Library images and their sizes, and files found in use) a WebP copy is written next to it (photo.png -> photo.png.webp) and, where the server can write AVIF (WordPress 6.5+ with AVIF support in GD or Imagick), an AVIF copy (photo.png.avif). A copy is kept only when it is at least 10% smaller. Rules in wp-content/uploads/.htaccess give browsers the smallest format they accept (AVIF first, then WebP), at the same address, so posts, pages, page builders and the Media Library are not changed. Browsers that do not accept WebP get the original. The admin page checks from your browser whether the server really sends WebP.
Re-encodes JPEG (quality 60-95, default 82, progressive) and PNG (lossless) files the site serves. A file is replaced only if the new one is at least 5% smaller, opens, has the same pixel size (PNG: a spread of pixels, including transparency, is compared with the original). Before replacing, the original is copied to a protected folder inside the quarantine folder and verified; it stays for the quarantine retention (3, 7, 10 or 30 days). “Undo all compression” puts every original back, and refuses to overwrite a file that was changed after compression.
Left alone, with the reason in the report: JPEGs rotated through EXIF orientation, JPEGs with a colour profile other than sRGB, CMYK JPEGs, PNGs that are palette, grayscale, 16-bit, animated or carry a colour profile, files under 10 KB, files that do not fit the PHP memory limit. EXIF metadata is not kept in compressed JPEGs. The WordPress file size in the attachment data is updated.
When a photo larger than 2560 px is uploaded, WordPress keeps the original next to its “-scaled” copy and uses the copy everywhere. Unused originals can be moved to the quarantine; WordPress then treats the scaled copy as the original (original_image is removed from the attachment data). Restoring the file from the quarantine also puts that link back.
sites/ folders of other sites.wp-content/wpmc-quarantine-*.wpmc_backup_regex: regular expression that decides which folders count as backup folders.Tables and settings are removed. Quarantined files are kept (together with the table that records where they belong) unless WPMC_REMOVE_QUARANTINE_ON_UNINSTALL is defined as true in wp-config.php.