Dev InTouchDesign LogoDev InTouchDesign

InTouch Media Cleaner

Find images nothing uses anymore, and delete them without ever breaking a page: every deletion has a one-click restore behind it.

InTouch Media Cleaner finds attachments in the WordPress Media Library that nothing on the site references any longer, so you can reclaim the disk space they take up. It runs on one rule: it would rather miss an unused image than delete one still in use. Most media cleaner plugins scan whatever they understand and hand you a list; when they don't recognize a page builder, an offloaded file, or a custom field, they skip it, and the risk lands on you. This plugin takes the opposite approach. When its coverage of a site is incomplete, it says so in plain language and holds back, instead of producing a confident list that could break a live page.

  1. 1

    Activate

    Upload the plugin and activate it from the Plugins screen.

  2. 2

    Scan

    Open Media Cleaner in the admin menu and run a scan from the Scan tab.

  3. 3

    Review & delete

    Run a second scan once the first finishes: the first scan is analysis only. Check the "Why?" detail on a few rows in the Results tab, then select and delete.

  4. 4

    Restore if needed

    Deleted files sit in the plugin's trash with a cooling period. Restore any of them from the Trash tab, at their original attachment ID.

  • WordPress 6.2 or higher (tested up to 7.1)
  • PHP 7.4 or higher

Supported page builders in this version: WooCommerce and Elementor, alongside full core-WordPress coverage.

  • Confidence score on every candidate, capped at 70% whenever site coverage is incomplete
  • First scan is analysis only: no deletions until a second scan confirms the picture
  • Freshly uploaded media is untouchable for 14 days, regardless of score
  • Scan results expire after 7 days and require a re-scan before any action
  • Soft delete with a cooling period: restore brings a file back at its original attachment ID
  • A shown-work coverage panel lists what was checked, what degraded, and what no scan can ever see

Post & Page Content

  • Gutenberg blocks: image, gallery, cover, media-text, video, file
  • Classic shortcodes: [gallery], [playlist], [caption]
  • Raw HTML: wp-image-N classes, src/href/srcset, inline CSS url()
  • Drafts, trashed posts, and revisions, not just published pages

Structural Links & Theme

  • Featured images and attachment parents
  • Site icon, custom logo, header, and background for every installed theme
  • Additional CSS, plus Full Site Editing global styles and block-theme backgrounds

Widgets, Menus & Comments

  • Image, gallery, custom HTML, and block widgets
  • Navigation menu items pointing straight at an attachment or an uploads file
  • uploads URLs mentioned in comment text

WooCommerce

  • Product and variation images, and product galleries
  • Category and brand images
  • The placeholder image, e-mail header image, and downloadable files

Elementor

  • Images, galleries, and background images inside Elementor data
  • Page and global-kit backgrounds
  • Popups, Theme Builder templates, and the media dynamic tag

The Safety Sweep

  • Any value in the options table, or in post, term, or user meta, that matches a real attachment ID or URL is treated as a reference
  • Deliberately noisy: this sweep never deletes anything, it only protects

Can it delete an image that is still being used?

That is the exact failure it is designed to avoid. Level-D protection (the noisy safety sweep) is on by default, the first scan cannot delete anything, freshly uploaded media is excluded, and whenever coverage of the site is incomplete every score is capped below the selection threshold. If it is not sure, it protects the image and tells you why.

Does uninstalling the plugin delete my media or my scan history?

No. "Purge on uninstall" is off by default: removing the plugin leaves the Media Library and the plugin's own tables untouched. Full cleanup is opt-in from the settings before uninstalling.

Does the plugin send my data anywhere?

No. The only message it sends is the purge audit e-mail to the site's own admin address, only after files are permanently deleted. No analytics, no external requests.

Which page builders does it support?

WooCommerce and Elementor in this version, in addition to full core-WordPress coverage. Each builder adapter declares the versions it was tested against; outside that range the adapter doesn't run and the coverage panel marks the scan as degraded rather than guessing. More builders are planned for a future paid version.

Why does the Results tab say "70% confidence" or "coverage: degraded"?

Because something about the site is outside what the scan could fully cover: a builder with no integration, an untested builder version, a plugin deactivated within the last 30 days, or a failed scanner. The 70% cap keeps items out of bulk selection until coverage is complete. The coverage panel names the specific reason.

Why can't I delete anything after the first scan?

The first scan is analysis only, by design. A second scan unlocks selection and deletion once it confirms the results.

An image I know is unused is protected. Why?

The safety sweep found its ID or URL somewhere in the options or metadata table, often a stale setting or a plugin's own record. Deliberately conservative: it protects rather than risking a false positive. Items can still be protected or unprotected by hand.

PriceFreeGPL-licensed, no license key. Coming soon to WordPress.org.

Not released yet. Leave your email and we'll let you know when it's available to download.

Your registration could not be validated.
You're on the list. We'll email you when InTouch Media Cleaner launches.