Blog/WordPress
WordPress · Optimization

How to Bulk Optimize WordPress Images Without Losing Progress

Naveen Goyal
16 June 2026
5 min read
WordPress · Images

You have 800 images in your Media Library. You start a bulk optimization job. Twenty minutes in, the page times out — or you accidentally navigate away. The plugin starts from scratch. You've optimized the same 200 images three times and you're no closer to finishing.

This is the standard experience with most WordPress image optimization plugins. They process images in a single, fragile batch. There is no saved progress. Every interruption means starting over.

It doesn't have to work this way.

Why Bulk Optimization Breaks

Most image optimization plugins send compression requests to a remote API, process images sequentially in JavaScript, and track state only in memory. When the browser tab closes, the PHP execution times out, or the user navigates away — that in-memory state is gone.

On shared hosting, PHP execution time limits are typically 30–60 seconds. A library of 500+ images can take significantly longer than that to process. The plugin hits the limit, WordPress kills the process, and the queue is lost.

The shared hosting reality

Most WordPress sites run on shared hosting with strict resource limits. Any optimization plugin that doesn't account for PHP timeouts and interrupted sessions will frustrate most of the people who install it.

What a Resumable Queue Actually Means

A resumable queue saves its position to the database after every image. If the process stops — for any reason — the next time you open the optimize page, the queue picks up exactly where it stopped. Already-optimized images are skipped. Nothing is repeated.

This single design decision changes bulk optimization from a fragile one-shot process into something you can run across multiple sessions, on shared hosting, with real libraries.

Compression Presets vs. Manual Tuning

Most optimization plugins expose a quality slider. You move it to 80, or 75, or 65, and hope for the best. You have no idea what the actual output will look like until you run it — and by then you've already overwritten the originals.

A better approach is preset-based compression:

  • Lossy — maximum savings, small visible quality reduction. Good for thumbnails, background images, decorative content where sharpness is not critical.
  • Balanced — the default for most sites. Meaningful file size reduction with no visible quality loss at normal screen sizes.
  • Pixel-perfect — near-lossless. For product photography, portfolios, and anywhere image quality is part of the product.

One click loads a pre-tuned configuration. No manual quality value, no guessing. The preset name tells you exactly what you are getting.

What the Before / After Report Should Show

Savings percentages alone are not enough. After running optimization, you should be able to see, per image: the original file size, the new file size, and the bytes saved. Not just "batch complete — 42% average savings." The actual numbers, per file, so you can verify the outcome and spot anything that didn't compress well.

This matters especially when you're running pixel-perfect mode on product images. You need to confirm the output meets your standard before clearing your backups.

WebP and AVIF Output

Modern browsers support WebP and AVIF — formats that deliver significantly smaller files than JPEG and PNG at equivalent visual quality. A good image optimizer should generate these formats automatically and serve them to browsers that support them, while falling back to the original format for older browsers.

This is separate from compression. Even a well-compressed JPEG is larger than a well-compressed WebP at the same quality level. Format conversion compounds the savings from compression.

Single-Image Actions in Media Library

Bulk optimization handles the historical library. But you also need a way to optimize images as they come in — individually, directly from the Media Library list view, without opening a separate screen. A plugin that only offers bulk optimization forces you into a workflow that doesn't fit day-to-day content production.

Remote engine vs. server-side processing

Server-side processing (running compression on your own hosting) adds load to an already-shared server and is slower. Remote optimization — offloading the compression work to a dedicated engine — is faster and puts zero strain on your hosting. The result is uploaded back automatically.

NaveenCodes Image Optimizer

I built NaveenCodes Image Optimizer because every plugin I tested had at least one of these problems: a fragile single-run batch, a confusing quality slider, no per-image reporting, or a paywall gating the features that actually matter.

It uses a resumable queue saved to the database, three preset cards that load a full configuration in one click, before/after savings per image, WebP and AVIF output, a remote optimization engine so your server carries no additional load, and single-image actions in the Media Library list view.

Everything is free. No account required. No API key to hunt down. Activate it, register automatically, and start optimizing.

Start with a clean library.

Free on WordPress.org. Install, activate, pick a preset, run. The queue saves progress — close the tab and come back whenever.

Get it on WordPress.org ↗ See the plugin →