{"id":383354,"date":"2026-10-13T23:20:51","date_gmt":"2026-10-13T23:20:51","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/media-janitor\/"},"modified":"2026-10-13T23:20:22","modified_gmt":"2026-10-13T23:20:22","slug":"wisnoob-media-cleanup","status":"publish","type":"plugin","link":"https:\/\/me.wordpress.org\/plugins\/wisnoob-media-cleanup\/","author":23582087,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1.3","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Wisnoob Media Cleanup","header_author":"Wisnu A. Kurniawan","header_description":"Find and safely remove unused media files. Scans pages, posts, custom fields, widgets, theme settings and page builders to show exactly where each file is used \u2014 so you can clean up with confidence.","assets_banners_color":"7f7b8b","last_updated":"2026-10-13 23:20:22","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/paypal.me\/toast415","header_plugin_uri":"https:\/\/github.com\/wisnuub\/media-janitor","header_author_uri":"https:\/\/github.com\/wisnuub","rating":0,"author_block_rating":0,"active_installs":0,"downloads":56,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"wisnoob","date":"2026-10-13 23:20:22","revision":3745023}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3745023,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3745023,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3745023,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3745023,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3745023,"resolution":"1","location":"assets","locale":"","width":1600,"height":1048},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3745023,"resolution":"2","location":"assets","locale":"","width":1600,"height":1048},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3745023,"resolution":"3","location":"assets","locale":"","width":1600,"height":1048},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3745023,"resolution":"4","location":"assets","locale":"","width":1600,"height":1048}},"screenshots":{"1":"Summary and media grid filtered to unused files","2":"\"Used in\" details with Find on page","3":"A file highlighted on the front end","4":"Duplicate finder"}},"plugin_section":[],"plugin_tags":[3786,238093,84,233,219749],"plugin_category":[50],"plugin_contributors":[286597],"plugin_business_model":[],"class_list":["post-383354","plugin","type-plugin","status-publish","hentry","plugin_tags-cleanup","plugin_tags-duplicate-images","plugin_tags-media","plugin_tags-media-library","plugin_tags-unused-media","plugin_category-media","plugin_contributors-wisnoob","plugin_committers-wisnoob"],"banners":{"banner":"https:\/\/ps.w.org\/wisnoob-media-cleanup\/assets\/banner-772x250.png?rev=3745023","banner_2x":"https:\/\/ps.w.org\/wisnoob-media-cleanup\/assets\/banner-1544x500.png?rev=3745023","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wisnoob-media-cleanup\/assets\/icon-128x128.png?rev=3745023","icon_2x":"https:\/\/ps.w.org\/wisnoob-media-cleanup\/assets\/icon-256x256.png?rev=3745023","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wisnoob-media-cleanup\/assets\/screenshot-1.png?rev=3745023","caption":"Summary and media grid filtered to unused files"},{"src":"https:\/\/ps.w.org\/wisnoob-media-cleanup\/assets\/screenshot-2.png?rev=3745023","caption":"\"Used in\" details with Find on page"},{"src":"https:\/\/ps.w.org\/wisnoob-media-cleanup\/assets\/screenshot-3.png?rev=3745023","caption":"A file highlighted on the front end"},{"src":"https:\/\/ps.w.org\/wisnoob-media-cleanup\/assets\/screenshot-4.png?rev=3745023","caption":"Duplicate finder"}],"raw_content":"<!--section=description-->\n<p>Wisnoob Media Cleanup scans your whole site to work out which media files are actually used, and <strong>where<\/strong>. Instead of a bare \"unused\" label, every file shows the pages, products, widgets and settings that reference it, with a <strong>Find on page<\/strong> button that opens the page, scrolls to the image and highlights it.<\/p>\n\n<p><strong>Please back up your site before deleting anything. Deleted files cannot be recovered.<\/strong><\/p>\n\n<h4>What it scans<\/h4>\n\n<ul>\n<li>Post, page and product content and excerpts (any post type), including block attributes, <code>wp-image-123<\/code> classes and gallery shortcodes<\/li>\n<li>Featured images and WooCommerce product galleries<\/li>\n<li>Custom fields, including ACF image and gallery fields<\/li>\n<li>Elementor page data<\/li>\n<li>WooCommerce product category thumbnails and other term images<\/li>\n<li>Widgets (classic and block), menus, Customizer settings, site logo and site icon<\/li>\n<li>Block theme templates, template parts and global styles<\/li>\n<li>Additional CSS<\/li>\n<li>User profile images<\/li>\n<\/ul>\n\n<h4>Safety first<\/h4>\n\n<ul>\n<li>Scans run in small steps, so large libraries never time out, and deleting stays disabled until a scan has fully finished.<\/li>\n<li>Files the scan found in use are never deleted by \"Delete All Unused\".<\/li>\n<li>Right before deleting, Wisnoob Media Cleanup re-checks content edited since the scan, so an image you just added to a page is skipped.<\/li>\n<li>Every delete asks for confirmation.<\/li>\n<\/ul>\n\n<h4>Duplicate finder<\/h4>\n\n<p>The Duplicates tab finds:<\/p>\n\n<ul>\n<li><strong>Exact duplicates:<\/strong> byte-identical files uploaded more than once<\/li>\n<li><strong>Scale variants:<\/strong> <code>icon.png<\/code>, <code>icon@2x.png<\/code>, <code>icon-3x.png<\/code><\/li>\n<li><strong>Visual duplicates:<\/strong> the same picture in a different size, format or with small edits<\/li>\n<\/ul>\n\n<p>Each file shows whether it is used, so you can keep the one your pages rely on.<\/p>\n\n<h4>Wisnoob Media Cleanup Pro<\/h4>\n\n<p>Want an undo? <a href=\"https:\/\/checkout.freemius.com\/plugin\/40992\/plan\/71073\/\">Wisnoob Media Cleanup Pro<\/a> is an optional paid add-on:<\/p>\n\n<ul>\n<li><strong>Quarantine instead of permanent delete:<\/strong> removed files are kept for 30 days and can be restored with one click.<\/li>\n<li><strong>Merge duplicates:<\/strong> keep one copy and every page, featured image and gallery that used the others is updated automatically.<\/li>\n<\/ul>\n\n<p>Everything described above works without it.<\/p>\n\n<h4>What it can't see<\/h4>\n\n<p>Files referenced only from theme or plugin PHP code, hard-coded in theme CSS files, or linked from other websites are not detected. Check the \"Find on page\" result before deleting anything you are unsure about.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/wisnoob-media-cleanup\/<\/code>, or install it from <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Activate it.<\/li>\n<li>Go to <strong>Media \u2192 Wisnoob Media Cleanup<\/strong> and click <strong>Scan Media Library<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20it%20safe%3F\"><h3>Is it safe?<\/h3><\/dt>\n<dd><p>Wisnoob Media Cleanup only deletes files you select, after confirming, and only after a complete scan. It cannot see every possible reference (see \"What it can't see\"), so always keep a backup.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20page%20builders%3F\"><h3>Does it work with page builders?<\/h3><\/dt>\n<dd><p>Elementor is scanned directly. Gutenberg, Classic Editor, WPBakery and Divi content is read from the post content, which covers image URLs and the image IDs those builders store.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20down%20my%20site%3F\"><h3>Will it slow down my site?<\/h3><\/dt>\n<dd><p>No. Scanning only happens when you click Scan in the admin. Nothing runs on the front end except the \"Find on page\" highlighter, and only for logged-in administrators who opened a page from Wisnoob Media Cleanup.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20uninstall%3F\"><h3>What happens to my data if I uninstall?<\/h3><\/dt>\n<dd><p>Uninstalling removes Wisnoob Media Cleanup's own table and settings. Your media files are not touched.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Scans now run in resumable steps with real progress, so large sites no longer time out.<\/li>\n<li>Deleting is disabled until a scan fully completes, and files found in use are skipped unless you confirm.<\/li>\n<li>Re-checks content edited since the scan right before deleting.<\/li>\n<li>Detects images referenced by ID: gallery shortcodes, image\/gallery\/cover blocks, ACF galleries, WPBakery, block-theme site logo, WooCommerce category thumbnails and placeholder.<\/li>\n<li>Scans product short descriptions, templates, template parts, global styles, term meta and user meta.<\/li>\n<li>Duplicate scan runs in steps and caches file hashes.<\/li>\n<li>\"Space recoverable\" now includes thumbnails.<\/li>\n<li>Summary figures load correctly when returning to the page.<\/li>\n<li>Selections reset when switching tabs, filters or searching, so hidden files can't be deleted by accident.<\/li>\n<li>Escape closes the details window; all interface text is translatable.<\/li>\n<li>Works on PHP 7.4.<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Find unused and duplicate media, see exactly where every file is used, and clean up your library with confidence.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/383354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=383354"}],"author":[{"embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wisnoob"}],"wp:attachment":[{"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=383354"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=383354"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=383354"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=383354"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=383354"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/me.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=383354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}