Free WordPress plugin · Unused Image Cleaner

Find unused images in minutes, not hours.

Unused Image Cleaner by Discounly reads your whole site — pages, products, page builders, settings and plugin tables — and lists every Media Library image that nothing uses. You check them, then move them to the Trash.

Free foreverNo Pro versionTrash-only, restorableWordPress 6.2+PHP 7.4+

Version 4.2.0 · 37 KB · GPLv2 · in review for the WordPress.org directory

Discounly Unused Image Cleaner: Scan for unused images

≈ 2 min

to scan 5,105 images and 1.9M database rows

Read-only

scan — nothing changes until you choose

10 at a time

check the results yourself

$0

every feature, no Pro version

The problem

Your Media Library keeps every image you ever uploaded

Replaced product photos, old page designs, duplicate uploads, images from deleted posts. WordPress also makes several resized copies of every upload, so a few thousand images quickly become tens of thousands of files — taking up disk space, bloating backups and making the Media Library hard to work with.

Most cleaners search your database once for every single image. On a large site that is thousands of slow searches, and a scan can run for hours or time out. That is why we built Unused Image Cleaner.

One real site, measured

Scanned in about 2 minutes

5,105images
35,685files on disk
240Kposts
1.9Mcustom-field rows

The solution

One fast pass. Then you decide.

Discounly Unused Image Cleaner reads your database once, builds an index of every image reference, then checks each image against it — and it is strict about what counts as “used”.

  • One read, one pass. The database is read once in chunks; every image is then checked against the index.
  • Full paths, not just names. 2023/05/banner.png and 2021/02/banner.png are different images.
  • Every size counts. A page that shows photo-300x200.jpg keeps photo.jpg. Scaled and edited versions are recognised.
  • Numbers only count where an image ID belongs — image fields, galleries, blocks. Quiz IDs, prices and view counts are ignored.
  • Live content only. Old revisions and trashed posts don’t keep an image; drafts, private and scheduled posts do.
  • When in doubt, it keeps the image. Caches and old cleaner catalogs that list every file are not treated as real use.

How it works

How Unused Image Cleaner works in four steps

Everything in Unused Image Cleaner happens under Media → Unused Images. You see every result before anything is removed.

01

Scan

One click. The scan reads every place your site can use an image and lists the images nothing points to. It only reads — nothing is changed.

Discounly Unused Image Cleaner: Scan for unused images
02

Check them, 10 at a time

See a preview, path, size and upload date for 10 images at a time, picked from across the whole list, with links to the image and its Media Library page.

Discounly Unused Image Cleaner: Check unused images 10 at a time
03

Ask “Where is it used?”

Type any image ID, file name or URL. You get every place it is used, with links — from the last scan plus a live re-check of pages, products and settings.

Discounly Unused Image Cleaner: Where is it used? lookup
04

Move to Trash

The full list, largest first, with a CSV download. Removal always goes to the Trash, each file is re-checked right before it moves, and you can restore anything.

Discounly Unused Image Cleaner: Full list of unused images with CSV export

Where it looks

Every place WordPress can use an image

If Unused Image Cleaner finds an image in any of these places, the image is kept.

Posts, pages & products

Content, excerpts and editor data, including Web Stories.

Page builders & custom fields

Elementor and any builder that stores JSON or serialized data.

Featured images & galleries

WooCommerce product galleries, category and tag images.

Theme & site settings

Customizer, site logo and icon, widgets and plugin settings.

Other plugin tables

LearnDash quiz questions and any plugin’s own database tables.

Users, comments & reviews

User profiles, comments and product reviews.

Theme & CSS files

Theme files, must-use plugins and generated Elementor and Astra CSS.

Media that uses media

A video’s poster or a file’s featured image.

Built for big sites

Minutes, not hours

Scanners that search the database once for every image slow down badly as a site grows. Unused Image Cleaner reads your database once, about 20 seconds per request, builds an index of every image reference, then checks each image against it in a single pass. Close the tab and the scan picks up where it left off.

One pass20-second stepsResumableRuns only when you click Scan

Full scan, measured

≈ 2 MIN

5,105 images · 1.9M rows

Safe by design

You stay in control

Unused Image Cleaner is built so a mistake is always reversible.

Scanning only reads

Nothing on your site changes until you choose to move images to the Trash.

Trash first, always

Restore from the plugin’s own Trash view. It refuses to run if your site’s Trash is turned off.

Re-checked before it moves

Each file is fingerprinted during the scan. A file that changed since then is skipped.

Nothing leaves your site

No external requests, no tracking, no account. Uninstalling removes its own tables.

Get started

Install Unused Image Cleaner in three steps

01

Download the zip

Fill in the short form below — the download starts as soon as you submit. It will also be in the WordPress.org plugin directory once its review is complete.

02

Upload & activate

In WordPress go to Plugins → Add New → Upload Plugin, choose the zip, then click Activate.

03

Scan

Open Media → Unused Images and click “Scan for unused images”. Keep a recent backup before removing anything.

Pricing

Everything free. No catch.

Unused Image Cleaner has no Pro version, no limits on how many images you can scan or clean, no licence key and no ads. Every feature on this page is in the free download.

  • Fast one-pass scan
  • 10-at-a-time review
  • “Where is it used?” for any image
  • CSV export of the full list
  • Trash view with restore
  • Updates included
$0
FREE FOREVER

Discounly Unused Image Cleaner 4.2.0 · WordPress 6.2+ · PHP 7.4+ · GPLv2

Like it? Our nine WooCommerce plugins open on Black Friday — see them →

FAQ

Questions, answered

Does Unused Image Cleaner change anything on my site?

No. Unused Image Cleaner only reads your site while it scans. Nothing changes until you choose to move images to the Trash.

Is it safe to delete what it finds?

The plugin is careful and keeps an image whenever it isn’t sure, but no scanner can see images used outside your site — in emails, newsletters, social posts or other websites. Use “Where is it used?” and the 10-at-a-time check, keep a recent backup, and move images to the Trash rather than deleting them.

Where do trashed images go? Can I get them back?

They go to the WordPress Trash. Open View Trash on the plugin page to restore them or delete them permanently. WordPress empties the Trash automatically after 30 days (the EMPTY_TRASH_DAYS setting). If your site has the Trash turned off, the plugin refuses to move images, because they would be deleted permanently.

How fast is Unused Image Cleaner on a large site?

On a real site with 5,105 images (35,685 image files including resized copies), 240,000 posts and 1.9 million custom-field rows, a full scan took about 2 minutes. The scan reads your database once in chunks and checks every image against an index in one pass.

Will the scan slow my site down?

The scan runs only when you click Scan, one request at a time, and only while the page is open. Each request works for up to about 20 seconds. To make requests shorter, add define( 'DISCOUNLY_UIC_STEP_SECONDS', 10 ); to wp-config.php.

Does it work with Elementor and other page builders?

Yes. It reads the data Elementor and similar builders store — JSON and serialized settings, including image IDs and URLs. Other builders that store image URLs or IDs in post content or custom fields are covered by the same rules.

Why are photo.jpg and photo.webp treated separately?

They are separate uploads in your Media Library. If a page shows photo.webp, the separate photo.jpg upload is not used by that page. Copies made automatically by WebP converters (photo.jpg.webp) are recognised as belonging to the original.

Is Unused Image Cleaner really free? Is there a Pro version?

Yes, Unused Image Cleaner is completely free: no Pro version, no limits on how many images you scan or clean, no licence key and no ads. The plugin itself sends no data anywhere — the download form only asks where to send plugin updates.

Does it support multisite?

It scans the current site only. Network-wide scanning is not supported yet.

Free download

Get Unused Image Cleaner — free

Tell us where to send plugin updates. The zip downloads straight away when you submit.

Version 4.2.0 · 37 KB · WordPress 6.2+ · PHP 7.4+
We only email you about this plugin and Discounly news. No spam.

Shopping Cart
Scroll to Top