Title: Elinweb Unused Media Finder
Author: Iman Shadmehri
Published: <strong>November 8, 2026</strong>
Last modified: November 8, 2026

---

Search plugins

![](https://ps.w.org/elinweb-unused-media-finder/assets/banner-772x250.png?rev=3791492)

![](https://ps.w.org/elinweb-unused-media-finder/assets/icon-256x256.png?rev=3791492)

# Elinweb Unused Media Finder

 By [Iman Shadmehri](https://profiles.wordpress.org/imansh/)

[Download](https://downloads.wordpress.org/plugin/elinweb-unused-media-finder.0.9.4.zip)

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

 [Support](https://wordpress.org/support/plugin/elinweb-unused-media-finder/)

## Description

Elinweb Unused Media Finder scans your site and tells you which files in the Media
Library are not used anywhere, where the others are used, and which files are exact
duplicates. Then it helps you remove them with less risk.

A permanent delete removes the files from the server, so the plugin is built around
caution: quarantine first (reversible), delete later, and refuse to continue when
a scan looks wrong. No scan can see every use of a file, so keep a backup and quarantine
before you delete.

**What it does**

 * **Scan.** The database (posts, meta, options, terms, users, comments, plugin 
   tables) and, if you choose, the code of the active theme and plugins plus CSS/
   JS inside uploads.
 * **Recognises how media is referenced.** URLs (with size suffixes, `-scaled`, 
   WebP, URL-encoded, `\u`-escaped, HTML entities, Unicode-normalised), ids (featured
   image, galleries, blocks, shortcodes), Elementor (loops, dynamic tags, V4), ACF/
   Secure Custom Fields, Meta Box, Pods, JetEngine, WooCommerce, Gravity Forms, 
   Fluent Forms, WPForms, Contact Form 7 and Smart Slider.
 * **Live updates.** After one full scan, saves in the admin are recorded without
   scanning again.
 * **Media Library integration.** A “Usage” column and filter in list and grid mode,
   and a dialog showing every place a file is used.
 * **Unreferenced list.** Card or list view, 20 to 500 items per page, preview, 
   filter by type, sort by size or date.
 * **Duplicates.** Files with identical content that were uploaded more than once.
   Sizes are compared first and only same-size files are hashed (MD5), so large 
   libraries stay light. Attachments that share one file (media translations) are
   not duplicates, and only unreferenced copies can be selected. An option adds 
   the extra files on disk, to catch stray copies of library files.
 * **Quarantine.** Moves a file (all sizes and WebP copies) out of its public path
   into a closed folder, but still answers requests for the old URL and logs them.
   If nothing asks for it for a few weeks, delete it; if something does, restore
   it with one click.
 * **Extra files.** Leftover sizes and files on disk that no media item owns, with
   a preview, the full server path, and a ZIP download of the selection.
 * **Unregistered sizes.** Files generated for image sizes that no theme or plugin
   registers any more.
 * **Safety.** A scan that reports a featured image as unreferenced is marked untrustworthy
   and quarantine and delete are refused. Attachments sharing one file move together.
 * **WP-CLI.** `wp elinweb-unused-media-finder scan|status|unused|usage|quarantine
   |restore|delete|keep`

**What it cannot see**

Use outside your site (newsletters, social networks, other sites hotlinking a file)
cannot be detected. That is why quarantine exists. Always take a backup before deleting.

**Languages**

English and Persian (fa_IR).

## Screenshots

[⌊Unreferenced media: preview, keep, quarantine or delete, in card or list view.⌉⌊
Unreferenced media: preview, keep, quarantine or delete, in card or list view.⌉[

Unreferenced media: preview, keep, quarantine or delete, in card or list view.

[⌊Duplicates: files with identical content, with the option to include extra files.⌉⌊
Duplicates: files with identical content, with the option to include extra files
.⌉[

Duplicates: files with identical content, with the option to include extra files.

[⌊Extra files: files on disk that no media item owns, with full path, preview and
ZIP download.⌉⌊Extra files: files on disk that no media item owns, with full path,
preview and ZIP download.⌉[

Extra files: files on disk that no media item owns, with full path, preview and 
ZIP download.

[⌊Unregistered sizes: thumbnails of image sizes that nothing registers any more.⌉⌊
Unregistered sizes: thumbnails of image sizes that nothing registers any more.⌉[

Unregistered sizes: thumbnails of image sizes that nothing registers any more.

[⌊Scan: a full scan of the database, plugin tables and source code, with progress.⌉⌊
Scan: a full scan of the database, plugin tables and source code, with progress.⌉[

Scan: a full scan of the database, plugin tables and source code, with progress.

## Installation

 1. Upload the plugin folder to `/wp-content/plugins/`, or install it from the Plugins
    screen.
 2. Activate it.
 3. Go to **Media  Unused Media Finder  Scan** and run a “Database + source code” scan.
 4. Review the **Unreferenced** tab. Quarantine, wait, then delete.

## FAQ

### Will it delete anything on its own?

No. Nothing is quarantined or deleted unless you select items and press the button.

### Is quarantine really safe?

A quarantined file is still served for its old URL, so pages that still use it keep
working, and the request is logged so you can see it. One caveat: if your server
answers requests for missing image files itself (an nginx or LiteSpeed rule, or 
a CDN), WordPress never sees them, the file returns a 404 and nothing is logged.
The plugin tests this and warns you on the Quarantine tab.

### What data does it store?

It has no settings page. It creates up to five tables (`mtrk_refs`, `mtrk_paths`,`
mtrk_files`, `mtrk_hashes`, and `mtrk_xhashes` while a duplicates check includes
extra files), a few options prefixed `mtrk_`, the post meta `_mtrk_quarantine` and`
_mtrk_keep`, and the user meta `mtrk_per_page` and `mtrk_view`. For quarantined 
files it logs the time, referring URL and user agent of each request, locally in
the database. Nothing is sent to any other server.

### What happens when I uninstall it?

Quarantined files are moved back to their original place first, then the tables,
options and meta above are removed. A file that cannot go back (its original path
is taken again, or the folder is not writable) is not deleted: it stays in the `
mtrk-quarantine-…` folder inside the uploads folder for you to handle. Deactivating
keeps everything.

### Does it work on multisite?

It has only been tested on single sites. Uninstall cleanup does not handle every
site of a network yet.

### A file is listed as used but I know it is not.

Open “Where it is used”. Tables of plugins you removed long ago and caches (for 
example Yoast’s indexable tables) can mention a file without using it. Logs and 
well-known caches are skipped; if you find another one, please report it.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Elinweb Unused Media Finder” is open source software. The following people have
contributed to this plugin.

Contributors

 *   [ Iman Shadmehri ](https://profiles.wordpress.org/imansh/)

[Translate “Elinweb Unused Media Finder” into your language.](https://translate.wordpress.org/projects/wp-plugins/elinweb-unused-media-finder)

### Interested in development?

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

## Changelog

#### 0.9.4

 * The per-page and view choices on the plugin’s screen are only remembered when
   they come from its own filter form (nonce plus capability check); a link without
   the nonce shows the list as asked but saves nothing.
 * Every AJAX handler checks its nonce and the user’s capability itself.
 * Page links of the lists no longer carry the screen nonce or repeat the last action’s
   notice.

#### 0.9.3

 * Renamed from “Elin Media Tracker” to “Elinweb Unused Media Finder”. The WP-CLI
   command is now `wp elinweb-unused-media-finder`.
 * The “Where it is used” dialog escapes every label and title it shows.
 * Uninstall never deletes a quarantined file it could not move back; restore keeps
   such a file in quarantine.
 * Readme: no absolute claims about deleting or about pages never breaking.

#### 0.9.2

 * Screenshots added to the plugin page.

#### 0.9.1

 * Passes the Plugin Check plugin without errors: added missing translator comments,
   sanitized the request headers read by the quarantine, and documented why the 
   plugin’s own SQL is built the way it is.
 * Fixed: on PHP older than 8.2 with a single-byte locale (common on Windows), non-
   Latin file names such as Persian ones were corrupted while indexing, so the scan
   refused to start.
 * The bundled Persian translation now loads through WordPress itself (6.5 and later);
   the manual load call is gone.

#### 0.9.0

 * Extra files: “Download selected as ZIP” (up to 200 MB per ZIP; only files the
   plugin lists as extra can be included).

#### 0.8.1

 * Fixed: the “Where it is used” dialog failed with “Could not reach the server”
   when a media item was referenced by a term, user or comment without an edit screen.
   If something else breaks there, the dialog now shows the real error.

#### 0.8.0

 * Duplicates: an option to also compare extra files, so stray copies of library
   files (FTP uploads, imports) show up in their group. Extra files can be previewed
   and deleted there.
 * The “Outside the library” label now reads “No media item owns this file”.

#### 0.7.3

 * Extra files and Unregistered sizes keep their last result while you move between
   tabs of the plugin page (per browser tab, until the next scan), with the time
   it was checked.

#### 0.7.2

 * Extra files: a modal preview (image, audio, video) for every file, with the full
   server path and an “Open in a new tab” link.

#### 0.7.1

 * Extra files show the full server path and an “Open in a new tab” link.
 * Cover art listed in audio/video metadata is no longer reported as an extra file.

#### 0.7.0

 * The interface source language is now English, with a bundled Persian (fa_IR) 
   translation.
 * Prepared for the WordPress.org directory: readme.txt, plugin header, translation
   template.

#### 0.6.1

 * Yoast indexable tables and the Titan scanner option no longer count as usage.

#### 0.6.0

 * New Duplicates tab.
 * List view and a per-page choice (20, 40, 100, 200, 500) for the unreferenced 
   list.
 * Release script.

#### 0.5.1

 * Aparat poster ids are recognised.
 * A scan that loses featured images is marked untrustworthy and deletion is refused.

#### 0.5.0

 * An attachments index instead of an in-memory map, so scans use little memory 
   on large libraries.

## Meta

 *  Version **0.9.4**
 *  Last updated **10 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [cleanup](https://wordpress.org/plugins/tags/cleanup/)[duplicate images](https://wordpress.org/plugins/tags/duplicate-images/)
   [media library](https://wordpress.org/plugins/tags/media-library/)[storage](https://wordpress.org/plugins/tags/storage/)
   [unused media](https://wordpress.org/plugins/tags/unused-media/)
 *  [Advanced View](https://wordpress.org/plugins/elinweb-unused-media-finder/advanced/)

## Ratings

No reviews have been submitted yet.

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

[See all reviews](https://wordpress.org/support/plugin/elinweb-unused-media-finder/reviews/)

## Contributors

 *   [ Iman Shadmehri ](https://profiles.wordpress.org/imansh/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/elinweb-unused-media-finder/)