Title: LC Smart Media Redirect &amp; Cleaner
Author: Celsius Anderson
Published: <strong>August 27, 2026</strong>
Last modified: August 27, 2026

---

Search plugins

![](https://ps.w.org/lc-smart-media-redirect-cleaner/assets/banner-772x250.png?rev
=3668657)

![](https://ps.w.org/lc-smart-media-redirect-cleaner/assets/icon-256x256.png?rev
=3668657)

# LC Smart Media Redirect & Cleaner

 By [Celsius Anderson](https://profiles.wordpress.org/celsiusanderson/)

[Download](https://downloads.wordpress.org/plugin/lc-smart-media-redirect-cleaner.1.9.66.zip)

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

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

## Description

LC Smart Media Redirect & Cleaner keeps your Media Library lean without ever breaking
a front-end
 image. It intelligently redirects missing/mismatched thumbnail-size
requests to the closest available size instead of letting them 404 or silently regenerate
on every request, scans for orphaned metadata and unused files, and gives you a 
safe, reviewable prune tool.

Features:

 * **Adaptive CPU Load Throttling & Background Engine** — Real-time server CPU load
   monitoring (`get_server_cpu_load()`) with dynamic batch pacing, cooling backoffs,
   and safe execution.
 * **Smart Core Web Vitals (LCP) Booster & Hero Preload Engine** — Automatically
   detects hero images, strips `loading="lazy"`, injects `fetchpriority="high"` 
   and `decoding="async"`, and outputs high-priority `<link rel="preload">` in `
   <head>`.
 * **Master Original Image Dimension Cap & Auto-Downscaler** — Resizes oversized
   raw master camera/iPhone uploads in place (e.g. capped at 2560px or 2048px) to
   eliminate hosting bloat.
 * **Native WP-CLI Command Suite** — Comprehensive terminal management via `wp smrc
   stats`, `wp smrc regen`, `wp smrc prune`, and `wp smrc redirect`.
 * **Interactive Visual Quality & Savings Comparison Modal** — Apple-style split
   comparison slider with real-time file size & % savings calculations.
 * **Smart Size Redirect** — serves the closest matching registered image size instead
   of a
    broken or oversized fallback.
 * **Metadata Orphan Scanner** — manual, batched scan for attachment metadata pointing
   at files
    that no longer exist.
 * **Prune Tool** — review orphaned files before removing them; nothing is deleted
   blindly.
 * **Future Generation Manager & custom image size management.**
 * **Background thumbnail regeneration** via WP-Cron, batched to avoid timeouts.
 * **App-like dashboard** with single-site storage stats, export/import configuration.
 * **Staging-to-Live Production Preset Sync** — export complete configurations (
   core dimensions, size selections, Smart Size Redirect rules, and Pro engines)
   for seamless local-to-live migration.

Need automated (no-click) background maintenance, AVIF/WebP multi-format delivery,
auto-compression, or
 multisite/CDN-aware storage analysis? See **LC Smart Media
Redirect & Cleaner Pro**, the licensed add-on.

This plugin is the direct successor to “Batch Image Cleaner” (v1.9.28 and earlier);
Standard
 free features and stored settings remain fully compatible.

### Current Active Pipeline Status

 * **Standard lifecycle (v1.9.33, audited August 8, 2026):** ✅ Bootstrap order,
   migration, activation/deactivation, cron ownership, uninstall cleanup, and legacy
   URL handling were traced end to end. Three defects were fixed: query-string false-
   positive 410 responses, stale deactivation orphan-scan state, and retained dynamic
   prune sessions after uninstall.
 * **Future-upload size generation & Image Size Manager (v1.9.56, audited August
   19, 2026):** ✅ `smrc_get_registered_sizes()` updated to read unfiltered registrations
   directly from `Smrc_Core::get_image_sizes()`. Custom registration, override ordering,
   disabled-size filtering, minimum-longest-side behavior, duplicate-size deduplication,
   and post-upload metadata were traced end to end. All 26 registered sizes (Core,
   Theme, WooCommerce, Custom) reliably render on the Image Sizes grid regardless
   of active upload generation state.
 * **Dashboard configuration controls (v1.9.35, audited August 8, 2026):** ✅ Rendered
   controls, action bindings, nonces/capabilities, option persistence, import/export,
   and completion feedback were traced end to end. Two UI defects were fixed: numeric
   settings now acknowledge or safely roll back failures, and the unused scan-subfolder
   selector was removed.
 * **Manual thumbnail regeneration (v1.9.36, audited August 8, 2026):** ✅ Selected-
   size persistence, reset/resume/run loop, locks, attachment processing, file/metadata
   writes, errors, stop, and recovery controls were traced end to end. Two defects
   were fixed: Stop no longer releases the lock during an active batch, and the 
   live error total includes every batch error.
 * **Background thumbnail regeneration (v1.9.37, audited August 8, 2026):** ✅ AJAX
   start/status/cancel, cron scheduling, run state, locks, batch processing, completion,
   stale recovery, and UI feedback were traced end to end. Four concurrency/recovery
   defects were fixed: duplicate starts and callbacks are blocked, cancellation 
   cannot be overwritten by an in-flight batch, and malformed running state recovers
   safely.
 * **Background orphan scanner (v1.9.38, audited August 8, 2026):** ✅ Start/status/
   cancel/clear AJAX, WP-Cron scheduling, persistent offsets/results, filesystem
   and metadata phases, result caps, cancellation, stale recovery, and UI polling
   were traced end to end. Four concurrency/recovery defects were fixed: duplicate
   starts and cron callbacks are blocked, cancellation cannot be overwritten by 
   in-flight work, malformed state recovers to idle, and structured UI failures 
   are handled correctly.
 * **Cleanup and prune execution (v1.9.39, audited August 8, 2026):** ✅ Analysis
   safety set, prune preparation, transient ownership, batched deletion, per-file
   path handling, orphan metadata/file deletion, and client completion feedback 
   were traced end to end. Two safety defects were fixed: every batch revalidates
   its reviewed filesystem scope, and the UI only confirms deletion after a successful
   server response.
 * **Rebrand compatibility (v1.9.40, audited August 8, 2026):** ✅ Standard bootstrap,
   class/function identity, shared cron hooks/state, Pro dependency contract, and
   exported UI metadata were traced end to end. Runtime and exported metadata now
   use the Smart Media name; retained `bic_*` keys are data compatibility identifiers,
   not executable class/function names.
 * **Active runtime boundary (v1.9.41, audited August 8, 2026):** ✅ Configuration
   import validation now accepts only Smart Media exports. The retired Batch Image
   Cleaner is not used as a runtime or import dependency; retained `bic_*` values
   remain stored-data compatibility only.
 * **Deletion and regeneration safety (v1.9.42, audited August 8, 2026):** ✅ Folder
   deletion, thumbnail-size deletion, metadata-derived file paths, foreground size
   selection, and lifecycle cleanup were rechecked. Four defects were fixed: unsafe
   deletion inputs are rejected, failed deletes retain metadata, folder traversal
   refuses symlinks/out-of-scope entries, and regeneration processes only active
   image sizes.
 * **Third-pass deletion revalidation and state hardening (v1.9.44, audited August
   8, 2026):** ✅ Orphan deletion (metadata + files), regeneration lock lifecycle,
   prune lock recovery, custom-size deletion, size-override read paths, configuration
   import validation, and uninstall coverage of lock options and dynamic scan-accumulator
   transients.
 * **Smart Size Redirect (Standard, v1.9.55, audited August 18, 2026):** ✅ Dynamic
   canonical discovery, aspect-ratio/crop-mode compatibility scoring, manual destination
   overrides, auto-match reset, and frontend `image_downsize`/srcset behavior were
   traced end to end.
 * **Fourth-pass deep audit (Standard + Pro, audited August 10, 2026):** ✅ Thumbnail
   Regeneration, Future Generation & Custom Sizes, Storage Overview & Config Backup,
   Pro License Engine, Pro WebP Pipeline, Pro Auto-Compression Pipeline, Pro Automated
   Maintenance, and Pro Multisite & CDN Storage Analysis were thoroughly reviewed
   end to end. Validated correctness, state transitions, fail-closed safety checks,
   and edge-cases. Found no regressions or new bugs. The fixes applied in previous
   passes successfully resolved all prior defects in these pipelines.

## Installation

 1. Upload the `lc-smart-media-redirect-cleaner` folder to `/wp-content/plugins/`.
 2. Activate the plugin through the **Plugins** menu in WordPress.
 3. Access the dashboard from the new **Media Redirect** menu item in your WordPress
    admin.

## FAQ

### If AVIF and WebP files are so small, why do we still need thumbnail sizes?

AVIF and WebP solve file compression (bytes per pixel), but thumbnail sizes solve
display resolution, mobile GPU memory decoding, and responsive srcset layout. Even
an ultra-compressed 24-megapixel AVIF takes 96 MB of RAM for a mobile device to 
decompress into GPU memory; loading 30 full-res images on a mobile page can cause
browser lag or out-of-memory crashes. Resizing to a thumbnail (e.g. 400×300 px) 
in AVIF reduces file size from ~350 KB down to just ~8 KB (a 99.8% reduction!) while
decoding in under 0.5 MB of RAM. LC Smart Media Redirect & Cleaner lets you keep
only the 2-3 essential responsive sizes in AVIF/WebP, and dynamically redirects 
any missing legacy requests on the fly with zero 404s.

### How does Smart Size Redirect prevent broken images?

When a theme or plugin requests an image size that you deleted or disabled, Smart
Size Redirect intercepts the request and dynamically serves the closest available
registered size with matching aspect ratio, preventing broken layouts without generating
unnecessary files.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“LC Smart Media Redirect & Cleaner” is open source software. The following people
have contributed to this plugin.

Contributors

 *   [ Celsius Anderson ](https://profiles.wordpress.org/celsiusanderson/)
 *   [ Nasrul Eam ](https://profiles.wordpress.org/nasruleam/)

[Translate “LC Smart Media Redirect & Cleaner” into your language.](https://translate.wordpress.org/projects/wp-plugins/lc-smart-media-redirect-cleaner)

### Interested in development?

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

## Changelog

#### 1.9.66 (August 26, 2026)

 * REBRANDING & URL SYNC — Updated `Plugin URI` to `https://www.lightandcomposition.
   com/dev/lc-smart-media-redirect-cleaner/` across plugin headers, Dev Lab catalog,
   and metadata mappings.

#### 1.9.65 (August 26, 2026)

 * REVIEW COMPLIANCE — Directory slug alignment to `lc-smart-media-redirect-cleaner`,
   full text domain unification, unslashed and sanitized nonce verification, and
   template late-escaping audit.

#### 1.9.64 (August 25, 2026)

 * AUDIT — **17-Pipeline Deep End-to-End Audit**: Full code and security verification
   across all 17 pipelines including SSR routing, orphan cleanup, lock lifecycle,
   master downscaler, and LCP booster.
 * COMPLIANCE — **Zero-Residue Lifecycle Cleanup**: Added missing options (`smrc_max_original_width`,`
   smrc_lcp_preload_enabled`) to `uninstall.php` and `activate()` / `maybe_upgrade()`
   defaults.
 * HARDENING — **Form Action & Superglobal Sanitization**: Added strict `sanitize_key()`
   and `wp_unslash()` sanitization across admin form actions and AJAX request parameters.
 * TEST SUITE — Verified 100% test pass rate across 225 automated unit tests with
   765 assertions.

#### 1.9.63 (August 25, 2026)

 * REFACTOR — **WordPress.org Directory Rebranding**: Renamed plugin to `LC Smart
   Media Redirect & Cleaner` (slug: `smart-media-redirect-cleaner`) to ensure distinctiveness
   and eliminate generic/trademark collisions.
 * SECURITY — **JSON Import Deep Sanitization**: Added recursive `sanitize_json_payload()`
   sanitization engine to validate, unslash, and sanitize all keys and nested values
   decoded from configuration imports prior to database persistence and action hook
   distribution (`smrc_import_config_settings`).
 * SECURITY — **Global Input & Nonce Hardening**: Unified unslashing and sanitization
   for all AJAX and form submission parameters (`nonce`, `offset`, `batch_size`,`
   ids`, `files`).
 * COMPLIANCE — **Scoped Admin Notices (Guideline 11)**: Scoped PHP extension and
   environment notices exclusively to the plugin’s dedicated admin screen.
 * COMPLIANCE — Added `celsiusanderson` to contributors and verified compatibility
   with WordPress 7.1.

#### 1.9.62 (August 19, 2026)

 * FIX — **Storage Overview Batched Scan Accumulator**: Initialized `avif_count`
   and `avif_size` in `resetAccum()`, preventing `NaN` live count formatting during
   active scans.
 * FIX — **Visual Comparison Endpoint WebP Masters**: Enhanced `ajax_get_image_comparison()`
   to recognize `.avif` companion files for native WebP uploads.

#### 1.9.61 (August 19, 2026)

 * FEATURE — **Storage Breakdown AVIF Metrics**: Added AVIF companion scanning to`
   get_folder_statistics()`, `get_database_statistics()`, and the batched background
   scan engine (`scan_stats_batch()`), including AVIF files in total storage calculations.
 * ENHANCEMENT — **Multi-Color Storage Breakdown Bar**: Added cyan/sky gradient `#
   smrc-bar-avif` segment and legend indicator to the Overview dashboard card.
 * ENHANCEMENT — **WP-CLI AVIF Stats**: `wp smrc stats` now displays total AVIF 
   file counts and human-readable disk sizes.

#### 1.9.60 (August 19, 2026)

 * FEATURE — **Adaptive CPU Load Monitoring & Dynamic Throttling**: Added `Smrc_Core::
   get_server_cpu_load()` and `Smrc_Core::get_cpu_cores()` supporting multi-OS load
   detection (Linux `/proc/loadavg`, macOS `sysctl`, Windows `NUMBER_OF_PROCESSORS`)
   to dynamically pace batch operations and prevent server resource exhaustion.
 * ENHANCEMENT — Embedded live CPU load telemetry into all batch responses for dynamic
   client-side cooling down during traffic spikes.

#### 1.9.59 (August 19, 2026)

 * FIX — Enhanced `ajax_get_image_comparison()` with random media sampling and missing
   disk file candidate fallback.
 * FIX — Split-slider before/after 1:1 pixel alignment fix in interactive comparison
   modal.
 * FIX — Standardized `wp_parse_url()` in LCP preload tag generator and added `decoding
   ="async"` to first content image.
 * FIX — Added uploads base boundary realpath containment security check to `wp 
   smrc prune` WP-CLI command.

#### 1.9.58 (August 19, 2026) – Next-Gen Dominance Features & WP-CLI Suite

 * FEATURE — **Smart Core Web Vitals (LCP) Booster & Hero Preload Engine**: Automatically
   injects `<link rel="preload" as="image">` with `fetchpriority="high"` in `<head
   >`, strips `loading="lazy"`, and applies `decoding="async"` to optimize Google
   PageSpeed LCP score.
 * FEATURE — **Master Original Image Dimension Cap & Auto-Downscaler**: Automatically
   resizes oversized raw camera/iPhone master uploads on upload to configurable 
   caps (2560px, 2048px, 1920px) preserving aspect ratio.
 * FEATURE — **Native WP-CLI Command Suite**: Complete CLI terminal tooling via `
   wp smrc stats`, `wp smrc regen`, `wp smrc prune`, and `wp smrc redirect`.
 * FEATURE — **Interactive Visual Quality & Savings Comparison Modal**: Apple-style
   split comparison slider overlay with real-time file size & % savings calculation.
 * ENHANCEMENT — Added dimension cap preset pills and LCP toggle in Settings tab.

#### 1.9.57 (August 19, 2026)

 * REFACTOR — Modernized all plugin options, transients, cron hooks, and postmeta
   to `smrc_*` prefix with automatic zero-data-loss migration on boot (`maybe_migrate_legacy_bic_data()`).
 * ENHANCEMENT — Configuration export/import uses clean `smrc_*` keys while seamlessly
   supporting legacy import formats.

#### 1.9.56 (August 19, 2026)

 * FIX — `smrc_get_registered_sizes()` now uses `Smrc_Core::get_image_sizes()` directly,
   ensuring all registered theme, WooCommerce, and custom image sizes appear in 
   the Image Sizes tab even when disabled from upload generation.

#### 1.9.55 (August 18, 2026) – Pipeline Audit: SSR Algorithmic Grounding & UI Hardening

 * FIX — Smart Size Redirect (P2): Added `$ignore_custom_mappings` parameter to `
   find_best_redirect_target()` to compute pure algorithmic defaults independently
   of active manual overrides, ensuring “Reset Mappings to Auto” always accurately
   restores true algorithmic matches.
 * ENHANCEMENT — Added `OVERRIDE` badge indicator on SSR dashboard chips whenever
   a custom manual destination is active.
 * ENHANCEMENT — Automatic clean-up of redundant mappings during save so options
   storage remains minimal and dynamic.
 * ENHANCEMENT — Dashboard view auto-refreshes seamlessly upon saving SSR destination
   modifications.

#### 1.9.54 (August 18, 2026) – Staging-to-Live Production Preset Sync & Filter Extensibility

 * FEATURE — Enhanced Configuration Export & Import to bundle WordPress Core Dimensions(`
   thumbnail`, `medium`, `large`, crop settings) and Smart Size Redirect rules (`
   bic_size_redirect` with exclusions and custom dynamic mappings).
 * FEATURE — Added `smrc_export_config_payload` filter and `smrc_import_config_settings`
   action hooks, enabling Pro to serialize and restore complete optimization stacks.
 * ENHANCEMENT — Updated dashboard UI with dedicated Staging Sync card and updated
   export filename format (`smrc-config-YYYY-MM-DD.json`).

#### 1.9.52 (August 18, 2026) – Pipeline Audit Fixes: Smart Size Redirect & Thumbnail Deletion Hardening

 * FIX — Smart Size Redirect (P2): `get_size_width_unfiltered()` previously checked
   options-table widths for core sizes `1536x1536` and `2048x2048`, where options
   do not exist. Removed them from core options lookup so they properly resolve 
   from `$_wp_additional_image_sizes` (1536px and 2048px) and map to large thumbnails
   instead of falling back to full master photos.
 * FIX — Batch Deletion Hardening (P4): `delete_all_thumbnails_batch()` now enforces`
   realpath`, uploads base-prefix boundary matching, and symlink skipping matching
   the security model of `delete_thumbnail_size_files()`.

#### 1.9.51 (August 17, 2026) – Storage Breakdown WebP Metrics, Prune Tool Lifecycle & Admin Notice Alignment

 * FIX — Storage breakdown metrics: storage overview calculation (`get_database_statistics`,`
   get_folder_statistics`, `scan_stats_batch`) now includes `.webp` companion file
   sizes in `total_size` and computes `webp_percentage` accurately. Added dynamic`#
   smrc-bar-webp` segment and legend to the Storage Breakdown dashboard card.
 * FIX — Prune Tool lifecycle: fully wired `#smrc_prune_run`, `#smrc_prune_cancel`,
   batch deletion progress chunks, and scan status UI in admin script and stylesheet.
 * FIX — Admin notices: aligned minimum WordPress version requirement notice in `
   class-admin-interface.php` from legacy 4.0 to 5.0, matching plugin declarations
   and runtime requirements.
 * HOUSEKEEPING — Synced Author URI to `https://www.lightandcomposition.com/`.

#### 1.9.50 (August 14, 2026) – Plugin URI Fix

 * HOUSEKEEPING — `Plugin URI` now points to the plugin’s Dev Lab page (`/dev/smart-
   media-redirect-cleaner/`) instead of the wordpress.org listing.

#### 1.9.49 (August 10, 2026) – Critical bug fixes: delete_thumbnail_size_files & Generation Control

 * FIX — `delete_thumbnail_size_files()`: `$uploads_prefix` was undefined inside
   this function (only set in the sibling `delete_all_thumbnails_batch()`). Caused
   the path-traversal guard to always be empty-string truthy  silently skipped every
   file  “Delete Size” button did nothing. Variable now properly derived from `realpath(
   wp_upload_dir()['basedir'])`.
 * FIX — Quick Setup “Generation Control” step: marked incomplete even after user
   selected ALL sizes because the old condition required `selected_count < total_reg_count`.
   New logic: step is done if (a) any disabled sizes, (b) any selected sizes (including
   all), or (c) the option was ever explicitly saved in the DB (`get_option` sentinel
   check).

#### 1.9.48 (August 10, 2026) – Generation Control Quick Setup evaluation enhancement

 * FIX — Generation Control (Step 3) now considers setup complete if unused sizes
   are unselected/excluded in Image Sizes tab (`selected_sizes` < registered count)
   OR if Uploads creation is disabled (`disabled_sizes` is non-empty).

#### 1.9.47 (August 10, 2026) – Quick Setup progress tracker & layout audit

 * NEW — 5-step Quick Setup progress tracker on Overview dashboard (PHP Image Engine,
   Smart Size Redirect, Generation Control, Compression & Quality, Safety Shields).
 * FIX — Step 3 button target updated to `image-sizes` tab ID for seamless jump 
   navigation.
 * FIX — Added `flex: 0 0 auto` to `.smrc-qs-step` containers to prevent flex shrinkage
   and line overlaps across step labels.
 * FIX — Added strict `text-decoration: none !important` overrides to eliminate 
   WordPress core `.is-done` strike-through text styling.
 * FIX — 100% complete state now collapses into clean compact banner with expandable
   breakdown.

#### 1.9.44 (August 8, 2026) – third-pass deletion revalidation and state hardening

 * FIX — orphaned-metadata deletion re-validates every submitted ID at delete time(
   must still be an attachment whose original file is missing); a stale or replayed
   request can no longer delete a valid attachment.
 * FIX — orphaned-file deletion re-checks at delete time that each file is not a
   registered attachment or a thumbnail of one, closing the scan-to-delete race 
   window.
 * FIX — a foreground regeneration first batch that loses the per-batch processing-
   lock race now releases the run claim and 30-minute lock it just created, instead
   of blocking all future foreground and background starts.
 * FIX — prune batch locks reclaim automatically after 10 minutes if a batch died
   fatally, so an interrupted run no longer blocks its review forever.
 * FIX — deleting a custom size no longer crashes when the stored list contains 
   a malformed entry; malformed entries are dropped safely.
 * FIX — size-override filtering guards malformed override entries, preventing a
   fatal during upload when option data is poisoned.
 * FIX — configuration import now sanitizes disabled-size, selected-size, and size-
   override arrays to their exact expected shapes instead of storing arbitrary structures.
 * FIX — uninstall now removes prune lock options, folder-stats scan accumulator
   transients, and regeneration/scan lock options that could previously survive 
   removal.

#### 1.9.43 (August 8, 2026) – second-pass prune and regeneration safety

 * FIX — prune reviews now resolve the uploads scope and every candidate to canonical,
   non-symlinked paths; a supplied subfolder must be a real child of uploads.
 * FIX — prune state is owned by the administrator who prepared it and each review
   token has an atomic deletion-batch lock, preventing concurrent requests from 
   losing state or double-processing files.
 * FIX — cleanup results now distinguish deleted and safely skipped candidates, 
   while protected-file totals count unique canonical attachment files.
 * FIX — foreground and background thumbnail regeneration share atomic start and
   batch locks, preventing simultaneous runs from changing the same attachment state.

#### 1.9.42 (August 8, 2026) – deletion and regeneration safety audit

 * FIX — thumbnail-size deletion now accepts only currently registered sizes, rejects
   unsafe metadata-derived paths, and retains metadata when a physical delete fails.
 * FIX — whole-folder deletion now refuses symlinked or out-of-scope entries and
   returns a failure instead of claiming success after an incomplete delete.
 * FIX — foreground regeneration filters submitted sizes to current WordPress registrations
   before it removes old derivatives, and uninstall now clears its activation redirect
   transient.
 * FIX — aligned the WordPress plugin header with the current Standard runtime version.

#### 1.9.41 (August 8, 2026) – active runtime boundary audit

 * FIX — configuration imports now accept only LC Smart Media Redirect & Cleaner
   exports. The completely deactivated Batch Image Cleaner is no longer treated 
   as an executable or import dependency; retained `bic_*` keys remain available
   only as existing stored-data compatibility identifiers.

#### 1.9.40 (August 8, 2026) – rebrand compatibility audit

 * FIX — executable runtime identity and exported error-log metadata now use the
   LC Smart Media Redirect & Cleaner name.
 * NOTE — the prior Batch Image Cleaner plugin is deactivated and is not part of
   the active runtime. Retained `bic_*` settings, metadata, and cron keys belong
   to LC Smart Media Redirect & Cleaner’s existing data contract and are intentionally
   not executable class or function names.

#### 1.9.39 (August 8, 2026) – cleanup and prune audit

 * FIX — every prune deletion batch now resolves and verifies each stored path against
   the exact uploads scope reviewed during preparation, so stale or corrupted cleanup
   state cannot delete outside that approved folder.
 * FIX — orphan metadata/file deletion now checks JSON success and network failures
   before reloading, rather than falsely displaying a successful completion after
   a rejected request.

#### 1.9.38 (August 8, 2026) – background orphan scanner audit

 * FIX — a running background scan can no longer be overwritten by a second Start
   request, and an atomic short-lived cron lock prevents overlapping batches from
   racing over shared offsets and results.
 * FIX — cancellation or replacement invalidates the active run; an in-flight callback
   can finish its current read but cannot publish results, mark the scan complete,
   or schedule another batch afterward.
 * FIX — missing, malformed, or abandoned run metadata now recovers to idle instead
   of leaving the scanner permanently stuck; result arrays are normalized before
   status counts are returned.
 * FIX — start and cancel failures in the dashboard now display structured server
   messages and do not report cancellation as successful when the server rejected
   it.

#### 1.9.37 (August 8, 2026) – background thumbnail regeneration audit

 * FIX — a running background job can no longer be overwritten by another Start 
   request, and an atomic cron-batch lock prevents duplicate callbacks from regenerating
   the same attachments concurrently.
 * FIX — Cancel now invalidates the active run so an in-flight batch cannot revive
   or complete it afterward; malformed running state now recovers to idle instead
   of remaining stuck forever.
 * FIX — background start/cancel errors now show the server’s actual message rather
   than an object placeholder or a false successful cancellation state.

#### 1.9.56 (August 19, 2026)

 * FIX — `smrc_get_registered_sizes()` now uses `Smrc_Core::get_image_sizes()` directly,
   ensuring all registered theme, WooCommerce, and custom image sizes appear in 
   the Image Sizes tab even when disabled from upload generation.

#### 1.9.65 (August 26, 2026)

 * SECURITY & STANDARDS — Updated plugin text domain to `lc-smart-media-redirect-
   cleaner` across all PHP files, templates, and translation calls per WordPress.
   org Directory slug alignment.
 * SECURITY — Hardened input unslashing and strict sanitization across all AJAX 
   nonce verification routines (`sanitize_text_field( wp_unslash( $_POST['nonce']))`).
 * SECURITY — Sanitized request URI checking in core initialization (`esc_url_raw(
   wp_unslash( $_SERVER['REQUEST_URI'] ) )`).
 * SECURITY — Comprehensive late-escaping audit across all admin views, memory/system
   limits, progress bars, and dynamically calculated attributes.

#### 1.9.55 (August 18, 2026)

 * FIX — Smart Size Redirect dynamically discovers unfiltered registered sizes and
   canonical targets.

#### 1.9.34 (August 8, 2026) – future-upload pipeline audit

 * FIX — duplicate-size alias metadata is now scoped to the attachment WordPress
   is generating, preventing alias mappings from one upload from leaking into another
   image handled in the same request.
 * FIX — custom image-size edits now reject duplicate custom names and names already
   owned by core, theme, or another plugin instead of creating ambiguous registrations.

#### 1.9.33 (August 8, 2026) – lifecycle pipeline audit

 * FIX — legacy-media 410 handling now inspects the request path only, so an unrelated
   page whose query string contains an old asset URL is never incorrectly terminated.
 * FIX — deactivation now clears the orphan-scan file-list cache, and uninstall 
   removes dynamic, incomplete prune-run transient state as well as fixed plugin
   state.
 * FIX — the WordPress minimum-version declaration and activation check are aligned
   at 5.0.

#### 1.9.32 (August 6, 2026)

 * FIX — Smart Size Redirect now preserves a URL supplied by an earlier `image_downsize`
   filter when SMRC has nothing to redirect. This keeps CDN/offload/image-optimization
   integrations compatible instead of overwriting their valid result with `false`.
 * FIX — the per-request redirect marker is now consumed after its matching srcset
   calculation, preventing one redirected image from causing a later unrelated image
   srcset to lose its original source.

#### 1.9.31 (August 6, 2026)

 * FIX — complete the Standard/Pro dashboard contract audit: corrected renamed UI
   hooks, made the background scanner status element unique, and removed obsolete
   legacy dashboard assets so controls cannot silently bind to the wrong interface.
 * FIX — Storage Overview Refresh now listens to the Smart Media control and reliably
   starts its batched scan.

#### 1.0.0 (August 6, 2026) – rebrand/split from Batch Image Cleaner

 * First release under the new name. Rebranded from `batch-image-cleaner` (formerly
   reachable only
    from the WordPress Tools submenu) into its own top-level admin
   menu item, redesigned with the shared sidebar + click-to-show-tabs dashboard 
   used across this plugin suite.
 * WebP conversion, auto-compress, and the “Pending Optimization” panel moved to
   the new licensed
    Pro add-on. All free Standard features and their underlying
   option/meta/cron keys are unchanged from Batch Image Cleaner v1.9.28.

## Meta

 *  Version **1.9.66**
 *  Last updated **2 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.0 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [cleanup](https://wordpress.org/plugins/tags/cleanup/)[images](https://wordpress.org/plugins/tags/images/)
   [media](https://wordpress.org/plugins/tags/media/)[redirect](https://wordpress.org/plugins/tags/redirect/)
   [thumbnails](https://wordpress.org/plugins/tags/thumbnails/)
 *  [Advanced View](https://wordpress.org/plugins/lc-smart-media-redirect-cleaner/advanced/)

## Ratings

No reviews have been submitted yet.

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

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

## Contributors

 *   [ Celsius Anderson ](https://profiles.wordpress.org/celsiusanderson/)
 *   [ Nasrul Eam ](https://profiles.wordpress.org/nasruleam/)

## Support

Got something to say? Need help?

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