The single-image Compressor works great for a few files, but shooting 50 photos and dropping them in one at a time is tedious. The Bulk Image Compressor accepts up to 50 files, processes them sequentially in a Web Worker, and outputs a ZIP with every file compressed. Per-file previews show original vs. compressed size; a total-savings tally accumulates as processing runs.
Format-aware defaults
JPEG files get MozJPEG at quality 80. PNGs get oxipng at level 3 (safe, fast). WebPs get libwebp re-encoded at quality 80. HEIC and AVIF get transcoded to WebP by default (they're already optimized as-is). You can override per format or per file.
Sequential processing keeps memory bounded
Each file is decoded, compressed, and re-encoded one at a time in a Web Worker. That means WebAssembly memory never accumulates — even on a 4 GB laptop you can process 50 files without running out. The catch: total processing time is roughly proportional to file count. Expect 30–60 seconds per typical photo.
ZIP download and per-file summary
When the batch finishes, a summary table shows original size, compressed size, and savings percentage per file. Total savings across the batch appears at the top. Hit Download all (.zip) for a single archive; per-file downloads are also available.