By |

WordPress Image Optimization: Plugin vs Pre-Upload Compression

Most advice on WordPress image optimization starts and ends with "install an optimization plugin." That sends people who do not need one to go install one anyway, and every plugin you add is another thing to update and another thing that can break during uploads. Decide whether you need it first.

The short version:

  • You already have hundreds of images — use a bulk optimizer (EWWW, ShortPixel). Processing the backlog is where plugins genuinely earn their keep
  • New site, or few images — compress before uploading and skip the plugin entirely
  • You upload phone photos straight from the camera roll — fix that first. Nothing else you do will matter as much

First: WordPress is already compressing

This surprises people. WordPress does not store your original JPEG untouched — it re-encodes uploads at quality 82 by default (since 4.5). On top of that, WordPress 5.3 and later automatically resizes any image whose longest side exceeds 2560px, via big_image_size_threshold. Upload a camera original and WordPress quietly serves a scaled version.

You can change the quality in your theme's functions.php:

add_filter('jpeg_quality', function () {
  return 75; // default is 82; lower means smaller files and more artifacts
});

Push below 75 and you will start seeing edge artifacts in photographs. Reducing the size of what you upload in the first place is a better lever than turning quality down, because it has no visual cost.

Option 1: Optimize with a plugin

If your Media Library is already full of unoptimized images, this is the fastest path. Bulk processing the backlog is the real value here; automatic optimization of new uploads is a bonus.

Plugin Characteristics Best when
EWWW Image Optimizer Can process locally on your server; no image count cap on the free tier. WebP conversion included Large libraries, or you would rather not send images to a third-party API
Smush Straightforward UI and setup. Free tier limits how many images you process at once Smaller sites, or you want the simplest possible start
ShortPixel Strong compression ratios. Credit-based monthly quota You want maximum reduction while holding quality
Converter for Media Focused on WebP/AVIF delivery rather than compression itself You specifically want next-gen formats served

Whichever you choose, back up before running a bulk operation. "I do not like how this looks, let me undo it" is not always available afterwards. If the plugin offers to retain originals for restoration, turn it on — it costs disk space and buys you a way out.

The case for no plugin at all

Optimization plugins run image processing on every upload. On shared hosting that can hit CPU limits and cause timeouts during bulk uploads. Plugin conflicts of exactly this kind are one of the documented reasons image uploads fail in WordPress.

For a small or new site, uploading already-optimized images keeps both your server and your plugin list lean.

Option 2: Compress before uploading

This is the structurally better answer. Less data goes over the wire, so uploads are faster too.

On desktop

  1. Squoosh (browser-based, from Google) — drop an image in and tune quality visually
  2. ImageOptim (Mac) — drag a whole folder for batch processing
  3. 1600px on the longest side is plenty for in-content images. Anything over 2560px gets resized by WordPress anyway

On a phone

This is where it falls apart. iOS Photos has no batch resize, and running images through an editor one at a time is not a workflow. Meanwhile iPhone photos are 3-6MB each — over 10MB on Pro models — which is enough to hit upload_max_filesize on plenty of hosts.

SnapPress resizes on send, with three quality presets, so you do not need a separate compression step before uploading. HEIC to JPEG conversion happens in the same pass. If your workflow is "photos taken on a phone, published to WordPress," this keeps the compression work off both your server and your plugin list.

Is WebP worth it?

WordPress 5.8 and later accepts WebP uploads. But automatic WebP generation is not in core — it was proposed for 6.1 and dropped over server load and storage concerns.

To actually serve WebP you need a plugin (Converter for Media, EWWW) or CDN-level transformation such as Cloudflare's. The payoff is real: 25-35% smaller than JPEG at visually equivalent quality, and it compounds on photo-heavy sites.

That said, if your JPEGs are already sized correctly, WebP is a marginal gain. Converting a 1MB image to WebP still leaves you with an image that was never sized properly. Get dimensions right first, then change format.

Target sizes worth aiming for

Use Dimensions Target file size
In-content images 1200-1600px longest side 100-200KB
Featured images 1200x630px around 150KB
Header / hero images 1920px wide 200-300KB
Thumbnails and icons up to 2x display size under 30KB

These are guidelines, not rules. The actual test is whether Largest Contentful Paint lands under 2.5 seconds; once it does, further tuning is optional. For how to size featured images specifically, see WordPress featured image size.

When optimization does not make the site faster

A common and frustrating outcome: images are compressed, the score does not move. Usually the bottleneck is elsewhere.

  1. Oversized images requested in HTML — a 1600px file rendering in a 400px slot. Verify srcset is doing its job
  2. LCP is not an image — run PageSpeed Insights and identify the actual Largest Contentful Paint element. If it is a font or a script, image work changes nothing
  3. Lazy loading applied too aggressivelyloading="lazy" on an above-the-fold image delays LCP rather than improving it
  4. No CDN — serving every image from one origin means every visitor pays the distance

Summary

  • WordPress already re-encodes JPEGs at quality 82 and resizes above 2560px. You are not starting from zero
  • Plugins are worth it for processing an existing backlog; otherwise pre-upload compression is cleaner
  • WebP auto-generation is not in core — plugin or CDN required
  • Aim for 100-200KB in content, ~150KB featured. The real benchmark is LCP under 2.5s
  • If you upload phone originals, fix that before anything else

For managing the library itself, see the WordPress Media Library guide. If uploads are failing outright, start with Cannot Upload Images to WordPress? 8 Causes and How to Fix Each One.

Send iPhone photos to WordPress without a separate compression step

SnapPress resizes on send with three quality presets and converts HEIC to JPEG automatically. Up to 20 photos per batch, straight into your Media Library — no compression plugin, no desktop round trip. Free to start (10 uploads/month).

See SnapPress

About the author

Ken Furuta

Founder & CEO, 37Design

Founder & CEO of 37Design, a web and AI consultancy based in Tokyo, Japan. Built SnapPress to eliminate the pain of uploading dozens of iPhone photos to WordPress — one by one.

37design.co.jp