{"id":387636,"date":"2026-10-25T01:34:17","date_gmt":"2026-10-25T01:34:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/reinvent-regenerate-thumbnails\/"},"modified":"2026-10-25T01:53:07","modified_gmt":"2026-10-25T01:53:07","slug":"reinvent-retina-images","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/reinvent-retina-images\/","author":23258933,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.3","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Reinvent Retina Images","header_author":"Reinvent WP","header_description":"Sharp retina (2\u00d7) images and fixed thumbnails in one click: regenerate missing image sizes, turn off sizes you don't need, make WebP\/AVIF thumbnails and safely remove old sizes. Runs in the background without timeouts.","assets_banners_color":"c4beb8","last_updated":"2026-10-25 01:53:07","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/reinvent-retina-images","header_author_uri":"https:\/\/reinventwp.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":62,"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":"reinventwp","date":"2026-10-25 01:45:54","revision":3763862},"1.0.1":{"tag":"1.0.1","author":"reinventwp","date":"2026-10-25 01:53:07","revision":3763865}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3763854,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3763854,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3763854,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3763854,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3763865,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/wp-admin\\\/upload.php?page=rwprt-thumbnails\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"features\":{\"networking\":true},\"steps\":[{\"step\":\"login\",\"username\":\"admin\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"reinvent-retina-images\"},\"options\":{\"activate\":true}},{\"step\":\"runPHP\",\"code\":\"<?php require_once '\\\/wordpress\\\/wp-load.php'; require_once ABSPATH . 'wp-admin\\\/includes\\\/image.php'; $date = '2023-04-18 10:00:00'; $make = function ( $name, $rgb ) use ( $date ) { $im = imagecreatetruecolor( 1800, 1200 ); imagefill( $im, 0, 0, imagecolorallocate( $im, $rgb[0], $rgb[1], $rgb[2] ) ); imagefilledellipse( $im, 1300, 350, 300, 300, imagecolorallocate( $im, 255, 236, 179 ) ); imagefilledrectangle( $im, 0, 820, 1800, 1200, imagecolorallocate( $im, (int) ( $rgb[0] * 0.6 ), (int) ( $rgb[1] * 0.6 ), (int) ( $rgb[2] * 0.6 ) ) ); ob_start(); imagejpeg( $im, null, 90 ); $up = wp_upload_bits( $name . '.jpg', null, ob_get_clean(), '2023\\\/04' ); $id = wp_insert_attachment( array( 'post_title' => ucwords( str_replace( '-', ' ', $name ) ), 'post_mime_type' => 'image\\\/jpeg', 'post_status' => 'inherit', 'post_date' => $date, 'post_date_gmt' => $date ), $up['file'] ); wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $up['file'] ) ); $old = wp_get_image_editor( $up['file'] ); if ( ! is_wp_error( $old ) ) { $old->resize( 1400, 500, true ); $old->save( dirname( $up['file'] ) . '\\\/' . $name . '-1400x500.jpg' ); } return $id; }; foreach ( array( 'summer-sale-hero' => array( 120, 170, 220 ), 'team-photo' => array( 200, 150, 110 ), 'product-red-bike' => array( 210, 90, 80 ), 'mountain-lake' => array( 80, 120, 170 ), 'cafe-street' => array( 150, 120, 200 ), 'beach-day' => array( 90, 170, 160 ) ) as $name => $rgb ) { $make( $name, $rgb ); } wp_mkdir_p( WP_CONTENT_DIR . '\\\/mu-plugins' ); file_put_contents( WP_CONTENT_DIR . '\\\/mu-plugins\\\/demo-theme-sizes.php', \\\"<?php\\\\n\\\/\\\/ Demo: the theme now asks for two new image sizes the existing images don't have yet.\\\\nadd_action( 'after_setup_theme', function () { add_image_size( 'product-card', 600, 600, true ); add_image_size( 'hero-wide', 1600, 700, true ); }, 20 );\\\\n\\\" ); ?>\"}]}"}},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3763854,"resolution":"1","location":"assets","locale":"","width":1280,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3763854,"resolution":"2","location":"assets","locale":"","width":1280,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3763854,"resolution":"3","location":"assets","locale":"","width":1280,"height":900}},"screenshots":{"1":"Home: how many images need new sizes, fixed in one click.","2":"Image sizes: every size with its source, missing count, disk use and Retina 2\u00d7 switch.","3":"Clean up: old sizes you can remove, with undo."}},"plugin_section":[],"plugin_tags":[194661,3473,30630,6626,15376],"plugin_category":[],"plugin_contributors":[241539],"plugin_business_model":[],"class_list":["post-387636","plugin","type-plugin","status-publish","hentry","plugin_tags-avif","plugin_tags-image-sizes","plugin_tags-regenerate-thumbnails","plugin_tags-retina","plugin_tags-webp","plugin_contributors-reinventwp","plugin_committers-reinventwp"],"banners":{"banner":"https:\/\/ps.w.org\/reinvent-retina-images\/assets\/banner-772x250.png?rev=3763854","banner_2x":"https:\/\/ps.w.org\/reinvent-retina-images\/assets\/banner-1544x500.png?rev=3763854","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/reinvent-retina-images\/assets\/icon-128x128.png?rev=3763854","icon_2x":"https:\/\/ps.w.org\/reinvent-retina-images\/assets\/icon-256x256.png?rev=3763854","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/reinvent-retina-images\/assets\/screenshot-1.png?rev=3763854","caption":"Home: how many images need new sizes, fixed in one click."},{"src":"https:\/\/ps.w.org\/reinvent-retina-images\/assets\/screenshot-2.png?rev=3763854","caption":"Image sizes: every size with its source, missing count, disk use and Retina 2\u00d7 switch."},{"src":"https:\/\/ps.w.org\/reinvent-retina-images\/assets\/screenshot-3.png?rev=3763854","caption":"Clean up: old sizes you can remove, with undo."}],"raw_content":"<!--section=description-->\n<p>Changed your theme? Added WooCommerce or a page builder? Your old images don't have the sizes the new design asks for, so pages show squeezed full-size images or blurry, badly cropped ones. <strong>Reinvent Retina Images<\/strong> fixes that in one click.<\/p>\n\n<p><strong>Fix my images.<\/strong> Checks every image, then makes only the sizes that are missing or out of date. Much faster than rebuilding everything, and it notices sizes whose dimensions changed, not just sizes that are missing.<\/p>\n\n<p><strong>Runs in the background, never times out.<\/strong> Works in small steps that fit your server's limits, resumes where it left off, and keeps going after you close the page. Large libraries are fine.<\/p>\n\n<p><strong>Image sizes, under control.<\/strong> See every size your theme and plugins create, how many images are missing it and how much space it uses. Turn off sizes you don't need, add your own, and set the big image limit.<\/p>\n\n<p><strong>Free up space, safely.<\/strong> Finds old sizes nothing uses anymore: sizes from your previous theme, leftovers and old JPEG copies after switching to WebP. Before moving a file we check your posts for it and keep anything still in use. Files go to a private trash first, so you can restore them in one click.<\/p>\n\n<p><strong>Sharp on retina screens.<\/strong> Turn on Retina 2\u00d7 for a size and every image also gets a double-size copy. WordPress adds it to the image's srcset, so phones and high-density screens load the sharp one and other screens keep the small one. No extra scripts. Images too small for the double size keep the normal one; we never enlarge (upscale) a photo.<\/p>\n\n<p><strong>WebP and AVIF thumbnails.<\/strong> Make smaller, faster thumbnails with your server's own image library. Your original uploads are never touched.<\/p>\n\n<h4>Everything is free<\/h4>\n\n<ul>\n<li>Fix missing and outdated sizes, or regenerate everything<\/li>\n<li>Choose which images: all, featured images only, recent uploads, or a selection<\/li>\n<li>Regenerate one image from the Media Library (row action, bulk action, or the button in the image details)<\/li>\n<li>Image sizes overview with sources, missing counts and disk usage<\/li>\n<li>Turn off sizes, add custom sizes, big image threshold<\/li>\n<li>Retina 2\u00d7 sizes, served by WordPress's own srcset, with a count of images too small for them<\/li>\n<li>WebP\/AVIF thumbnails with a quality setting<\/li>\n<li>Clean up old sizes with a usage check and undo<\/li>\n<li>Report of images that couldn't be processed and why<\/li>\n<li>Simple and Advanced modes, plus a settings search that understands plain words<\/li>\n<li>WP-CLI: <code>wp thumbnails-reinvent analyze<\/code>, <code>fix<\/code>, <code>regenerate<\/code>, <code>cleanup<\/code><\/li>\n<\/ul>\n\n<h4>Safe by design<\/h4>\n\n<ul>\n<li>Never touches your original upload or the edited version of an image.<\/li>\n<li>Makes sizes from the original image, not the downscaled \"-scaled\" copy, and respects images you edited in WordPress.<\/li>\n<li>Never deletes another image's file, even if its name looks like a thumbnail.<\/li>\n<li>Removed files go to a private trash that visitors can't open, and can be restored with their image data.<\/li>\n<\/ul>\n\n<p>Tip: keep a recent backup, like with any tool that changes files.<\/p>\n\n<p>This plugin is made by Reinvent WP and is not affiliated with the \"Regenerate Thumbnails\" plugin or its authors.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin works on your server. Your images are never uploaded anywhere. The plugin connects to one external service, operated by us:<\/p>\n\n<p><strong>Reinvent WP Services<\/strong> (services.reinventwp.com), used for four things:<\/p>\n\n<ol>\n<li>Settings search. It finds the right setting when you describe what you want in your own words. When you type in the settings search box on the plugin's admin page, it sends the text you typed, the plugin name and the plugin version. Nothing is sent until you type a search.<\/li>\n<li>Error reports. They help us fix bugs. They are sent only after you click \"I Agree\" on the privacy notice in the plugin's admin page. When the admin page hits an error, it sends the error message, the admin page URL (which includes your site address), your browser's user agent and the plugin version. Before you agree, errors are only saved in the plugin's own error log on your site.<\/li>\n<li>The list of Reinvent WP apps on the <strong>Reinvent WP \u2192 Dashboard<\/strong> page. When an administrator opens that page, your site downloads the current list at most once a day and keeps a copy. Nothing about your site or you is sent.<\/li>\n<li>The assistant (the <strong>Describe a problem with your site<\/strong> field) on the <strong>Reinvent WP \u2192 Dashboard<\/strong> page and on this plugin's page. When you send a question, it is sent with any screenshots or text files you attach to it (of a file, only its newest part, with emails, IP addresses, passwords and keys hidden by your browser first), the last few messages of the conversation and the list of Reinvent WP plugins on your site (whether each is active, inactive or not installed, and its version), so the answer can point to the right plugin and setting. Nothing is stored; the conversation stays in your browser tab. If you send feedback from the assistant's form, your email, site address and message go to the Reinvent WP team, like the feedback form.<\/li>\n<\/ol>\n\n<p>Reinvent WP Services: <a href=\"https:\/\/reinventwp.com\/terms-and-conditions\">Terms of use<\/a>, <a href=\"https:\/\/reinventwp.com\/privacy\">Privacy policy<\/a>.<\/p>\n\n<h3>Source Code<\/h3>\n\n<p>The admin screen is built with React and TypeScript. The compiled files in <code>public\/js<\/code> are generated with webpack from the human-readable source code included in the plugin at <code>source\/admin<\/code>. The Reinvent WP \u2192 Dashboard page and the assistant (<code>public\/hub<\/code>) are built from https:\/\/github.com\/reinventwp\/reinventwp-apps.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install the plugin from <strong>Plugins \u2192 Add New<\/strong>, or upload the zip.<\/li>\n<li>Activate it. You land on <strong>Media \u2192 Thumbnails<\/strong>.<\/li>\n<li>Click <strong>Check my images<\/strong>, then <strong>Fix my images<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"when%20do%20i%20need%20to%20regenerate%20thumbnails%3F\"><h3>When do I need to regenerate thumbnails?<\/h3><\/dt>\n<dd><p>After switching themes, after installing a plugin that adds image sizes (WooCommerce, page builders, sliders), after changing sizes in Settings \u2192 Media, or after moving a site where some files were lost.<\/p><\/dd>\n<dt id=\"will%20it%20overwrite%20my%20original%20images%3F\"><h3>Will it overwrite my original images?<\/h3><\/dt>\n<dd><p>No. Only the resized copies (thumbnails) are made again. The original upload, the \"-scaled\" copy and images you edited in WordPress stay as they are.<\/p><\/dd>\n<dt id=\"what%27s%20the%20difference%20between%20%22fix%20my%20images%22%20and%20%22regenerate%20everything%22%3F\"><h3>What's the difference between \"Fix my images\" and \"Regenerate everything\"?<\/h3><\/dt>\n<dd><p>\"Fix my images\" only makes sizes that are missing or whose dimensions or format changed. It's fast and usually all you need. \"Regenerate everything\" rebuilds every size from the original, which is useful after changing image quality or crop settings.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20old%20sizes%3F\"><h3>What happens to old sizes?<\/h3><\/dt>\n<dd><p>They stay unless you clean them up. The Clean Up screen lists them, checks that no post still links to them, and moves them to a private trash you can restore from.<\/p><\/dd>\n<dt id=\"how%20does%20retina%20work%3F\"><h3>How does retina work?<\/h3><\/dt>\n<dd><p>Turn on <strong>Retina 2\u00d7<\/strong> for a size in <strong>Image Sizes<\/strong>. The plugin registers a double-size version (Medium 300\u00d7300 gets Medium 2\u00d7 at 600\u00d7600), new uploads get it straight away, and <strong>Fix my images<\/strong> adds it to your existing images. WordPress lists it in the image's srcset, so the browser picks it only on screens that need it. Medium Large and Large are already doubled by WordPress itself (2\u00d7 Medium Large and 2\u00d7 Large), so they have no switch.<\/p><\/dd>\n<dt id=\"why%20didn%27t%20some%20images%20get%20a%20retina%20size%3F\"><h3>Why didn't some images get a retina size?<\/h3><\/dt>\n<dd><p>They are smaller than the double size. Enlarging them would only make a bigger file that looks just as soft, so WordPress skips them and the Image Sizes screen counts them as \"too small\".<\/p><\/dd>\n<dt id=\"how%20do%20i%20remove%20retina%20files%3F\"><h3>How do I remove retina files?<\/h3><\/dt>\n<dd><p>Turn the switch off, run <strong>Check my images<\/strong>, and the 2\u00d7 files show up in <strong>Clean Up<\/strong>, where you can move them to the trash and restore them if needed.<\/p><\/dd>\n<dt id=\"does%20webp%2Favif%20work%20on%20my%20server%3F\"><h3>Does WebP\/AVIF work on my server?<\/h3><\/dt>\n<dd><p>The plugin checks what your server's image library (GD or Imagick) can make and only offers formats it supports.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20large%20sites%3F\"><h3>Does it work on large sites?<\/h3><\/dt>\n<dd><p>Yes. It works in small steps, saves its progress after each image and continues in the background with WP-Cron. You can also use WP-CLI.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>New: describe a problem with your site on the Reinvent WP \u2192 Dashboard page or on this plugin's page, and the assistant suggests the Reinvent WP app that fixes it.<\/li>\n<li>New: the Reinvent WP \u2192 Dashboard page shows your Reinvent WP apps first, then the others you can install, from an up-to-date list (read once a day, with a built-in list as fallback). Each app's name links to its page.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Sharp retina images in one click: regenerate thumbnails, fix missing image sizes, turn off unneeded ones, make WebP\/AVIF and free up space.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/387636","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=387636"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/reinventwp"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=387636"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=387636"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=387636"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=387636"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=387636"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=387636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}