ShrinkFox

How to bulk resize images for WordPress

WordPress generates its own thumbnails, but it does that from whatever you upload. Feed it 6 MB camera files and you get a bloated media library and slow pages. Resize before you upload, not after.

Last updated 11 September 2026

What WordPress does with your uploads

When you upload an image, WordPress creates several resized copies — typically thumbnail (150 × 150), medium (300 × 300), medium-large (768 wide), and large (1024 × 1024), plus whatever additional sizes your theme registers. It keeps your original too.

Two consequences follow. First, an oversized upload multiplies: one 6 MB original becomes six files. Second, WordPress never resizes your original, so if it's 6000 px wide, that's what sits in your media library forever.

The sizes worth targeting

UseUpload at
Featured image / blog header1200 × 630 px
Full-width hero1920 px wide
In-post content image1200 px wide
Sidebar / widget600 px wide
Logo2× its display size, PNG

The general rule: upload at roughly twice the width the image will display at, to cover retina screens, and no more.

The workflow

  1. Open ShrinkFox and drop in the images you're about to upload.
  2. Choose the WordPress featured (1200 × 630) preset for blog headers, or set a custom width for content images and leave the height to follow the aspect lock.
  3. Leave the mode on Fit inside for content images so nothing gets cropped. Use Fill and crop for featured images, where a consistent shape matters more than showing the whole frame.
  4. Tick Don't enlarge images smaller than this.
  5. Set format to WebP at quality 80 — WordPress has supported WebP uploads natively since version 5.8.
  6. Process, download the ZIP, and upload to your media library.

A note on WebP in WordPress

WordPress accepts WebP uploads and generates WebP thumbnails from them. Most modern themes handle it without issue.

Two caveats. Some older themes and page builders have hardcoded assumptions about JPEG or PNG — test with one image before converting your whole library. And if you're using a CDN or an optimisation plugin that already converts to WebP on delivery, uploading WebP is redundant; upload well-sized JPEGs and let the plugin do its job.

Fixing a media library that's already bloated

Resizing before upload only helps going forward. For an existing library:

Turn off image sizes you don't use

If your theme registers a dozen image sizes and you use three, you're generating and storing nine useless files per upload. Adding this to your theme's functions.php stops WordPress creating the default medium-large size:

add_filter('intermediate_image_sizes_advanced', function($sizes) {
    unset($sizes['medium_large']);
    return $sizes;
});

Check what your theme actually uses before removing anything, and test on a staging site first.

The thing that matters most

Image weight is usually the single largest contributor to poor Core Web Vitals scores, and Largest Contentful Paint is almost always an image. Getting your uploads to a sensible size before they enter WordPress fixes more page-speed problems than any caching plugin will.

Resize and compress your images now

Free, no account, and nothing leaves your browser.

Open ShrinkFox