Media forensics for content editors

The library only grows. Nobody knows what's safe to delete.

WP Media Audit works it out properly: every image checked against content, blocks, featured images, Elementor data and ACF fields — then the unused pile, the duplicates and the oversized originals land in one scored audit, with cleanup that goes to the restorable trash.

FROM $49/YEAR · LIFETIME OPTION · 14-DAY GUARANTEE

Usage proven, not guessed — content, Elementor, ACF, settings Duplicates by content hash — renamed copies caught Trash-first cleanup — re-verified, restorable Report, CSV & email digest (Pro)
“Fourteen hundred images. We recognised maybe two hundred. Nobody would delete anything, because nobody could say what was safe — so we bought more storage instead.”
— Every media library, eventually

Deleting blind breaks pages; keeping everything costs disk, backups and migrations forever. The missing piece is proof of usage — which is precisely the tedious, look-everywhere job software should do. WP Media Audit checks everywhere references actually live, and shows its reasoning per image.

How it works

Prove usage. Then clean with confidence.

One scan inventories every image and resolves what actually references it. Everything after that — the score, the findings, the cleanup — stands on that evidence, and every finding links straight to the affected images.

RESOLVE

Usage detection that looks everywhere

Featured images, classic and block content, [gallery] shortcodes, upload URLs (size-suffix normalised), post meta at large — including Elementor page data — plus site icon and logo, theme settings, widgets and term images. Detection over-captures by design: when in doubt, an image counts as used, so the unused list errs safe.

VERIFY

ACF fields without false alarms

ACF stores image fields as bare numbers — naive matching would count a price of 70 as a reference to attachment 70. The scanner only counts numbers verified through ACF's own field-key twin, so custom-field references are caught and coincidences never are.

LIST

Every finding, one click from the images

“178 images in use have no alt text” is a claim; the filtered library behind it — thumbnails, dimensions, weights, per-image “used by” reasons, edit links — is the evidence. Every finding carries a see-the-images link, and the tiles on the Overview are filters too.

MATCH

Duplicates by content, not filename

Byte-identical files grouped by hash — the re-upload with a different name is caught. Each set shows a suggested keeper (a used copy when one exists) and the reclaimable bytes; the unused extras can be trashed in one go while keepers stay put.

WEIGH

Oversized originals — including the hidden ones

WordPress quietly scales huge uploads and serves the smaller copy — but keeps the camera original on disk forever. The audit judges the kept original's dimensions and size, because that's what your storage and backups actually pay for. Thresholds are yours to set.

CLEAN

Trash-first cleanup, re-verified — Pro

Trash everything unused, one image, or just the unused duplicate copies. Every image is re-checked as still-unused at the moment of trashing — the scan is a preview, never the authority. Batches are logged and restorable in one click; the plugin never deletes a file itself.

REPORT

White-label report, PDF & CSV — Pro

The whole audit as a branded A4 report — your name, logo, colour and footer note — printable or as a true PDF download, plus a full-inventory CSV for the spreadsheet crowd. Made for the “here's what we found, here's the plan” conversation.

WATCH

Weekly or monthly email digest — Pro

A scheduled scan that emails the score, what changed since the last digest, and the top findings — Mondays at 8 or the 1st of the month, your call. Self-healing schedule, with a send-now button for hosts where WP-Cron never fires.

Who it's for

Every library with history.

The ten-year blog

Thousands of uploads, hundreds of drafts that never published. The unused filter shows exactly what nothing references — with the reasoning per image, not a leap of faith.

The inherited site

You took over; the library is an attic. One scan turns it into an inventory with a score — and the white-label report turns that into the kick-off deliverable.

The eternal re-uploader

The same logo uploaded eleven times under eleven names. Content-hash matching finds every copy, keeps the one in use, and trashes the rest — restorably.

The storage bill

Hosting and backups price by the gigabyte, and camera originals are the heaviest thing on most sites. The oversized view shows exactly where the weight is — including the originals WordPress hides behind scaled copies.

?The accessibility pass

“Add alt text” is easier when you know which images are actually live. Missing alt is split by in-use, one click from the filtered list — and WP Media SEO can write them automatically.

The Elementor site

Half your images live inside Elementor data, invisible to naive cleaners. This scan reads the ids and URLs inside the JSON — an Elementor-built page protects its images like any other.

The audit

Anatomy of one library, accounted for.

AThe weight line

The library before and after — real bytes including every thumbnail size, not estimates. The after-figure is measured by re-scanning, not promised.

BThe findings

Unused, duplicates, oversized, missing alt — each with counts, weights and a link to the exact images. The “price of 70” row is the point: verified references only, no false alarms.

CThe cleanup — Pro

Everything unused to the trash, each image re-verified at that moment. Files stay on disk; batches restore in one click. The plugin never deletes a file itself.

DThe score

0–100 from the evidence: unused weight, duplicates, oversized, alt coverage. Clean up, re-scan, watch it move — and let the digest keep watch after.

Honest comparison

How we compare to the alternatives.

The usual responses to a bloated library: a cleaner-style plugin, doing it by hand, or buying more storage. Here's the honest breakdown against the strongest of them.

WP Media Audit (us)Cleaner-style plugins
Checks Elementor page data✓ Ids AND urls inside the JSON◐ Varies — a classic breakage source
ACF fields without false alarms✓ Twin-verified — coincidences never count◐ Naive number-matching is common
Shows WHY an image counts as used✓ Per-image reasons in the library✗ Used/unused verdict only
Re-verifies before deleting✓ At the moment of trashing◐ Usually acts on the stored scan
Trash-first, restorable✓ Batches logged, one-click restore◐ Some trash, some delete outright
Duplicates by content hash✓ Renamed copies caught, keeper kept◐ Often a separate plugin
Judges the KEPT camera originals✓ The -scaled trick is accounted for✗ Rarely surfaced
Alt-text audit split by in-use✓ With edit links per image✗ Not their job
Client-ready deliverable✓ White-label report + PDF + CSV (Pro)✗ Settings pages don't present well
Keeps watch afterwards✓ Weekly/monthly digest with deltas (Pro)✗ One-off cleanups
Free to run✗ Pro from $49/yr (free: complete diagnosis)◐ Free cores, paid for the useful bits

Credit where due: the established cleaner plugins have been at this for years and handle the common cases. The differences that matter are trust differences — shown reasoning, twin-verified ACF, re-verification at delete time, trash-first always. Full comparison →

Pricing

Simple prices. One is forever.

Every plan includes every Pro feature — the cleanup with restore, duplicate handling, CSV export, white-label report with PDF, and the email digest. You're only choosing how many sites.

10 Sites
$49/yr

Up to 10 sites

  • All features included
  • Updates & support for a year
  • 14-day guarantee
Choose 10 Sites
Agency
$99/yr

25 sites · for agencies

  • All features included
  • Updates & support for a year
  • 14-day guarantee
Choose Agency
100 Sites
$149/yr

Up to 100 sites

  • All features included
  • Updates & support for a year
  • 14-day guarantee
Choose 100 Sites
Lifetime
$599 once

Up to 100 sites, forever

  • All features, all future updates
  • Never renew, never re-buy
  • 14-day guarantee
Own it forever

Prices in USD. Licence keys are domain-based — no accounts, no phoning home. The free edition (complete diagnosis) is included with every order for staging sites. VAT invoices available.

Questions

Asked and answered.

How does it know an image is actually unused?

It resolves usage everywhere references really live: featured images (with the owning post verified live), classic and block content (wp-image classes, image and gallery block ids, [gallery] shortcodes, upload URLs — normalised so photo-300x200.jpg matches photo.jpg), post meta at large including Elementor's page data (both image ids and URLs inside the JSON), ACF image and gallery fields, the site icon and logo, theme settings, widgets and term images like product-category thumbnails. Detection deliberately over-captures: when in doubt, an image counts as used. The unused list is the one you act on, so it errs on the safe side.

How are ACF fields handled without false alarms?

ACF stores an image field as a bare number, which is dangerous to match naively — a price of 70 must not count as a reference to attachment 70. The scanner uses ACF's own signature: every real ACF value has an invisible twin row whose value starts with "field_". Only twin-verified numbers (and id arrays) count. That one rule is the difference between an audit you can trust and one that guesses.

Is deleting from the audit safe?

Safer than any alternative we know of, for three reasons. One: nothing is ever deleted — cleanup moves images to the WordPress trash, files stay on disk, and every batch is restorable in one click until WordPress empties its own bin (default 30 days). Two: every image is re-verified as still-unused at the moment of trashing — the scan is a preview, never the authority. Three: detection over-captures, so the unused list is conservative. The honest limit: a plugin storing references in a format the scan has never seen would not be counted — which is exactly why cleanup is trash-first instead of a delete button.

What counts as a duplicate?

Byte-identical file content, matched by hash — not filename, so hero-final.jpg and hero-final-v2-actually-final.jpg are caught when they're the same file. Each set shows a suggested keeper (a used copy when one exists) and the reclaimable weight; one click trashes the unused extras and leaves keepers and anything in use alone.

What does "oversized" mean here?

Over your thresholds — by default 2560px on either side (WordPress's own big-image limit) or 800 KB on the original file. The subtle part: WordPress silently scales huge uploads down and serves the scaled copy, but keeps the camera original on disk forever. The audit judges the KEPT original, because that's what actually sits in your storage and backups.

What about images missing alt text?

Every image without alt text is listed, split by whether it's actually in use — 70 missing-alt images matter differently when 40 of them are live on the site. Each finding links straight to the filtered list with thumbnails and edit links. And if you want alt text written automatically on upload (and retro-fitted across the library), that's our WP Media SEO plugin — the two are built to work together.

What's the difference between "unattached" and "unused"?

Attachment is only WordPress's upload bookkeeping — which post an image was uploaded to. An unattached image can be used all over the site, and an attached one can be referenced by nothing. Most cleanup tools conflate the two; this audit keeps them separate and combines them properly: unattached AND unreferenced is the strongest deletion signal.

What's in the free edition, and what does Pro add?

Free is the complete diagnosis: the scan, usage detection everywhere it looks, the 0–100 score, every finding with one-click links to the affected images, the filterable library with thumbnails and per-image "used by" reasons, and the duplicates view. Pro adds acting on it: trash-all-unused, per-image and duplicate cleanup with re-verification and restore, the CSV export, the white-label report (your name, logo, colour, footer) with true PDF download, and the weekly or monthly email digest with change-since-last-digest deltas.

How is the licence delivered?

Order through the form and your licence key and invoice arrive by email, usually within the hour. Keys are long codes starting VPC1. — paste the whole thing into the licence textarea rather than typing it. Domain-based, no account, no phoning home, no lock-in.

What if it's not for me?

14-day money-back guarantee, no questions. Email us and we refund you.

Get started

Your library already knows what it's hoarding.

Order below and your licence key and invoice arrive by email — usually within the hour. Install it, scan, and twenty minutes from now you'll know exactly what's unused, what's duplicated, and what it all weighs — with the cleanup one re-verified click away.

14-DAY MONEY-BACK GUARANTEE · SUPPORT BY ACTUAL HUMANS

You'll receive an invoice by email — pay by card or bank transfer. Nothing is charged on this page.