{"id":252904,"date":"2025-10-05T07:58:28","date_gmt":"2025-10-05T07:58:28","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/prune-thumbnails\/"},"modified":"2026-06-12T04:58:42","modified_gmt":"2026-06-12T04:58:42","slug":"thumbnail-manager","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/thumbnail-manager\/","author":21137534,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3","stable_tag":"1.3","tested":"7.0","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"Thumbnail Manager","header_author":"YoOhw.com","header_description":"Clean up unused thumbnails with progress; find orphan -WxH files; disable sizes for future uploads.","assets_banners_color":"77787b","last_updated":"2026-06-12 04:58:42","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/thumbnail-manager","header_author_uri":"https:\/\/yoohw.com","rating":5,"author_block_rating":0,"active_installs":60,"downloads":823,"num_ratings":1,"support_threads":1,"support_threads_resolved":1,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0":{"tag":"1.0","author":"yoohw","date":"2025-10-05 07:58:14"},"1.0.1":{"tag":"1.0.1","author":"yoohw","date":"2025-12-03 02:11:14"},"1.1":{"tag":"1.1","author":"yoohw","date":"2026-03-19 04:47:53"},"1.2":{"tag":"1.2","author":"yoohw","date":"2026-05-09 03:10:17"},"1.3":{"tag":"1.3","author":"yoohw","date":"2026-06-12 04:58:42"}},"upgrade_notice":{"1.3":"<p>Safety release with metadata-aware prune scanning, stricter delete guards, stale metadata cleanup, admin JS escaping, accessibility improvements, and prune safety smoke tests.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3517019,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3517019,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3517019,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3517019,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0","1.0.1","1.1","1.2","1.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3526963,"resolution":"1","location":"assets","locale":"","width":1920,"height":1080},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3526963,"resolution":"2","location":"assets","locale":"","width":1920,"height":1080},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3526963,"resolution":"3","location":"assets","locale":"","width":1920,"height":1080},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3526963,"resolution":"4","location":"assets","locale":"","width":1920,"height":1080}},"screenshots":[]},"plugin_section":[],"plugin_tags":[3786,3473,233,5995,2956],"plugin_category":[50],"plugin_contributors":[223812],"plugin_business_model":[],"class_list":["post-252904","plugin","type-plugin","status-publish","hentry","plugin_tags-cleanup","plugin_tags-image-sizes","plugin_tags-media-library","plugin_tags-regenerate","plugin_tags-thumbnails","plugin_category-media","plugin_contributors-yoohw","plugin_committers-yoohw","plugin_support_reps-jacobb26"],"banners":{"banner":"https:\/\/ps.w.org\/thumbnail-manager\/assets\/banner-772x250.png?rev=3517019","banner_2x":"https:\/\/ps.w.org\/thumbnail-manager\/assets\/banner-1544x500.png?rev=3517019","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/thumbnail-manager\/assets\/icon-128x128.png?rev=3517019","icon_2x":"https:\/\/ps.w.org\/thumbnail-manager\/assets\/icon-256x256.png?rev=3517019","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/thumbnail-manager\/assets\/screenshot-1.png?rev=3526963","caption":""},{"src":"https:\/\/ps.w.org\/thumbnail-manager\/assets\/screenshot-2.png?rev=3526963","caption":""},{"src":"https:\/\/ps.w.org\/thumbnail-manager\/assets\/screenshot-3.png?rev=3526963","caption":""},{"src":"https:\/\/ps.w.org\/thumbnail-manager\/assets\/screenshot-4.png?rev=3526963","caption":""}],"raw_content":"<!--section=description-->\n<p>Thumbnail Manager helps you control WordPress thumbnail generation, regenerate image sizes, and clean unused thumbnail files from the Media Library.<\/p>\n\n<p>Use it after changing themes, installing WooCommerce, disabling custom image sizes, or cleaning up years of generated media files. The plugin focuses on predictable thumbnail management: choose which image sizes should stay enabled, rebuild the thumbnails you need, preview cleanup results, then delete only reviewed generated files.<\/p>\n\n<p>Cleanup is metadata-aware and safety-focused. Thumbnail Manager validates uploads paths, protects original full-size images, runs prune\/delete actions in batches, and updates attachment metadata after deleted thumbnail sizes are removed.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li>Regenerate WordPress thumbnails for existing image attachments<\/li>\n<li>Generate only missing thumbnails or force-regenerate all selected images<\/li>\n<li>Disable unwanted registered image sizes for future uploads<\/li>\n<li>Prune unused thumbnails while keeping selected sizes<\/li>\n<li>Run Dry-run previews before deleting generated thumbnail files<\/li>\n<li>Detect legacy thumbnail sizes stored in attachment metadata<\/li>\n<li>Report disk-only orphan matches without deleting unmapped files by default<\/li>\n<li>Scan recommendations based on protected sizes, WooCommerce-related sizes, generated metadata, and common content references<\/li>\n<li>Process large Media Libraries with cursor-based AJAX queues and folder scoping<\/li>\n<li>Manage everything from Tools &gt; Thumbnail Manager<\/li>\n<\/ul>\n\n<h4>Common Use Cases<\/h4>\n\n<ul>\n<li>Clean WordPress thumbnail bloat after theme or page builder changes<\/li>\n<li>Regenerate thumbnails after changing Media Settings or custom image sizes<\/li>\n<li>Reduce WooCommerce image storage by reviewing generated product thumbnails<\/li>\n<li>Disable image sizes that should no longer be created for new uploads<\/li>\n<li>Rebuild missing thumbnails after migration, restore, or failed image processing<\/li>\n<li>Audit legacy thumbnail sizes left behind by old themes and plugins<\/li>\n<\/ul>\n\n<h4>Safety First<\/h4>\n\n<p>Thumbnail Manager is designed for controlled cleanup, not blind filesystem deletion.<\/p>\n\n<ul>\n<li>Original full-size images are not deleted<\/li>\n<li>Delete mode requires a fresh delete token and a completed scan<\/li>\n<li>Dry-run mode never deletes files<\/li>\n<li>Cleanup targets files from attachment metadata<\/li>\n<li>Disk-only orphan matches are reported, not deleted by default<\/li>\n<li>Paths are validated under the WordPress uploads directory before deletion<\/li>\n<li>Attachment metadata is updated after generated thumbnail sizes are removed<\/li>\n<\/ul>\n\n<h4>What It Does Not Do<\/h4>\n\n<ul>\n<li>It does not compress or optimize image quality<\/li>\n<li>It does not replace image optimization or CDN plugins<\/li>\n<li>It does not automatically delete media without confirmation<\/li>\n<li>It does not delete original uploaded images<\/li>\n<li>It does not unregister image sizes from themes or plugins<\/li>\n<\/ul>\n\n<h3>Usage<\/h3>\n\n<h4>Recommended Workflow<\/h4>\n\n<ol>\n<li>Open Tools &gt; Thumbnail Manager.<\/li>\n<li>Scan Recommendations to review likely keep\/remove sizes.<\/li>\n<li>Apply recommended sizes if they match your site.<\/li>\n<li>Open Thumbnail Sizes and save the sizes you want generated for future uploads.<\/li>\n<li>Run Regenerate to rebuild missing or selected thumbnails.<\/li>\n<li>Open Prune Files and run Dry-run before any deletion.<\/li>\n<li>Review matched files, then switch to Delete only when the preview is correct.<\/li>\n<\/ol>\n\n<h4>Regenerate Thumbnails<\/h4>\n\n<p>Use Regenerate when you need to rebuild WordPress image sizes for existing attachments. You can process all media, the current year, a specific uploads folder, or specific attachment IDs.<\/p>\n\n<h4>Prune Files<\/h4>\n\n<p>Use Prune Files to clean generated thumbnails for sizes you no longer want to keep. Always run Dry-run first. If orphan discovery is enabled, metadata-backed legacy sizes can be included, while unmapped disk-only matches are reported for review.<\/p>\n\n<h4>Thumbnail Sizes<\/h4>\n\n<p>Use Thumbnail Sizes to control which registered image sizes WordPress should generate for future uploads. This setting does not remove existing files until you run Prune Files.<\/p>\n\n<h3>Technical Notes<\/h3>\n\n<ul>\n<li>Uses <code>intermediate_image_sizes_advanced<\/code> to control future thumbnail generation<\/li>\n<li>Uses cursor-based AJAX queues for regenerate and prune scans<\/li>\n<li>Uses attachment metadata for prune candidates<\/li>\n<li>Validates filesystem paths under the uploads directory before deletion<\/li>\n<li>Updates attachment metadata after generated thumbnail files are removed<\/li>\n<li>Requires the <code>manage_options<\/code> capability<\/li>\n<li>Works per site on multisite installations<\/li>\n<\/ul>\n\n<h3>Privacy<\/h3>\n\n<p>Thumbnail Manager does not collect, store, or transmit personal data. All thumbnail scans, regeneration actions, and cleanup actions run locally on your WordPress site.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/thumbnail-manager\/<\/code> or install it from WordPress.org.<\/li>\n<li>Activate the plugin in WordPress.<\/li>\n<li>Go to Tools &gt; Thumbnail Manager.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20regenerate%20wordpress%20thumbnails%20after%20changing%20image%20sizes%3F\"><h3>Can I regenerate WordPress thumbnails after changing image sizes?<\/h3><\/dt>\n<dd><p>Yes. Use the Regenerate tab after changing Media Settings, switching themes, enabling WooCommerce image sizes, or saving different thumbnail size settings.<\/p><\/dd>\n<dt id=\"can%20this%20clean%20unused%20thumbnails%20from%20the%20media%20library%3F\"><h3>Can this clean unused thumbnails from the Media Library?<\/h3><\/dt>\n<dd><p>Yes. Use Prune Files to select the sizes you want to keep, run Dry-run, review the matched generated files, and then delete the reviewed thumbnail files in batches.<\/p><\/dd>\n<dt id=\"will%20thumbnail%20manager%20delete%20original%20images%3F\"><h3>Will Thumbnail Manager delete original images?<\/h3><\/dt>\n<dd><p>No. Original full-size attachment files are protected. The plugin targets generated thumbnail files from attachment metadata and validates paths before deletion.<\/p><\/dd>\n<dt id=\"does%20orphan%20discovery%20delete%20files%20that%20are%20not%20in%20wordpress%20metadata%3F\"><h3>Does orphan discovery delete files that are not in WordPress metadata?<\/h3><\/dt>\n<dd><p>No. Disk-only <code>-WxH<\/code> matches that cannot be mapped to attachment metadata are reported and skipped by default. Metadata-backed legacy sizes can be cleaned after review.<\/p><\/dd>\n<dt id=\"is%20it%20safe%20for%20woocommerce%20sites%3F\"><h3>Is it safe for WooCommerce sites?<\/h3><\/dt>\n<dd><p>Thumbnail Manager detects WooCommerce-related thumbnail sizes in recommendations and lets you review them before disabling, regenerating, or pruning. Always run Dry-run before deleting thumbnails on a live store.<\/p><\/dd>\n<dt id=\"is%20it%20safe%20for%20large%20media%20libraries%3F\"><h3>Is it safe for large Media Libraries?<\/h3><\/dt>\n<dd><p>Regenerate and prune scans use cursor-based queues, AJAX batches, progress tracking, and optional folder scoping. Disk-only orphan reporting still depends on the size of the selected uploads folder, so start with a smaller folder on very large sites.<\/p><\/dd>\n<dt id=\"does%20it%20optimize%20or%20compress%20images%3F\"><h3>Does it optimize or compress images?<\/h3><\/dt>\n<dd><p>No. Thumbnail Manager controls image sizes, regeneration, and cleanup. Use a dedicated image optimization plugin for compression, WebP conversion, CDN, or quality changes.<\/p><\/dd>\n<dt id=\"does%20it%20unregister%20image%20sizes%20from%20themes%20or%20plugins%3F\"><h3>Does it unregister image sizes from themes or plugins?<\/h3><\/dt>\n<dd><p>No. It prevents selected sizes from being generated for future uploads through WordPress filters. The theme or plugin that registered the size remains unchanged.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3 (Jun 12, 2026)<\/h4>\n\n<ul>\n<li>Hardened prune\/delete safety checks for tokens, scan completion, uploads path validation, and original image protection<\/li>\n<li>Refactored prune into a metadata-aware cursor scan instead of filesystem-wide regex deletion<\/li>\n<li>Updated delete batches to remove stale attachment size metadata after thumbnail files are deleted<\/li>\n<li>Added disk-only orphan reporting while keeping unmapped files out of the delete queue by default<\/li>\n<li>Escaped dynamic admin JavaScript output, localized admin strings, and improved ARIA states<\/li>\n<li>Added asset versioning and WP-CLI prune safety smoke tests<\/li>\n<\/ul>\n\n<h4>1.2 (May 9, 2026)<\/h4>\n\n<ul>\n<li>Added Recommendations tab for safer thumbnail cleanup decisions<\/li>\n<li>Added WooCommerce-aware size recommendations and one-click apply workflow<\/li>\n<li>Added scoped regenerate processing, force regenerate, and only-missing options<\/li>\n<li>Improved regenerate batching and admin progress handling<\/li>\n<\/ul>\n\n<h4>1.1 (Mar 19, 2026)<\/h4>\n\n<ul>\n<li>Added Regenerate Thumbnails with batch processing<\/li>\n<li>Improved the Sizes, Regenerate, and Prune workflow<\/li>\n<\/ul>\n\n<h4>1.0.1 (Dec 3, 2025)<\/h4>\n\n<ul>\n<li>Added translation support<\/li>\n<li>Improved UI labels and formatting<\/li>\n<li>Added accessibility improvements<\/li>\n<\/ul>\n\n<h4>1.0 (Oct 5, 2025)<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Added Prune Files with Dry-run and batch deletion<\/li>\n<li>Added orphan detection<\/li>\n<li>Added controls for future thumbnail generation<\/li>\n<\/ul>","raw_excerpt":"Regenerate WordPress thumbnails, disable image sizes, and safely clean unused media library thumbnails with dry-run previews.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/252904","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=252904"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/yoohw"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=252904"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=252904"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=252904"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=252904"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=252904"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=252904"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}