Size Shelf – Regenerate Thumbnails & Image Sizes
Size Shelf – Regenerate Thumbnails & Image Sizes

Size Shelf – Regenerate Thumbnails & Image Sizes

0/5 (0 ratings) — active installs Updated Nov 12, 2026
Choose what to make and which images. The overview shows your library, sizes per upload and leftovers.

Choose what to make and which images. The overview shows your library, sizes per upload and leftovers.

Size Shelf regenerates thumbnails and other image sizes after you change theme, install a plugin that adds sizes, or edit a size in Settings Media. It also tidies up afterwards: it finds the leftover files of old and switched-off sizes, shows you exactly what it would remove, and moves them to a trash you can restore from.

Everything in this plugin is free. There are no locked buttons, no ads and no upgrade nags in your dashboard.

Regenerate thumbnails

  • Missing sizes only, all sizes, or just the sizes you choose. “Missing sizes only” is the quick fix after a theme switch: it only makes what isn’t there yet and leaves existing files alone.
  • Whole library, a date range, or images you pick. Pick images in the familiar Media Library picker, or select them in the Media Library list and use the Regenerate thumbnails bulk action. Every image also gets a Regenerate thumbnails link in the list view and a button on its edit screen.
  • Built for big libraries and cheap hosting. Runs are processed in small, time-limited batches. If PHP times out, an image crashes the editor, or you close the tab, the run is saved after every image and picks up exactly where it stopped. One broken image is logged and skipped; it never ends the run.
  • Progress you can trust. A live progress bar with time elapsed and time left, counters for regenerated, skipped and failed images, and a filterable log that shows each problem with its reason.
  • Never touches originals. Size Shelf only writes the generated sizes. Your uploaded files and the “-scaled” originals stay exactly as they are. Sizes larger than an image are skipped (WordPress never makes them), and a size that fails keeps its old file.

Image sizes

  • Every registered size in one list with its dimensions, crop, a shape preview, how many images have it, and where it comes from: WordPress, your theme, or which plugin.
  • Switch off sizes you don’t use. WooCommerce, page builders and themes often add sizes your site never shows. Switched-off sizes are no longer made for new uploads or regenerations. Nothing is deleted when you switch a size off.
  • Big image scaling. Turn WordPress’s automatic “-scaled” copy of very large uploads on or off.

Delete unused image sizes, safely

  • Dry run first, always. The scan lists leftover files from sizes that no longer exist (for example from an old theme) and files of switched-off sizes, with their total size. Nothing is moved until you confirm.
  • Files that are still used are kept. Files referenced by any image’s metadata are protected, and files whose names appear in post content or custom fields (for example a hard-coded photo-300x200.jpg in an old post) are kept and listed as “kept”.
  • A real trash with undo. Files are moved into a trash folder inside uploads, not deleted. Restore a whole batch with one click (its metadata is restored too), or delete it permanently when you’re happy.

WP-CLI

Everything works from the command line too, using the same resumable engine:

wp size-shelf regenerate [<ids>...] [--missing] [--sizes=<names>] [--from=<date>] [--to=<date>] [--yes]
wp size-shelf sizes · `wp size-shelf disable <size>` · `wp size-shelf enable <size>`
wp size-shelf cleanup scan|list|trash|restore|empty
wp size-shelf job [status|resume|cancel]

Size Shelf Pro

An optional paid add-on for people who want this on autopilot: background and scheduled runs, regenerating a Media Shelf folder, custom image sizes without code, WebP/AVIF sizes, and per-post-type size rules. The free plugin is complete without it.

Privacy

Size Shelf sends nothing anywhere. It has no tracking, no remote calls and no external services. It stores its settings and run history in your database, and cleanup records in its own table.