Title: InTouch Media Cleaner
Author: intouchdesigndev
Published: <strong>September 27, 2026</strong>
Last modified: September 27, 2026

---

Search plugins

![](https://ps.w.org/intouch-media-cleaner/assets/banner-772x250.png?rev=3715100)

![](https://ps.w.org/intouch-media-cleaner/assets/icon.svg?rev=3715100)

# InTouch Media Cleaner

 By [intouchdesigndev](https://profiles.wordpress.org/intouchdesigndev/)

[Download](https://downloads.wordpress.org/plugin/intouch-media-cleaner.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/intouch-media-cleaner/#description)
 * [Reviews](https://wordpress.org/plugins/intouch-media-cleaner/#reviews)
 *  [Installation](https://wordpress.org/plugins/intouch-media-cleaner/#installation)
 * [Development](https://wordpress.org/plugins/intouch-media-cleaner/#developers)

 [Support](https://wordpress.org/support/plugin/intouch-media-cleaner/)

## Description

InTouch Media Cleaner finds attachments in your Media Library that nothing on the
site references any longer, so you can reclaim the disk space they take up. It is
built around one rule: **it would rather miss an unused image than delete one that
is still in use.**

This plugin is built to fail safe: when its coverage of your site is incomplete —
an unsupported page builder, an offloaded file, a custom field — it says so in plain
language and holds back, instead of producing a confident list that could break 
a live page.

#### What it looks at

 * **Post and 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()`), including
   drafts, trashed posts and revisions.
 * **Structural links** — featured images (`_thumbnail_id`), attachment parents.
 * **Theme** — site icon, custom logo / header / background for every installed 
   theme, Additional CSS.
 * **Full Site Editing** — global styles and block-theme backgrounds.
 * **Widgets** — image, gallery, custom HTML, block widgets.
 * **Navigation menus** — items pointing straight at an attachment or an `uploads/`
   file.
 * **Comments** — `uploads/` URLs mentioned in comment text.
 * **WooCommerce** — product and variation images, product galleries, category /
   brand images, the placeholder and e-mail header images, downloadable files.
 * **Elementor** — images, galleries and background images in Elementor data, page
   and global-kit backgrounds, popups and Theme Builder templates, and the `media`
   dynamic tag.
 * **A deliberately noisy safety sweep** — any value in the options table, or in
   post / term / user meta, that matches a real attachment ID or URL is treated 
   as a reference. This never deletes anything; it only protects.

#### How it keeps you safe

 * **Confidence, not a raw count.** Every candidate gets a score. When site coverage
   is incomplete — an unsupported builder version, a builder with no integration,
   a plugin deactivated in the last 30 days, a scanner that failed — the score for
   _every_ item is capped at 70%, below the default selection threshold of 95%.
 * **The first scan is analysis only.** No deletions are possible until a second
   scan confirms the picture.
 * **Freshly uploaded media is untouchable.** Anything added in the last 14 days
   is never proposed, regardless of score.
 * **Scans expire.** Results older than 7 days require a re-scan before any action.
 * **Soft delete with a real undo.** Deleting moves files to a plugin-managed trash
   with a cooling period; restore brings them back at the _same_ attachment ID, 
   so existing references keep working.
 * **A shown-work coverage panel.** The Scan tab lists what was checked, what was
   skipped or degraded and why, and the classes of reference no scan can ever see(
   images used only in transactional e-mails, generated PDFs, external JavaScript,
   a mobile app, hardcoded in custom PHP, or built by string concatenation).

#### Privacy

The plugin sends nothing off your server. Its only outbound message is a **purge
audit e-mail** to your site’s admin address after files are permanently deleted,
so there is always a trace of what is gone. That e-mail is sent with WordPress’ 
own `wp_mail()`; it carries a manifest (file name, size, SHA-256, reason) as an 
attachment, or — if that is too large — saves the manifest to your site and links
to it from the Logs tab. It can be turned off in the settings. No analytics, no 
telemetry, no external requests.

#### Free and paid

This is the free plugin, and every safety mechanism above is part of it — none of
them are held back for a paid tier. Support for more page builders and field plugins(
Divi, Bricks, Beaver Builder, ACF-aware resolution, a filesystem scan) is planned
for a future paid version.

## Screenshots

[⌊Scan tab — the "Environment & coverage" panel (what ran, what degraded and why)
and the always-on "What a scan cannot see" list.⌉⌊Scan tab — the "Environment & 
coverage" panel (what ran, what degraded and why) and the always-on "What a scan
cannot see" list.⌉[

Scan tab — the “Environment & coverage” panel (what ran, what degraded and why) 
and the always-on “What a scan cannot see” list.

[⌊Results tab — unreferenced media with a per-item confidence score and a "Why?"
breakdown of every source that was checked.⌉⌊Results tab — unreferenced media with
a per-item confidence score and a "Why?" breakdown of every source that was checked
.⌉[

Results tab — unreferenced media with a per-item confidence score and a “Why?” breakdown
of every source that was checked.

[⌊The two-step delete confirmation, with a random sample of items and their reasons
shown before anything is removed.⌉⌊The two-step delete confirmation, with a random
sample of items and their reasons shown before anything is removed.⌉[

The two-step delete confirmation, with a random sample of items and their reasons
shown before anything is removed.

[⌊Trash tab — soft-deleted files inside their cooling period, each restorable to
its original attachment ID.⌉⌊Trash tab — soft-deleted files inside their cooling
period, each restorable to its original attachment ID.⌉[

Trash tab — soft-deleted files inside their cooling period, each restorable to its
original attachment ID.

## Installation

 1. Upload the plugin ZIP through **Plugins  Add New  Upload Plugin**, or extract it
    into `wp-content/plugins/`.
 2. Activate **InTouch Media Cleaner**.
 3. Open **Media Cleaner** in the admin menu and run a scan from the **Scan** tab.
 4. Run a second scan when the first finishes — the first scan is analysis only. Review
    the **Results** tab, check the **Why?** detail on a few rows, then select and delete.
 5. Deleted files sit in the plugin’s trash with a cooling period; restore any of them
    from the **Trash** tab.

## FAQ

### 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 your 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 your Media
Library and the plugin’s own tables untouched. You can opt in to full cleanup in
the settings before uninstalling.

### Does the plugin send my data anywhere?

No. The only message it sends is the purge audit e-mail to your own admin address,
via WordPress’ `wp_mail()`, and only after files are permanently deleted. There 
are no analytics and 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; if your installed
version is outside that range the adapter does not 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 your site is outside what this scan could fully cover — 
for example a builder with no integration, a builder version the adapter was not
tested against, a plugin deactivated within the last 30 days, or a scanner that 
failed. The 70% cap applies to every item in that state, on purpose: it keeps items
out of bulk selection until coverage is complete. The Scan tab’s coverage panel 
names the specific reason.

### Why can’t I delete anything after the first scan?

The first scan is analysis only, by design. Run a second scan; once it confirms 
the results, selection and deletion unlock.

### An image I know is unused is protected. Why?

The safety sweep found its ID or URL somewhere in your options or metadata — often
a stale setting or a plugin’s own record. That is deliberately conservative: it 
protects rather than risk a false positive. You can still protect or unprotect individual
items by hand.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“InTouch Media Cleaner” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ intouchdesigndev ](https://profiles.wordpress.org/intouchdesigndev/)

[Translate “InTouch Media Cleaner” into your language.](https://translate.wordpress.org/projects/wp-plugins/intouch-media-cleaner)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/intouch-media-cleaner/),
check out the [SVN repository](https://plugins.svn.wordpress.org/intouch-media-cleaner/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/intouch-media-cleaner/)
by [RSS](https://plugins.trac.wordpress.org/log/intouch-media-cleaner/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.0

 * First public release.
 * Full core-WordPress coverage: post/page content (blocks, shortcodes, raw HTML,
   drafts, trash, revisions), featured images and attachment parents, theme mods
   and site identity, Full Site Editing global styles, widgets, navigation menus,
   comments, and a level-D safety sweep over options and post/term/user meta.
 * Page-builder coverage: WooCommerce (product and variation images, galleries, 
   category/brand images, placeholder and e-mail header options, downloadable files)
   and Elementor (Elementor data, page and global-kit backgrounds, popups and Theme
   Builder templates, the `media` dynamic tag).
 * Versioned builder detection: an adapter whose target version is outside its tested
   range is not run; the scan is marked degraded and confidence is capped, never
   guessed.
 * Coverage panel in the Scan tab: what was checked, what degraded and why, and 
   the declared classes of reference no scan can see.
 * Anti-false-positive design throughout: 70% confidence cap on incomplete coverage,
   analysis-only first scan, 14-day immunity for recent uploads, 7-day result expiry,
   soft delete with same-ID restore and a cooling period, and a purge audit e-mail
   to the site admin.

## Meta

 *  Version **1.0.0**
 *  Last updated **12 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [attachments](https://wordpress.org/plugins/tags/attachments/)[cleanup](https://wordpress.org/plugins/tags/cleanup/)
   [images](https://wordpress.org/plugins/tags/images/)[media library](https://wordpress.org/plugins/tags/media-library/)
   [unused media](https://wordpress.org/plugins/tags/unused-media/)
 *  [Advanced View](https://wordpress.org/plugins/intouch-media-cleaner/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/intouch-media-cleaner/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/intouch-media-cleaner/reviews/)

## Contributors

 *   [ intouchdesigndev ](https://profiles.wordpress.org/intouchdesigndev/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/intouch-media-cleaner/)