{"id":396744,"date":"2026-11-02T05:06:01","date_gmt":"2026-11-02T05:06:01","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/mediaprune\/"},"modified":"2026-11-02T05:21:40","modified_gmt":"2026-11-02T05:21:40","slug":"mediaprune","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/mediaprune\/","author":23580166,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.4","requires":"6.6","requires_php":"8.1","requires_plugins":null,"header_name":"MediaPrune \u2013 Media Cleaner & Unused Image Remover","header_author":"SandCircuit","header_description":"Finds media files nothing on your site uses, lets you review them, and cleans them safely through a 30-day quarantine.","assets_banners_color":"cbd9dc","last_updated":"2026-11-02 05:21:40","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/sandcircuit.com\/mediaprune\/","header_author_uri":"https:\/\/sandcircuit.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":122,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"sandcircuit","date":"2026-11-02 05:21:40","revision":3778950}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3778932,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3778932,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3778932,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3778932,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3778980,"resolution":"1","location":"assets","locale":"","width":1440,"height":968},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3778980,"resolution":"2","location":"assets","locale":"","width":1440,"height":968},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3778980,"resolution":"3","location":"assets","locale":"","width":1440,"height":968},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3778980,"resolution":"4","location":"assets","locale":"","width":1440,"height":968}},"screenshots":{"1":"Unused files found by the scan, ticked for cleaning. Untick anything you want to keep.","2":"List view, filtered to images, with search and file type filters.","3":"Moving files to quarantine: they can be restored for 30 days.","4":"The Quarantine tab: restore any file in one click."}},"plugin_section":[],"plugin_tags":[3786,234232,227565,233,146945],"plugin_category":[50,52],"plugin_contributors":[289222],"plugin_business_model":[],"class_list":["post-396744","plugin","type-plugin","status-publish","hentry","plugin_tags-cleanup","plugin_tags-delete-unused-images","plugin_tags-media-cleaner","plugin_tags-media-library","plugin_tags-unused-images","plugin_category-media","plugin_category-performance","plugin_contributors-sandcircuit","plugin_committers-sandcircuit"],"banners":{"banner":"https:\/\/ps.w.org\/mediaprune\/assets\/banner-772x250.png?rev=3778932","banner_2x":"https:\/\/ps.w.org\/mediaprune\/assets\/banner-1544x500.png?rev=3778932","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/mediaprune\/assets\/icon-128x128.png?rev=3778932","icon_2x":"https:\/\/ps.w.org\/mediaprune\/assets\/icon-256x256.png?rev=3778932","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/mediaprune\/assets\/screenshot-1.png?rev=3778980","caption":"Unused files found by the scan, ticked for cleaning. Untick anything you want to keep."},{"src":"https:\/\/ps.w.org\/mediaprune\/assets\/screenshot-2.png?rev=3778980","caption":"List view, filtered to images, with search and file type filters."},{"src":"https:\/\/ps.w.org\/mediaprune\/assets\/screenshot-3.png?rev=3778980","caption":"Moving files to quarantine: they can be restored for 30 days."},{"src":"https:\/\/ps.w.org\/mediaprune\/assets\/screenshot-4.png?rev=3778980","caption":"The Quarantine tab: restore any file in one click."}],"raw_content":"<!--section=description-->\n<p><strong>MediaPrune is a media cleaner for WordPress.<\/strong> It finds the images, videos, PDFs and other files in your media library that nothing on your site uses, so you can delete them and free up disk space without breaking any pages.<\/p>\n\n<p>Most media libraries fill up over time with unused images: old uploads, replaced product photos, test files and leftovers from deleted posts. Each upload also creates several resized copies, so one forgotten image can take up a lot of space. MediaPrune finds these files, shows you what can go, and lets you remove them in a few clicks.<\/p>\n\n<h4>Why MediaPrune<\/h4>\n\n<ul>\n<li><strong>Safe by default.<\/strong> Files go to a quarantine first, not straight to the bin. If a page turns out to need one, restore it in one click. Quarantined files are deleted for good after 30 days.<\/li>\n<li><strong>Careful scan.<\/strong> When in doubt, MediaPrune keeps the file. Each file is checked again right before it's removed, in case something started using it after the scan.<\/li>\n<li><strong>Thorough clean-up.<\/strong> Removes the original and every copy: all the sizes WordPress made, plus the extra crops and WebP versions other plugins create.<\/li>\n<li><strong>Works on large libraries.<\/strong> Scans in small steps, so it doesn't time out, and an interrupted scan picks up where it left off.<\/li>\n<li><strong>Lightweight and private.<\/strong> Runs only on its own admin screen, adds nothing to your site's front end, and sends no data anywhere.<\/li>\n<\/ul>\n\n<h4>How it finds unused media<\/h4>\n\n<p>A scan checks every place that can point to a file:<\/p>\n\n<ul>\n<li>the content of all posts, pages and custom post types, including drafts, scheduled and private posts: images, galleries, covers, videos and file links in blocks, classic content and shortcodes;<\/li>\n<li>featured images;<\/li>\n<li>custom fields on posts, categories, tags and users, which covers ACF, WooCommerce product galleries and page builders;<\/li>\n<li>site settings: the site logo and icon, Customizer settings and widgets.<\/li>\n<\/ul>\n\n<p>Any file used in one of these places is kept.<\/p>\n\n<h4>Review before you clean<\/h4>\n\n<p>Every unused file is listed with a preview, file size and upload date, and is ticked for cleaning. Untick anything you want to keep. You can search by file name, filter by images, video, audio or documents, switch between grid and list views, and see how much space your selection will free up. Files you untick stay unticked in later scans.<\/p>\n\n<h4>Quarantine or delete permanently<\/h4>\n\n<ul>\n<li><strong>Move to quarantine<\/strong> takes the selected files offline. They disappear from the media library and their URLs stop working, so if a page still used one, you'll notice straight away. Restore any file from the Quarantine tab.<\/li>\n<li><strong>Clean selected<\/strong> deletes the selected files permanently, after you confirm. Use it for files you're sure about.<\/li>\n<\/ul>\n\n<p>Uninstalling MediaPrune restores everything in quarantine before it removes the plugin's own data.<\/p>\n\n<h4>Credits<\/h4>\n\n<p>The admin screen's line icons are based on the <a href=\"https:\/\/lucide.dev\">Lucide<\/a> icon set (ISC licence). The licence notice is in <code>third-party-licenses.txt<\/code>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>In your WordPress admin, go to Plugins \u2192 Add New, search for \"MediaPrune\", then install and activate it.<\/li>\n<li>Go to Media \u2192 MediaPrune and click \"Scan media library\".<\/li>\n<li>Review the list of unused files, untick anything you want to keep, then click \"Move to quarantine\".<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20delete%20unused%20images%20in%20wordpress%3F\"><h3>How do I delete unused images in WordPress?<\/h3><\/dt>\n<dd><p>Install MediaPrune, go to Media \u2192 MediaPrune and run a scan. It lists every image and file nothing on your site uses. Review the list, then move the files to quarantine. They're deleted for good after 30 days, or straight away if you choose \"Delete now\".<\/p><\/dd>\n<dt id=\"is%20it%20safe%3F%20can%20it%20delete%20an%20image%20that%20is%20still%20in%20use%3F\"><h3>Is it safe? Can it delete an image that is still in use?<\/h3><\/dt>\n<dd><p>MediaPrune checks your posts, pages, custom fields and site settings, and keeps any file it isn't sure about. It can't see files referenced from outside the database, such as an image hard-coded in a theme's CSS or PHP, or linked from another website. That's why cleaned files go to quarantine first: look over your site after cleaning, and restore anything that's missing.<\/p>\n\n<p>Developers can mark such files as used with the <code>mediaprune_used_attachment_ids<\/code> filter.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%2C%20acf%20and%20page%20builders%3F\"><h3>Does it work with WooCommerce, ACF and page builders?<\/h3><\/dt>\n<dd><p>Yes. MediaPrune reads custom fields, which is where WooCommerce stores product galleries and where ACF and page builders store images, so files used there are kept.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20images%20served%20from%20a%20cdn%2C%20or%20with%20webp%20copies%3F\"><h3>Does it work with images served from a CDN, or with WebP copies?<\/h3><\/dt>\n<dd><p>Yes. Files are matched by their path, so CDN URLs, resized copies, <code>-scaled<\/code> originals and WebP versions all count as uses of the original file.<\/p><\/dd>\n<dt id=\"will%20it%20free%20up%20disk%20space%3F\"><h3>Will it free up disk space?<\/h3><\/dt>\n<dd><p>Yes. It removes each file from the server along with every resized copy, not just the media library entry. The review screen shows how much space your selection will free.<\/p><\/dd>\n<dt id=\"where%20do%20quarantined%20files%20go%3F\"><h3>Where do quarantined files go?<\/h3><\/dt>\n<dd><p>Into a folder inside your uploads directory, named <code>mediaprune-quarantine-<\/code> plus a random suffix, protected by an <code>index.php<\/code> and an <code>.htaccess<\/code> file that blocks web access. While a file is in quarantine, it's hidden from the media library.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20down%20my%20site%20or%20send%20data%20anywhere%3F\"><h3>Does it slow down my site or send data anywhere?<\/h3><\/dt>\n<dd><p>No. MediaPrune loads only on its own admin screen, adds nothing to your site's front end, and makes no outside requests.<\/p><\/dd>\n<dt id=\"what%20does%20it%20need%20from%20the%20server%3F\"><h3>What does it need from the server?<\/h3><\/dt>\n<dd><p>PHP must be able to write to the uploads folder directly, which is the case on most hosts.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Find and delete unused images and media files safely. Cleaned files go to a 30-day quarantine, so you can restore anything in one click.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/396744","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=396744"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sandcircuit"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=396744"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=396744"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=396744"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=396744"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=396744"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=396744"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}