40+
June 25, 2026
January 5, 2025
Media Wipe is a powerful and secure WordPress plugin that provides comprehensive media library management capabilities. With revolutionary AI-powered unused media detection, professional DataTable interfaces, advanced confirmation systems, and detailed audit logging, it’s the smartest and safest way to clean up your WordPress media library.
Key Features:
DataTable Features:
Delete Selected Media:
Delete Unused Media (AI-Powered):
Dashboard Overview:
Deletion History & Audit Logging:
Security & Safety Features:
Use Cases:
Performance & Technical:
WordPress Compatibility:
For support, documentation, and feature requests, please visit:
* Plugin Dashboard: Access comprehensive statistics and quick actions within WordPress admin
* Deletion History: View detailed audit logs and manage logging settings
* Author website: https://mdnahidhasan.netlify.app
* WordPress.org support forums: Community support and discussions
Media Wipe respects your privacy and follows WordPress privacy best practices:
* The plugin only logs activities when logging is enabled in Deletion History settings
* All logs are stored locally in your WordPress database
* No data is transmitted to external servers or third parties
* User information is only logged for audit and security purposes
* You can enable/disable logging and clear all logs at any time from the Deletion History page
* IP addresses and user information are logged only for security audit purposes
Developed by Md. Nahid Hasan with a focus on security, usability, and WordPress best practices.
This plugin is licensed under the GPLv2 or later. For details, visit https://www.gnu.org/licenses/gpl-2.0.html.
/wp-content/plugins/media-wipe directory, or install the plugin through the WordPress plugins screen directly.Quick Start Guide:
1. Dashboard: View media statistics and recent activity
2. Delete Selected: Browse and select specific files to delete using the professional DataTable
3. Delete Unused: Run AI-powered scan to find unused media files with confidence scoring
4. Deletion History: Review all deletion activities and manage audit logging
Yes, Media Wipe is fully tested and compatible with WordPress 6.8 (the latest version) and works with WordPress 5.0 and above. It also supports PHP 7.4 to 8.3 and is designed for single-site installations.
Yes, Media Wipe includes multiple safety layers including AI-powered confidence scoring, backup verification requirements, multi-step confirmation processes, and comprehensive audit logging. However, always create a complete backup before using any deletion features.
No, once files are deleted using this plugin, they cannot be recovered. This is why the plugin requires explicit confirmation that you have created a backup before proceeding. All deletions are permanent and irreversible.
The plugin uses professional DataTables with search, sorting, pagination, and bulk selection. You can search for files, sort by any column, select multiple files across pages, and perform bulk operations. The interface is fully responsive and works on mobile devices.
Delete Selected lets you manually browse and select specific media files to delete using a professional DataTable interface. Delete Unused uses AI-powered scanning to automatically identify media files that aren’t being used anywhere on your site, with confidence scoring to help you make safe decisions.
The system scans your posts, pages, widgets, menus, and theme files to identify media usage. It assigns confidence scores (0-100%) with visual badges: High (90-100%) = very safe to delete, Medium (75-89%) = review recommended, Low (0-74%) = manual review required.
The confidence score indicates how certain the system is that a file is unused. High confidence (90-100%) files are very safe to delete. Medium confidence (75-89%) files should be reviewed. Low confidence (0-74%) files require manual verification before deletion.
The Deletion History page shows all deletion activities in a professional DataTable with timestamps, user information, IP addresses, and detailed logs. You can enable/disable logging, clear logs, and export data for compliance purposes.
Both! You can delete individual files using the “Delete” button in each table row, or select multiple files and use “Delete Selected” for bulk operations. The interface supports both single and bulk deletion workflows.
The plugin implements rate limiting to prevent abuse, allowing a maximum number of deletion operations per hour. This helps maintain system stability and prevents accidental mass deletions.
The AI-powered detection system is highly accurate, scanning posts, pages, widgets, menus, and theme files. Files with 90%+ confidence scores are very safe to delete. For maximum safety, always start with “Select High Confidence Only” and review lower-confidence files manually.
Currently, the plugin is designed for single-site installations. Multisite support is planned for future versions.
After activation, visit the Media Wipe Dashboard to see your media library statistics. Use Delete Selected to manually choose files, or Delete Unused for AI-powered detection. Always start with “Select High Confidence Only” for the safest automated cleanup.
Modern React + Tailwind CSS UI
UI / Design
– NEW: Complete front-end rebuild of all five admin screens (Dashboard, Delete Unused, Delete Selected, Recycle Bin, Deletion History) in React + Tailwind CSS for a faster, cleaner, more user-friendly experience
– NEW: Reusable component library (buttons, cards, badges, chips, toggles, data tables, modals, toasts, empty states) for a consistent look across every screen
– NEW: Pill-shaped buttons with refined colours, depth, and hover/active states
– IMPROVED: Simplified tab navigation — the active tab is shown as a clean pill (no underline or rule)
– IMPROVED: Delete All and permanent-delete confirmations now use a unified type-to-confirm dialog
– IMPROVED: Tailwind styling is scoped to the plugin so the new UI never conflicts with wp-admin
Under the hood
– NEW: Assets are built with @wordpress/scripts; React is provided by WordPress core (no bundled framework)
– IMPROVED: Every screen reuses the existing AJAX endpoints — no changes to deletion logic, nonces, or capabilities
– IMPROVED: The legacy Material Design 3 CSS/JS is no longer loaded; the new UI replaces it
WordPress Playground “Try Now” & Bug Fixes
WordPress Playground
– FIXED: “Try Now” button was missing from the wordpress.org/plugins/media-wipe/ page — blueprint.json was inside the plugin ZIP instead of the SVN assets directory where WordPress.org reads it from
– ADDED: blueprint.json now lives in .wordpress-org/blueprints/ so it is deployed to the SVN assets folder on every push, enabling the live preview button on the plugin directory page
– FIXED: Asset-deploy GitHub Actions workflow only fired on the trunk branch — added main branch as a trigger so blueprint and asset updates are deployed automatically
Bug Fixes
– FIXED: Dashboard media statistics counted trashed attachments, causing the total to be higher than what “Delete All Media” would actually delete (trashed items are excluded from the delete-all operation)
– FIXED: PHP 8.x deprecation notice in the unused media scanner — $_POST[‘nonce’] was accessed directly without an isset() guard before being passed to wp_verify_nonce()
– FIXED: Dead ini_get(‘safe_mode’) condition in the delete-all function — safe_mode was removed in PHP 7.0; the plugin requires 7.4+, so the check was always false and set_time_limit() was silently called regardless
– REMOVED: Unreachable fetch_all_media POST handler in the Delete Selected page — no form submits that field and the result variable was never used
Material Design 3 UI Revamp & Critical Bug Fixes
UI / Design
– NEW: Complete Material Design 3 visual overhaul across all plugin pages
– NEW: MD3 design token system (md3-tokens.css) — colour, typography, shape, and motion tokens
– NEW: Unified MD3 Snackbar notification system replacing old toast/notification stack
– NEW: MD3 Tab bar navigation, page headers, chip filters, cards, switches, and dialogs
– IMPROVED: Selected row highlight changed from bright blue to a subtle neutral tint
Bug Fixes
– FIXED: “Delete All Media” button did nothing — Continue step was blocked by stopPropagation on the dialog container preventing the event from reaching the delegated handler; both Next/Back buttons now use direct binding
– FIXED: “Delete All Media” AJAX nonce mismatch — PHP was verifying against a separate nonce action; all AJAX operations now share the single unified nonce
– FIXED: “Delete Selected Media” always returned “Security check failed” — PHP verified against media_wipe_delete_unused but JS sent media_wipe_ajax_nonce; now consistent
– FIXED: Recycle Bin “Enable” toggle showed stale state until hard reload — settings save was processed after the HTML was already rendered; handler moved to top of function so the form reflects saved state on the same response
– FIXED: Deletion History Activity/Security filter chips had no effect — DataTables was not loaded on the history page so the column search never ran; DataTables is now enqueued for the history page
New Feature: Recycle Bin (Soft Delete)
– NEW: Recycle Bin — deleted media files are now moved to trash instead of being permanently removed, when the feature is enabled
– NEW: Configurable retention period (7, 14, 30, 60, or 90 days) — files are auto-purged by WP-Cron after the chosen period
– NEW: Recycle Bin admin page with a visual grid showing all trashed files with thumbnails, file size, trash date, and days-remaining badge
– NEW: One-click restore — send any trashed file back to the media library instantly
– NEW: Bulk actions — Select All, Select None, Restore Selected, Delete Permanently, and Empty Trash
– NEW: Per-file restore and permanent delete buttons on each card
– NEW: Auto-purge WP-Cron job scheduled on plugin activation, removed on deactivation
– NEW: Enable/disable toggle and retention period selector directly on the Recycle Bin page
– NEW: Designed empty state with animated illustration and feature hints when trash is empty
– IMPROVED: All deletion paths (Delete All, Delete Selected, Delete Unused) now route through the recycle bin when enabled
Bug Fixes & Security
– FIXED: Delete unused files nonce was silently ignored in the AJAX call, causing deletions to fail
– FIXED: PHP notices from references to undefined settings keys (require_backup_confirmation, require_text_confirmation)
– FIXED: filesize() crash when an attachment’s physical file is missing from disk
– FIXED: Featured images on draft/private/pending posts were incorrectly flagged as unused
– FIXED: header_image and background_image customizer settings were never actually checked, allowing those media files to be falsely marked unused
– FIXED: PHP warning when iterating menu items on menus with no items (wp_get_nav_menu_items returns false)
– FIXED: N+1 database query in unused media scanner replaced with a single query
– SECURITY: Removed nonce fallback in ajax_delete_unused that weakened CSRF protection
– SECURITY: Removed unconditional error_log() calls that fired in production on every failed nonce
– SECURITY: IP address logging now uses only REMOTE_ADDR instead of spoofable X-Forwarded-For headers
– PERFORMANCE: Dashboard media size calculation is now cached for 24 hours (cache auto-clears on media add/delete)
– FIXED: Static settings cache was not invalidated after saving settings in the same request
– REMOVED: Instant Images / Unsplash integration feature
WordPress 6.9 Compatibility
– Few minor bug fixes and improvements.
Enhanced DataTable Interface & User Experience
– Few minor bug fixes and improvements.
Enhanced DataTable Interface & User Experience
– ENHANCED: Professional DataTable styling consistency between Delete Selected and Delete Unused tables
– IMPROVED: Delete Unused table now matches Delete Selected table design while preserving unique Confidence column
– ENHANCED: Unified button styling and spacing across all DataTable interfaces
– IMPROVED: Consistent hover effects, transitions, and responsive behavior
– ENHANCED: Mobile optimization with horizontal scrolling and touch-friendly controls
– IMPROVED: DataTable configuration standardization (25 items per page, consistent sorting)
– ENHANCED: Visual consistency with matching table headers, row styling, and image thumbnails
– IMPROVED: Professional confidence badge styling (High/Medium/Low indicators)
– ENHANCED: Streamlined user experience with identical interaction patterns across features
– PERFORMANCE: Optimized CSS and JavaScript for better loading performance
🎉 MAJOR RELEASE: Complete Interface Transformation
– REVOLUTIONARY: Complete plugin simplification – removed Settings and Support pages
– STREAMLINED: Clean 4-page structure: Dashboard Delete Selected Delete Unused Deletion History
– ENHANCED: Delete Unused with beautiful “No Files Found” messages and smarter defaults
– PROFESSIONAL: Modern Deletion History with DataTable, search, sort, and pagination
– OPTIMIZED: Desktop experience with max-width constraints for large screens
– PERFORMANCE: Removed 500+ lines of unused code for 20% faster loading
– DESIGN: Beautiful gradient icons, modern styling, and WordPress integration
– POSITIONING: Logical menu placement right after Media menu (position 11)
– FIXED: Critical undefined variable errors and broken functionality
– UX: Simplified interface with reduced cognitive load and better feedback
Major Interface Improvements & Bug Fixes
– FIXED: Critical undefined variable error in Deletion History page
– ENHANCED: Professional DataTable interface for Deletion History with search, sort, and pagination
– ENHANCED: Beautiful statistics overview with visual activity counts
– SIMPLIFIED: Removed broken “View Details” functionality for cleaner interface
– IMPROVED: Desktop optimization with max-width constraints for large screens (1920px+)
– IMPROVED: Menu positioning – moved to position 11 (right after Media menu)
– PERFORMANCE: Removed 500+ lines of unused JavaScript and CSS code
– DESIGN: Modern gradient icons and professional button styling
– UX: Enhanced mobile responsiveness across all pages
Streamlined Menu Structure
– Removed Settings page – moved logging toggle directly to Deletion History page
– Removed Support page – plugin interface is now self-explanatory
– Removed warning sections from Delete Selected and Delete Unused pages
– Clean 4-page structure: Dashboard Delete Selected Delete Unused Deletion History
– Removed Advanced Scan option – Basic scan is now the optimal default
– Added beautiful “No Files Found” message for empty media libraries with encouraging feedback
– Improved scan result handling with better user notifications
– Safety options unchecked by default for more comprehensive scanning
| Version | Download | Type |
|---|---|---|
| 1.6.0 | Download | Stable |
| 1.5.1 | Download | Stable |
| 1.5.0 | Download | Stable |
| 1.4.0 | Download | Stable |
| 1.3.5 | Download | Stable |
| 1.3.4 | Download | Stable |
| 1.3.3 | Download | Stable |
| 1.3.2 | Download | Stable |
| 1.3.1 | Download | Stable |
| 1.3.0 | Download | Stable |
| 1.2.4 | Download | Stable |
| 1.2.3 | Download | Stable |
| 1.2.2 | Download | Stable |
| 1.2.1 | Download | Stable |
| 1.2.0 | Download | Stable |
| 1.1.2 | Download | Stable |
| 1.1.1 | Download | Stable |
| 1.1.0 | Download | Stable |
| 1.0.3 | Download | Stable |
| 1.0.2 | Download | Stable |
| 1.0.1 | Download | Stable |
| 1.0.0 | Download | Stable |
| Development | Download | Trunk |