Every time you upload an image to WordPress, the platform doesn’t just store what you uploaded. It silently generates multiple resized copies — sometimes 10, 15, or even 20 additional versions — based on sizes registered by WordPress core, your active theme, and every plugin you have installed. Most of these copies are never used by anyone. They sit on your server consuming disk space, inflating backup sizes, and accumulating indefinitely.

The Scale of the Problem

A typical WordPress install with an active theme and a handful of plugins registers between 10 and 20 image sizes. Upload 500 images and you may have 7,500 to 10,000 image files on your server. Upload 5,000 images and you’re looking at 75,000 to 100,000 files — most of which serve no purpose.

This has real consequences: slower backups (both time and storage cost), slower server responses when file system operations are involved, and cluttered media library storage that fills shared hosting limits faster than expected.

How WordPress Image Sizes Work

WordPress core registers four default sizes: thumbnail (150×150), medium (300×300), medium_large (768×0), and large (1024×1024). Your theme registers additional sizes for its own layouts (hero images, featured post thumbnails, archive grids). WooCommerce registers sizes for product thumbnails, single product images, and the shop loop. Third-party plugins add even more.

The problem isn’t the concept — on-demand resizing is genuinely useful. The problem is that most themes and plugins add sizes they rarely or never use, and WordPress generates all registered sizes for every upload whether they’re needed or not.

How to Diagnose Your Image Size Situation

Check Registered Sizes

Add this temporarily to a PHP file accessible in your WordPress installation to see all registered sizes:

print_r( wp_get_registered_image_subsizes() );

Count the entries. More than 10 is typical. More than 15 warrants investigation and cleanup.

Check Disk Usage

In your hosting control panel or via SSH, check the size of wp-content/uploads/. Compare it to the total size of the original images you’ve uploaded. A ratio of 3:1 or higher is a sign of significant size bloat.

How to Stop Generating Unnecessary Sizes

Disable Specific Sizes

The Image Sizes Controller plugin from GrandPlugins lets you see all registered image sizes in one interface and disable any you don’t need. Disabling a size prevents new images from generating that variant — it doesn’t automatically delete existing files, but nothing new is created.

Remove Hardcoded Theme Sizes

Some theme sizes are registered with add_image_size() in the theme’s functions.php and have no admin interface for disabling them. The Image Sizes Controller overrides these at the filter level, so you can disable them without editing theme files.

Clean Up Existing Unused Files

After disabling unused sizes, use the “Regenerate Thumbnails” plugin or WP-CLI (wp media regenerate) to regenerate your Media Library. This only generates the sizes that are currently registered and enabled — previously created files of disabled sizes won’t be recreated. For removing existing unused files, a plugin like “Media Cleaner” can identify and delete orphaned size variants.

Performance Impact of Reducing Image Sizes

Fewer image sizes means faster uploads (less processing time), smaller backups, and lower disk I/O across the board. On shared hosting where disk quota is limited, this can make a meaningful difference. On high-traffic sites, it reduces the server load spike that occurs when multiple users are uploading images concurrently.

The change is invisible to your visitors — they only ever see the sizes that are actually used in your templates, which remain unaffected.

Image Sizes Controller

Plugin used in this tutorial

Image Sizes Controller

Get full control over the image sizes on your WordPress website. By using the Image Sizes Controller plugin,…

Learn more →