The single biggest speed win on most sites I audit isn’t a plugin or a server change. It’s the media library: years of uploads at camera resolution, 4 MB hero images, 80 product photos at 2 MB each, none of them ever compressed. Fixing one image is easy. Fixing 800 is a project, and doing it badly (wrong settings applied to everything, originals overwritten) is worse than not doing it. Here is how to plan and run a bulk compression pass on a whole library, whether it’s a WordPress uploads folder, a product catalogue or a photographer’s delivery set.
First, measure
Before touching anything, find out what you’re dealing with:
- Total size and count. On WordPress, Media → Library shows the count; the uploads folder size is in your hosting panel. 2 GB across 1,500 files means an average of 1.3 MB, which is 5–10× what web images should be.
- The distribution. Sort by size. Usually 10% of files account for 60% of the weight. Those are the priority.
- What’s actually used. Images in the library that no page references don’t affect speed; they affect backup size and hosting cost. Different problem.
- Current page weight. Run a key page through PageSpeed Insights and note “Properly size images” and “Efficiently encode images” savings. That’s your before number.
Decide the settings once
Bulk work means one setting applied to many files, so it has to be safe for the worst case in the batch:
| Content type | Max width | Format | Quality |
|---|---|---|---|
| Blog and page photos | 1,600 px | WebP | 80 |
| Product photos (zoomable) | 2,000 px | WebP + keep JPEG | 82 |
| Hero / banner images | 2,400 px | WebP | 75–80 |
| Screenshots, UI, diagrams | 1,600 px | PNG or WebP lossless | lossless |
| Logos, icons with transparency | as is | PNG or SVG | lossless |
| Thumbnails | 800 px | WebP | 75 |
The important rule: separate screenshots and graphics from photos before compressing. A lossy setting that is invisible on a photo puts halos around every letter in a screenshot. Sort the batch by type first, or by folder, then run each group with its own setting. The Bulk Image Compressor takes a folder or a drag-and-drop set, applies one quality and format to all of them, shows the per-file before/after sizes, and returns a zip. It runs in the browser, so a 500-file batch never leaves your machine.
Resize before compress, in bulk too
Most of the weight in an old library is dimensions, not compression. A 5,000-pixel photo compressed at quality 80 is still 1.5 MB; resized to 1,600 px first, it’s 150 KB. Run the batch through the Bulk Image Resizer with a maximum width (it leaves smaller images alone), then compress. Two passes, but each is fast and the result is an order of magnitude smaller.
Don’t overwrite the originals
Keep the full-resolution files. Either compress into a new folder and swap, or keep an “originals” archive off the web server. The day someone wants a print version, or a new design needs a bigger hero, you will want them. Storage is cheap; re-shooting isn’t.
Replacing files on a live site
Three approaches, in order of safety:
- Serve alongside. A WordPress plugin (ShortPixel, Imagify, EWWW, or Converter for Media) generates WebP versions and serves them when the browser supports it, leaving originals in place. Zero risk, small ongoing cost or free tier.
- Replace in place with the same filenames. Compress the batch, upload with identical names, and every existing reference keeps working. Regenerate thumbnails afterwards so WordPress rebuilds its size variants from the new files. Take a backup first.
- Re-upload and re-link. Only for small sets; every page that referenced the old file needs editing.
For a site that isn’t WordPress, the same logic applies: same filenames and paths, so nothing else changes.
Verify
- Spot-check ten images at 100% zoom, especially any with text or fine detail.
- Re-run PageSpeed on the same key page. Expect “Efficiently encode images” to disappear and LCP to drop.
- Check total uploads size. A typical result is a 60–80% reduction across a library that was never optimised.
Prevent the problem recurring
A bulk pass fixes the past. To fix the future: set a maximum upload dimension (WordPress: a snippet on big_image_size_threshold, or a plugin setting) so 6,000-pixel uploads are scaled on arrival; enable automatic WebP conversion; and give whoever uploads images a one-line rule: “resize to 1,600 wide and compress before uploading, using the Image Compressor“. Most library bloat comes from three people who never heard the rule.
Frequently asked questions
How much space will bulk compression save?
Typically 60–80% on a library that has never been optimised, most of it from resizing oversized originals rather than from compression alone.
Will compressing all my images hurt quality?
Not if photos and graphics are handled separately, with lossy quality 75–85 for photos and lossless for screenshots and logos. Spot-check before replacing.
Should I delete the original files?
No. Archive them off the web server. You will eventually need one at full size.
How do I compress hundreds of images at once without uploading them?
Use a browser-based bulk tool that processes files locally. Drop the folder in, set quality and format once, download the zip.
Free, runs in your browser, nothing uploaded, no sign-up.
Keep reading
More from Image & Photo Tools.
Tools for this job
Free, in your browser, no sign-up.


