Title: Media File Fixer
Author: potensdigital
Published: <strong>November 11, 2026</strong>
Last modified: November 11, 2026

---

Search plugins

![](https://ps.w.org/media-file-fixer/assets/banner-772x250.png?rev=3796370)

![](https://ps.w.org/media-file-fixer/assets/icon-256x256.png?rev=3796370)

# Media File Fixer

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

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

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

 [Support](https://wordpress.org/support/plugin/media-file-fixer/)

## Description

Broken media is hard to find and risky to fix. An image disappears from a page, 
a thumbnail stops loading, a PDF link goes dead — and the usual advice is to run
a search-and-replace across your database and hope for the best.

Media File Fixer takes the opposite approach. It scans what your site actually stores,
tells you which media files are missing or at risk, explains **why** each one is
broken in plain language, shows you **every place** it is used, and then repairs
it in a way you can preview beforehand and undo afterwards.

#### How it works

 1. **Detect** — you start a batched, resumable scan that reads your posts, pages, 
    featured images, Elementor Image widgets and Media Library, and records every media
    reference it finds. Scans only read; they never change anything.
 2. **Diagnose** — each unique file is checked once and given a plain-language root
    cause, not just “404”.
 3. **See where it is used** — every reference is indexed, so you can see which pages,
    posts and featured images point at a file before you touch it.
 4. **Repair** — fix one location, or every location that uses the file, after previewing
    the exact change.
 5. **Verify and undo** — the file is re-checked afterwards, the whole repair is recorded,
    and repairs that replaced something can be undone.

#### What it scans

 * Post and page content, including Gutenberg blocks and plain HTML (images, `srcset`,
   links to documents, `<source>`, `<video>`, `<audio>`, inline `url()` in style
   attributes)
 * Featured images
 * **Elementor Image widgets**, read from where Elementor actually keeps them, so
   they are found even when the page content holds nothing
 * Media Library attachments, including their generated sizes
 * Media hosted on other websites, only if you turn on **Check external media URLs**
   in Settings (off by default)

Published, private, scheduled, draft and pending content is scanned. Trashed content,
auto-drafts and revisions are not.

#### Problems it identifies

 * Missing local file and missing attachment
 * Missing featured image
 * Missing thumbnail or generated size
 * Broken local URL
 * Old domain reference, left behind after a move or migration
 * Broken document, including empty and invalid PDFs
 * Dead external file (404 or 410)
 * At-risk external file — it works today, but a third party controls it
 * Could not verify — the check was inconclusive, so the file is never counted as
   healthy _or_ broken

The last three need **Check external media URLs**, which is off by default. While
it is off, external files are reported as Not Checked and are never counted as healthy
or broken.

#### Repairs included

 * **Regenerate missing image sizes** from the attachment’s own original, which 
   is only ever read
 * **Use another file here** — pick an existing Media Library file, or upload one
   in the same step
 * **Suggested replacements** — when your Media Library already holds a file that
   is plainly the same one (the same name in another folder, the original of a missing
   size, a re-upload), it is offered first with the reason it was chosen, and used
   only if you choose it
 * **Correct the address** — fix a broken or outdated local URL
 * **Repair all locations** — point every place that uses one broken file at the
   replacement, in a single operation, including a mixture of ordinary pages and
   Elementor widgets
 * **Repair an Elementor Image widget** — the address and the Media Library item
   are both updated in Elementor’s own data, every other setting is left alone, 
   and Elementor’s copy of the page and its stylesheet are rebuilt
 * **Undo** — put back what a repair replaced

#### Built to be safe

Every repair runs the same way: analyse, preview, snapshot, repair, verify, log.

 * Nothing is changed until you confirm, and the preview shows the exact values 
   before and after.
 * The original value of every field is stored before it is modified.
 * Only the one occurrence you selected is rewritten. The rest of the content stays
   byte for byte identical.
 * Elementor pages are changed widget by widget in Elementor’s own data — never 
   by searching and replacing text in it — so every other widget and setting is 
   untouched.
 * If anything else would change, or a page will not save, the content is restored
   exactly as it was and the repair is recorded as failed.
 * Repairing several locations is all or nothing. If any of them has been edited
   since the last scan, nothing is written at all.
 * An issue is only marked resolved once the file has been re-checked and the problem
   is genuinely gone.
 * Undoing is refused — rather than overwriting newer work — if the content changed
   after the repair.

#### Not in the free plugin

So you know what you are getting:

 * Recurring scheduled scans, continuous monitoring and email alerts (in the free
   plugin, every scan is started by an administrator)
 * Repairing several different files or issues together in one go
 * Everything in Elementor other than the Image widget — background images, galleries,
   carousels and sliders, and images set in custom CSS
 * Other page builders, and plugin integrations such as WooCommerce and ACF
 * Rollback in bulk, advanced reporting and CSV export

Scanning covers posts, pages, featured images, the Media Library and Elementor Image
widgets. Custom post types can be added with the `media_file_fixer_scan_post_types`
filter but are not scanned by default. Other page builders’ storage, shortcode attributes,
widgets, menus and theme or plugin CSS files are not parsed.

#### What Media File Fixer is not

It is not an image optimiser, a CDN, a backup plugin, a security scanner, an SEO
suite, a compression or WebP plugin, or a media cleaner. It never deletes your media,
and a file that nothing uses is reported as “0 locations” — information, never a
problem.

#### Privacy

Media File Fixer does not send your website URL, media URLs, content, scan results,
or any analytics to Media File Fixer or Potens Digital. There is no telemetry, no
tracking, no account, and no external service to sign up for.

Suggested privacy policy text is available under Settings  Privacy.

#### External requests

Out of the box, Media File Fixer contacts no other website. External media checks
are **off by default**: nothing is sent until an administrator turns on **Check 
external media URLs** under Media File Fixer  Settings.

While it is on, scans and re-checks send a HEAD request (or a GET request limited
to 1 KB) directly to each external media URL found in your content, to find out 
whether that file still loads. These requests go to whichever third-party servers
host those files, never to Media File Fixer or Potens Digital, and those servers’
own terms and privacy policies apply. Each server receives your server’s IP address,
the address of the file, and a user agent naming the plugin and its version. The
requests carry no cookies, no login details and no information about your visitors.
Private and internal network addresses are never contacted.

While it is off, no lookup or request is made for external files. They are reported
as Not Checked and left out of the health score. Turning the setting off also stops
a scan that is already running from contacting anyone, from its next batch on.

#### Requirements

 * WordPress 6.5 or later
 * PHP 7.4 or later (tested on PHP 7.4, 8.0, 8.1, 8.2, 8.3 and 8.4)
 * MySQL or MariaDB (tested against MySQL 5.7, MySQL 8.0 and MariaDB 10.11)

The plugin creates its own database tables. It loads nothing on the front end of
your site.

### Credits

 * Inter typeface by The Inter Project Authors — SIL Open Font License 1.1 (assets/
   fonts/Inter-OFL-1.1.txt).
 * Icon geometry derived from Lucide — ISC License (assets/icons-LICENSE.txt).

## Screenshots

[⌊A scan in progress. Scans are batched and resumable, show real progress, and only
ever read your site.⌉⌊A scan in progress. Scans are batched and resumable, show 
real progress, and only ever read your site.⌉[

A scan in progress. Scans are batched and resumable, show real progress, and only
ever read your site.

[⌊The Dashboard: a media health score calculated from the files that were checked,
with the counts behind it, the most urgent issues and your recent repairs.⌉⌊The 
Dashboard: a media health score calculated from the files that were checked, with
the counts behind it, the most urgent issues and your recent repairs.⌉[

The Dashboard: a media health score calculated from the files that were checked,
with the counts behind it, the most urgent issues and your recent repairs.

[⌊Every issue found, with the file, what is wrong, how many places use it and when
it was detected — filterable by type, severity and status.⌉⌊Every issue found, with
the file, what is wrong, how many places use it and when it was detected — filterable
by type, severity and status.⌉[

Every issue found, with the file, what is wrong, how many places use it and when
it was detected — filterable by type, severity and status.

[⌊An issue in detail: the root cause in plain language, and every page, post and
featured image that uses the file.⌉⌊An issue in detail: the root cause in plain 
language, and every page, post and featured image that uses the file.⌉[

An issue in detail: the root cause in plain language, and every page, post and featured
image that uses the file.

[⌊A repair preview. Nothing has been changed yet — this is what would change, and
what would be left alone.⌉⌊A repair preview. Nothing has been changed yet — this
is what would change, and what would be left alone.⌉[

A repair preview. Nothing has been changed yet — this is what would change, and 
what would be left alone.

[⌊Repair History: everything the plugin has changed, what the check afterwards found,
who did it, and a way to undo it.⌉⌊Repair History: everything the plugin has changed,
what the check afterwards found, who did it, and a way to undo it.⌉[

Repair History: everything the plugin has changed, what the check afterwards found,
who did it, and a way to undo it.

[⌊Settings. External media checks stay off until you turn them on, and scheduled
scans and email notifications are clearly marked as features the free plugin does
not include.⌉⌊Settings. External media checks stay off until you turn them on, and
scheduled scans and email notifications are clearly marked as features the free 
plugin does not include.⌉[

Settings. External media checks stay off until you turn them on, and scheduled scans
and email notifications are clearly marked as features the free plugin does not 
include.

## Installation

 1. Install Media File Fixer from **Plugins  Add New**, or upload the `media-file-fixer`
    folder to `/wp-content/plugins/`.
 2. Activate the plugin through the **Plugins** screen.
 3. Open **Media File Fixer** at the bottom of the admin menu.
 4. Choose what to scan and select **Start First Scan**. The first scan only reads 
    your site — nothing is changed.
 5. When the scan finishes, open **Issues** to see what was found, and repair what 
    you want to repair.

Every scan is started by an administrator from this screen; the free plugin never
starts one by itself. Large sites are scanned in small batches, so a scan can be
paused, resumed and continued later. Once you have started a scan, you can leave
the scan page open to keep it moving quickly, or close it and let WordPress’s scheduled
tasks (WP-Cron) continue that scan’s remaining batches in the background.

Media hosted on other websites is not contacted unless you turn on **Check external
media URLs** in Settings. See “External requests” in the description for exactly
what that sends.

Uninstalling the plugin leaves your data in place unless you switch on **Delete 
Data on Uninstall** in Settings  Advanced. Your media files are never deleted either
way.

## FAQ

### Will it delete or change my media files?

No. Media File Fixer never deletes a media file. The only repair that writes a new
file is “Regenerate missing image sizes”, which creates sizes that are missing and
never overwrites an existing file. Your original images are only ever read.

### Will it change my posts and pages?

Only when you ask it to, and only the exact occurrence you chose. Every content 
repair is previewed first, the original value is stored before the change, and the
content is read back afterwards: if anything beyond that one reference moved, the
previous content is written back and the repair is recorded as failed.

### Can I undo a repair?

Yes, for repairs that replaced something — a file or an address. Open **Repair History**,
choose the repair, and you will see what it changed before you confirm. If the content
has been edited since the repair, undoing is refused rather than overwriting that
newer work. Regenerating image sizes cannot be undone, because it only ever added
files that were missing.

### How are replacement files suggested?

From your own Media Library, by rules you can read: the same file name in another
folder, the original of a missing generated size, a re-upload with a copy number
added, the same image dimensions, a matching title. Each suggestion says which of
those it matched and is marked a **Strong match** or a **Possible match** — never
a percentage. Only files of the same kind that really exist on your server are offered,
and nothing is suggested when nothing is a confident match. Nothing is sent anywhere,
no AI is involved, and a suggestion is never used until you choose it and confirm
the preview.

### Does it send anything to your servers?

No. See the Privacy section above. The only outbound requests the plugin can make
are the optional checks of external media, which are off until an administrator 
turns them on and go to the host serving that file, not to us.

### Does it contact other websites?

Not unless you ask it to. **Check external media URLs** is off by default, and while
it is off, scans, background batches and re-checks send nothing to anyone. When 
you turn it on, it sends small requests to the servers hosting the external media
your content uses. “External requests” in the description says exactly what they
receive.

### Does it scan on its own, or in the background?

A scan only ever starts when an administrator starts one from the Media File Fixer
screen in wp-admin. The free plugin never starts a scan by itself; recurring scheduled
scans are part of Media File Fixer Pro. Once you have started a scan it runs in 
small batches: the scan page drives them while it is open, and if you close the 
page, WordPress’s scheduled tasks (WP-Cron) can continue that scan’s remaining batches
in the background until it finishes. You do not have to keep the page open, but 
it is quicker if you do.

### Does it run a search and replace on my database?

Never. Content is re-parsed with the same parser the scan uses, and only the single
occurrence you selected is rewritten.

### What does “Could not verify” mean?

The check was inconclusive. A server may block automated requests, rate-limit them,
time out, or return an error. That is not proof the file is broken, and it is certainly
not proof it is fine, so the file is reported honestly as unverified and is never
counted as healthy or broken.

### Why is a working file on another website shown as “at risk”?

Because someone else controls it. It works today, but it can disappear without warning.
If you serve your own media through a CDN, you can tell the plugin that host belongs
to you with the `media_file_fixer_local_hosts` filter, and it will be treated as
local.

### I have media that nothing uses. Is that a problem?

No, and the plugin will never tell you it is. Unused files are still checked so 
you know whether they are intact, but “used in 0 locations” is information, not 
an issue. Media File Fixer is not a media cleaner.

### Does it work with page builders like Elementor or Divi?

Partly, and only where it has been verified. **Elementor Image widgets** are fully
supported: they are read from Elementor’s own data, repaired there, and checked 
afterwards — so an image is found and fixed even on a page whose stored content 
is empty. Everything else in Elementor is not: background images, galleries, carousels,
sliders and images set in custom CSS are reported if they happen to appear in the
copy of the page Elementor keeps, but they are not repaired.

Other builders, including Divi, are not supported in version 1.0. Plain HTML stored
in your content is always found normally. Shortcode attributes, widgets and menus
are not parsed.

Where a page is built by a builder this plugin cannot repair, it says so and refuses
rather than changing a copy of the page and reporting a success you could not see.

### Does it scan custom post types?

Not by default. Posts, pages, featured images, Elementor Image widgets and the Media
Library are scanned. Developers can add more post types with the `media_file_fixer_scan_post_types`
filter.

### Will it slow down my website?

No. Nothing is loaded on the front end — no scripts and no styles, and none of the
scanner, admin or repair code is built when a visitor’s page is served. The admin
screens only run in wp-admin. A scan runs in small batches with time and memory 
budgets, so it stays well within what shared hosting allows, and any batches it 
leaves for the background run through WordPress’s scheduled tasks in their own requests,
not inside a visitor’s page.

### Does it work on multisite?

Yes. Each site in a network gets its own tables and its own scans and issues. There
is no network-wide dashboard.

### How long does a scan take?

It depends on how much content and media you have. Scans are batched and resumable,
and the Scan screen shows real progress throughout. A site with a few thousand posts
is scanned in minutes with the page open.

### Is it accessible and translation-ready?

Yes. The admin screens are checked against WCAG 2.1 A and AA with automated tooling,
every string is translatable, and a translation template ships with the plugin.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

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

Contributors

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

[Translate “Media File Fixer” into your language.](https://translate.wordpress.org/projects/wp-plugins/media-file-fixer)

### Interested in development?

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

## Changelog

#### 1.0.0

 * First stable release. Everything listed below, from detection and diagnosis to
   repairs you can preview and undo, Elementor Image widgets and replacement suggestions,
   tested on PHP 7.4 to 8.4, MySQL 5.7 and 8.0, MariaDB 10.11 and WordPress 6.5 
   to 7.1.
 * Changed since 1.0.0-rc.12: checking media hosted on other websites is now off
   until an administrator turns it on, under the new **Check external media URLs**
   setting. The old setting, which was on by default, is not carried over, so after
   updating nothing is sent to other websites until you opt in, and external files
   are reported as Not Checked.
 * Changed since 1.0.0-rc.12: Media File Fixer moved from below Media to the bottom
   of the admin menu.

#### 1.0.0-rc.12

 * New: replacement suggestions. When a broken file’s replacement is already in 
   your Media Library — the same name in another folder, the original of a missing
   size, a re-upload — the issue page offers it first, with the reason it was chosen
   and whether it is a strong or a possible match. Nothing is used until you choose
   it, and choosing it runs the same preview, snapshot and verification as picking
   a file yourself. The Media Library picker is still there.
 * Matching is deterministic and local: no AI, no external service, and a fixed,
   small number of database queries however large the Media Library is.

#### 1.0.0-rc.11

 * Internal: reserves the `bulk_repair` history label used by Media File Fixer Pro.
   No change to how
    the free plugin scans, diagnoses or repairs anything, and nothing
   new runs on a site without Pro.

#### 1.0.0-rc.10

 * Internal: Media File Fixer now has one place that knows whether the Pro add-on
   is active, so a Pro installation can identify itself. Nothing changes on a site
   without Pro.

#### 1.0.0-rc.9

 * Fixed, found while reviewing rc.8: if Elementor was deactivated but its data 
   left behind, the images its widgets used stayed listed as places the file was
   used — alongside the page content that renders in its place — and the plugin 
   offered to repair a widget nothing would draw. Those locations are now retired
   on the next scan, and the page content counts again.

#### 1.0.0-rc.8

 * New: Elementor Image widgets are now found and repaired. Elementor keeps the 
   page in its own data and draws from that, so this is the only place where changing
   an image changes what visitors see — and it means an image is found even on a
   page whose content is otherwise empty.
 * A repair of an Elementor image updates both the file and the Media Library item
   it points at, keeps the chosen image size and every other widget setting, and
   asks Elementor to rebuild its copy of the page and its stylesheet.
 * “Repair all locations” now spans ordinary pages and Elementor widgets together,
   and is still all or nothing.
 * An Elementor image is counted as one place, not as the two or three settings 
   that describe it, and the copy Elementor keeps of the page is no longer counted
   as a second place for the same image.
 * Undoing a repair restores the Elementor page’s own data, and is still refused
   if the page was edited afterwards.
 * An issue is resolved only once the widget has been read again and genuinely no
   longer names the old file.
 * Fixed: when nothing used a file any more but the issue stayed open, the message
   blamed the Media Library even when the Media Library was not holding it. It now
   says what is actually true.
 * Still not repaired, and not claimed: Elementor background images, galleries, 
   carousels, sliders and custom CSS, and other page builders.

#### 1.0.0-rc.7

 * Fixed: repairing an image inside an Elementor page reported success and closed
   the issue, while the image on the page was still blank. Elementor keeps its own
   copy of the page and draws from that, so changing the page content only hid the
   problem from the plugin. Images inside a page a builder controls are no longer
   repaired automatically: the repair is refused with an explanation, and the issue
   stays open until the image is replaced in the builder — or the file itself is
   repaired, which still works.
 * Fixed: a repair counted every address inside an image instead of the image itself,
   so sixteen images were reported as “All 80 locations now point at the new file.”
   Previews, outcomes and Repair History now all count the places you can actually
   see, and agree with the number shown on the issue.
 * A repair of a file used in both ordinary pages and builder pages now repairs 
   the ordinary ones and says plainly which it has left alone.

#### 1.0.0-rc.6

 * Fixed: replacing an image that had been deleted from the Media Library could 
   leave the page still showing a broken image, even though the repair reported 
   success and the issue was closed. WordPress stores the original and every generated
   size in the same `<img>` tag, and only the one address was being replaced — so
   a browser picking any of the others still asked for a file that was gone.
 * Repairing an image now repairs the whole image: every address in the tag, the
   attachment it says it is, and the responsive sizes and dimensions WordPress works
   out from it. All of them are taken from the replacement.
 * Fixed: the block in the editor still pointed at the deleted image after a repair,
   so opening the page showed a block whose image no longer existed.
 * A repair is now only recorded as resolved once the page has been read again and
   genuinely no longer refers to the file that was replaced.
 * Fixed: “Repair All Locations” stopped after 50 places while reporting that it
   had changed all of them. It now changes every one, and refuses outright — changing
   nothing — if there are more than one repair can handle safely.
 * Repairing one image can clear several issues at once, because the original and
   each of its generated sizes were each counted as a problem of their own.

#### 1.0.0-rc.5

 * Fixed: on MySQL and MariaDB, acting on the same issue twice in quick succession
   could wrongly report “This issue has already changed. Reload the page.” — for
   example re-checking an issue you had just ignored. Repeat actions now work as
   intended.
 * Fixed: when a database error was logged, the message could include the table 
   name, and for a duplicate-key error the value being saved. Logs now describe 
   what went wrong without naming tables or repeating your data.
 * Verified on PHP 7.4 through 8.4, WordPress 6.5 and current, and against MySQL
   5.7, MySQL 8.0 and MariaDB 10.11.

#### 1.0.0-rc.4

 * New: **Repair All Locations**. When a missing file is used in several places,
   you can now point every one of them at a replacement in a single operation, instead
   of repairing them one at a time.
 * You see exactly how many places will change before you confirm, and each one 
   is listed.
 * Repairing several places is all or nothing: if any of them has been edited since
   the last scan, nothing is changed and you are asked to scan again; and if any
   page cannot be saved, every page that was already changed is put straight back.
 * Repairing one location at a time is still available as a second choice.
 * Repair History records the repair once, with every location it changed, and undoing
   it restores all of them.

#### 1.0.0-rc.3

 * Fixed: when a missing file was used in several places, repairing one place left
   the issue open with no sign of progress, and the list of places to repair still
   offered the one you had just fixed.
 * Repairing one place now says how many were repaired and how many still need attention,
   and only the places that are left are offered next.
 * The number of locations shown on the issue updates as you repair, so the page
   no longer contradicts itself.
 * Repairing the last place that used a missing file now closes the issue, without
   waiting for the missing file to come back.
 * A file that is still in your Media Library keeps its issue open even when nothing
   uses it any more, because the broken file is still there.

#### 1.0.0-rc.2

 * Checked against WordPress.org’s official Plugin Check: no errors. Comments were
   added where an automated check cannot see that a value was already made safe,
   so the remaining notes are easy to review.
 * No functional change from 1.0.0-rc.1.

#### 1.0.0-rc.1

 * First release candidate for version 1.0. No new features: this build is about
   being ready for real websites.
 * Accessibility: the admin screens pass an automated WCAG 2.1 A/AA check, including
   while a scan, a repair and an undo are running. Two low-contrast labels were 
   corrected.
 * Translation-ready: every string is translatable, the translation template (.pot)
   ships with the plugin, and translated JavaScript strings are picked up from the
   plugin’s own languages folder.
 * Privacy: Media File Fixer now offers suggested privacy policy text in Settings
   Privacy, explaining exactly what it stores and what leaves your website (nothing,
   unless you switch on external file checks).
 * Honest settings: the “Auto-suggest Replacements” switch is gone until the feature
   it belongs to exists.
 * Sturdier: every screen keeps working and explains itself if the plugin’s database
   tables are missing or damaged, instead of showing an error.
 * Verified on WordPress 6.5 (the oldest version supported) and on the current release,
   and on upgrades from every earlier build.

#### 0.7.0-alpha

 * New **Media Health Score**: one number from 0 to 100 with a plain rating (Excellent,
   Good, Needs Attention, Critical), and a short explanation of what is holding 
   it down.
 * The score counts media files, not usage locations, so one broken image used on
   fifty pages counts once. Broken files weigh heaviest, at-risk files less, and
   files that could not be verified are never counted as healthy.
 * Files that were not checked are left out of the score entirely rather than flattering
   it, and are reported separately.
 * The Dashboard now shows real numbers: the score, broken, at risk, could not verify
   and healthy files, the latest scan, the most urgent critical issues and your 
   most recent repairs.
 * First-run onboarding explains what a scan does and offers one button; it makes
   way for the Dashboard as soon as a scan has finished.
 * After a scan you can go straight to **Review Issues** or **View Dashboard**.

#### 0.6.4-alpha

 * Fixed the Repair History table cutting off its right-hand columns: when the table
   is wider than the space available it now scrolls sideways inside its card, with
   a soft shadow showing there is more to see.
 * Every column stays reachable — when, repair, file, where, result, check, who,
   and the Details button. Nothing is hidden to make the table fit.
 * Roomier, more sensible column widths so the table is no wider than it needs to
   be, and on phones each repair is still shown as a labelled card.
 * The page itself never scrolls sideways; only the table does.

#### 0.6.3-alpha

 * The “Repair this issue” section has been tidied up: the card now has proper inner
   padding, so nothing sits against its edges.
 * Clearer spacing between the heading, each repair option, the fields a repair 
   needs and the Preview Repair button.
 * Repair options are roomier cards with a gentler selected state, and the button
   now sits in its own clearly separated area.
 * Better spacing on phones and tablets as well as desktop. Nothing about how repairs
   work has changed.

#### 0.6.2-alpha

 * New “Repair History” page: everything Media File Fixer has changed on your site,
   newest first — when it happened, which file and place it changed, whether it 
   worked, whether the check afterwards passed, and who did it.
 * Open any repair to see the exact value before and after, where it changed, the
   issue it was fixing and the result of the check.
 * Undo a repair: when a repair replaced something, you can put the earlier version
   back. You see exactly what will happen, and confirm it first.
 * If the content changed after the repair — by you, another plugin, or a later 
   repair — undoing is refused instead of overwriting that newer work.
 * Undoing never deletes a file, and it is recorded too: the repair stays in your
   history marked as undone, and the undo gets its own entry.
 * Regenerating missing image sizes is never offered for undo: it only ever created
   files that were missing, so undoing it would delete images your site is now using.

#### 0.6.1-alpha

 * Two more repairs, each changing one place at a time: put a different file in 
   a chosen location (an existing Media Library file, or one you upload right there
   through WordPress), or correct a broken address.
 * Before anything happens you see the content, the location and both values, and
   you confirm. Only that one occurrence changes — the same file used elsewhere 
   on the page is left alone, and the rest of your content is not touched.
 * If saving would change anything beyond that one place, the content is put back
   exactly as it was and the repair is recorded as failed.
 * A replacement has to make sense: images replace images, documents replace documents,
   only file types WordPress allows, and the file has to be there. Addresses must
   be on your own site and actually lead to a file.
 * After a repair the file is checked again. The issue is only resolved when the
   problem is really gone; if the same file is still used somewhere else, the issue
   stays open and says so.

#### 0.6.0-alpha

 * First repair: an image whose generated size (thumbnail) is missing can be repaired
   from the issue page. Media File Fixer shows exactly what it will do, waits for
   your confirmation, creates only the sizes WordPress expects, and checks the result
   before marking the issue resolved.
 * Your original image is only ever read — never changed, replaced or deleted — 
   and no existing file is overwritten. Your posts and pages are not edited.
 * If a repair fails, the issue stays open, anything the repair wrote is removed
   and the attachment details are restored.
 * Every repair is recorded with what it changed, who ran it, whether the check 
   afterwards passed, and the file details as they were before — shown as “Repair
   history” on the issue.

#### 0.5.0-alpha

 * The Issues screen can now be worked through: search by file name or URL, filter
   by issue type, severity, status (open, ignored, resolved) and whether the file
   is on this site or another website, sort the list, and page through it.
 * New actions on every issue: Recheck (looks at the file again), Ignore (keeps 
   the issue but takes it out of the open list) and Restore. Nothing is repaired
   or changed — repairs come in a later version.
 * Each issue now states its status, severity, root cause, where the file is used,
   when it was first detected and when it was last checked. Resolved issues stay
   available as history and reopen if the problem returns; an ignored issue stays
   ignored while the problem is still there.
 * Controls for repair features that do not exist yet were removed, so nothing in
   the plugin looks like it can fix a file before it can.

#### 0.4.1-alpha

 * “Healthy” now means a file was checked successfully and has no open issue. Files
   with a missing generated size (or any other open issue) are no longer counted
   as healthy in the scan summary or on the Dashboard.
 * The health groups — Healthy, Broken, At risk, Could not verify, Not checked —
   never overlap and always add up to the number of files checked.
 * Fixed: the Scan screen could show out-of-date progress right after pausing a 
   scan.

#### 0.4.0-alpha

 * “Used in” now names every place a file is used: the content title and type, whether
   it is the content or the featured image, where inside the content each occurrence
   sits, and links to edit or view it.
 * A file used in several places is listed once per content item with its occurrences;
   long lists are paginated.
 * The Issues list says how often and where each file is used. A Media Library file
   nothing uses shows “0 locations” — information, never a problem.
 * Locations that stopped using a file are kept as history and reported separately
   instead of being counted as current usage.

#### 0.3.1-alpha

 * External media status refined: a working file hosted on another website is an“
   At-risk external file” (it depends on that website); access denied, rate limits,
   server errors, timeouts and connection problems are “Could not verify” and are
   never counted as healthy or broken; 404/410 remain “Dead external file”.
 * The scan summary and Dashboard show files that could not be verified separately.
   Existing external issues are updated automatically on the next scan.

#### 0.3.0-alpha

 * Media validation after discovery: local files, attachments, metadata and generated
   sizes are checked on disk; external files are checked safely (HEAD first, limited
   GET fallback, strict timeouts and redirects, private networks blocked) when enabled.
 * Diagnosis and real issues: missing local file, attachment missing, missing featured
   image, missing thumbnail / generated size, broken local URL, old domain reference,
   broken document, dead and at-risk external files. Issues are created, updated,
   resolved and reopened automatically; ignored issues stay ignored.
 * Issues list and details, dashboard file counts and scan summaries show real results.

#### 0.2.0-alpha

 * Staging alpha. Media discovery: batched, resumable scans of posts, pages, featured
   images and the Media Library (Gutenberg blocks and HTML), with live progress,
   pause, resume and cancel. Scans only read your site.
 * Scan finalization is a short final step that always runs to completion once it
   starts.
 * Database schema version 2.

#### 0.1.0

 * Plugin foundation: bootstrap, service container, settings, capabilities, database
   migration framework, REST API base.
 * Branded admin application shell: Dashboard, Scan, Issues, Issue Details, and 
   Settings screens.

## Meta

 *  Version **1.0.0**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [broken images](https://wordpress.org/plugins/tags/broken-images/)[media](https://wordpress.org/plugins/tags/media/)
   [media library](https://wordpress.org/plugins/tags/media-library/)[thumbnails](https://wordpress.org/plugins/tags/thumbnails/)
 *  [Advanced View](https://wordpress.org/plugins/media-file-fixer/advanced/)

## Ratings

No reviews have been submitted yet.

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

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

## Contributors

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

## Support

Got something to say? Need help?

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