← back to tools

Bulk Image Compressor

Drop up to 20 images β€” compress all at once, see exact savings per file, download as ZIP.

Processed in your browser β€” images never leave your device

⚠ What this tool can and can't do

  • PNG quality slider has no effect when output format is "Original" β€” PNG is lossless; the Canvas API cannot compress it further. Use "β†’ JPG" or set output to WebP to actually reduce PNG file sizes.
  • Compressed files may occasionally be slightly larger than the original (shown as "+X%"). This happens with already-optimised JPGs or very small images. Save the original in that case.
  • File size shown is an accurate byte count but the on-disk ZIP may differ slightly due to ZIP overhead per file.
  • Max 20 files, 20 MB each. These limits are fixed and cannot be changed.
  • Animated GIF / AVIF / HEIC not supported. Only JPG, PNG, and WebP are accepted.
  • Resolution is preserved β€” this tool compresses quality, not image dimensions. To resize, you need a separate tool.
πŸ—œοΈ

Drop up to 20 images here

or browse to upload JPG Β· PNG Β· WebP  |  Max 20 files, 20 MB each

Quality β€” 80%
80
Quality slider is ignored for PNG β€” Canvas API can't compress lossless files. Use "β†’ JPG" or set Output to WebP.
Output Format
PNG Output

How it works

Batch in one shot

Drop up to 20 images at once. One quality setting applies to all. No page reloads, no waiting for uploads β€” everything runs locally in your browser.

PNG files: use WebP or JPG

PNG is lossless β€” the quality slider does nothing for PNG files in "Keep PNG" mode. For real size savings, set Output to WebP, or use β†’ JPG mode when transparency isn't needed.

WebP saves the most

Switching output to WebP can cut file size by 25–40% vs JPG at the same quality. Ideal for blogs, landing pages, and e-commerce product images.

ZIP, not one by one

After compressing, hit Download ZIP to get all files in a single archive. Compressed files keep their original names with _compressed appended.

Honest per-file stats

See original size, compressed size, and % change for every file. If a file ends up larger (already optimised JPG), it shows +X% in amber β€” so you know not to use that version.

100% private

Everything runs via the browser Canvas API. Images never touch a server. Works offline once the page has loaded.