Image Compressor

How to compress images in bulk (the 2026 guide)

Bulk compression is a solved problem — as long as you match the approach to the constraint. Most people pick the wrong approach for their job and end up either paying for a tool they didn't need or shipping images that miss the actual target. This guide walks through the three approaches that work, when each fits, and how to run them without a subscription or uploading anything.

Skip the reading if you just want the tool:

Open the bulk image compressor →

The three approaches to bulk compression

Every bulk compression job falls into one of three shapes, depending on what constraint you're trying to satisfy:

1. Preset quality — the "just make them smaller" case

You have a folder of photos that are too heavy for the context you're using them in — a blog media library, a Google Drive folder you're about to email, a portfolio backup. You don't have a specific byte target; you just want the files smaller.

Fastest approach: pick a preset quality (say 80 for JPEG/WebP), cap dimensions at 1920 px (retina-safe for typical web display), apply to all files. This is what every free bulk compressor does by default. Typical result: 60–80% file-size reduction with no visible quality loss.

When to use it: casual archiving, blog media libraries where per-image size doesn't matter, general-purpose "shrink the folder".

2. Per-file KB target — the "every file must satisfy this cap" case

You're preparing a batch of images for a system that has a hard per-file byte cap: a corporate email attachment ceiling, a job-portal photo requirement, a form that hard-rejects anything over 50 KB. The constraint is per-image, and it's a rule not a guideline.

Preset compression doesn't work here because a fixed quality setting produces different byte counts on different source images. Two photos both compressed at quality 60 might land at 30 KB and 180 KB depending on their content complexity. What you need is iterative compression per file — binary-search over quality until the output is genuinely under the target.

Very few free tools offer this. Our bulk compressor has a "Per-file KB target" mode that runs the iterative logic on every file in the queue. Typical convergence: 3–6 attempts per file, ~500 ms per file on a mid-range laptop.

When to use it: form uploads, corporate email caps, any workflow where the target size is a hard rule per image.

3. Total ZIP budget — the "the whole batch has to fit" case

The constraint is on the batch as a whole, not per image: you have a 50 MB CDN upload limit, a 10 MB email-attachment total ceiling, a storage archive with a hard cap. Per-image byte caps waste budget because you end up over-compressing small source images to hit the same target as big ones.

The right approach: split the total budget across files proportionally to source size. A 5 MB source image gets a bigger share of the budget than a 500 KB source image, because it needs the bytes to preserve visible quality at similar resolution. Then run per-file iterative compression to fit each file into its allocated share.

The bulk compressor's "Total ZIP budget" mode implements this exact approach. Set the target MB, drop the files, and the total ZIP output lands within a few percent of your target.

When to use it: CDN upload batches, email-attachment archives, storage caps, any batch-level byte constraint.

Why running it in the browser matters

Every server-based bulk compressor uploads your files to their infrastructure, processes them, then sends back the results. That's fine for casual public content. It's not fine for:

  • Client work under NDA — the images touch third-party infrastructure you have no relationship with.
  • Batches of ID scans, passport photos, medical images — sensitive personal data going through someone else's server.
  • Pre-publication material (draft posters, unreleased product photos, contract PDFs turned into images) — a leak vector.
  • Large batches — upload + download round-trips add latency; a 100-file batch that runs in your browser in 90 seconds might take 5 minutes round-trip via a server.

Our bulk image compressor runs everything client-side via the Canvas API. Your images never leave your device. You can verify this in DevTools → Network: no outbound requests carry image data.

Practical playbook

  1. Identify your constraint. Is it per-file, or total, or just "make them smaller"? That answer picks the mode.
  2. Try WebP if the destination supports it. Switching output format to WebP typically saves 25–35% before any quality-slider work, which often turns an aggressive target into an easy one.
  3. Batch conservatively on mobile. Older phones hit browser memory limits around 30–50 files. Modern laptops handle 200–500 easily.
  4. Verify the first result before running a full batch. Open one compressed output in your target destination (form upload, email preview, CDN test) to confirm it's acceptable before committing 100 files.
  5. Download as ZIP for anything over ~20 files — individual downloads via browser save dialogue get tedious.

Related resources