Batch Image Compressor
Select multiple JPG, PNG, or WebP files to compress simultaneously.

Click or drag and drop to upload images

JPG, PNG, or WebP — Max 50MB per file (Up to 100 files)

Image Tools

Image Compressor

Reduce image file sizes without losing visible quality.

Batch Image Compressor shrinks up to 100 JPG, PNG, or WebP files at a time without leaving your browser. Drop files into the zone labeled "Click or drag and drop to upload images," set Max Target Size (MB), Max Width / Height (px), and the Quality Tuning slider, then press "Compress N Image(s)" and collect results one by one or as a single ZIP.

Compression runs through browser-image-compression in a web worker, so nothing is sent to a server. The uploader enforces the batch limits up front — 100 files and 50MB per file — and the result screen shows Original vs Compressed sizes, a per-file Compare toggle, and a "Tweak Settings & Recompress" path so you can iterate without re-selecting everything.

How it works

Each selected file is validated (image type, 50MB cap, 100-file batch cap) and kept in an upload list you can edit with remove controls or "Add More Files". Submitting runs imageCompression(file, options) over Promise.all with maxSizeMB, maxWidthOrHeight, initialQuality, alwaysKeepResolution, and an optional fileType override that renames the output extension to match JPEG, PNG, or WEBP.

Defaults from COMPRESSOR_DEFAULTS are 1MB target, 1920px longest side, quality 0.8, and resolution not kept. When the batch finishes, the UI shows "Compression Complete!" with totals like "Total New Size" and "{n}% smaller overall"; JSZip packs everything into compressed_images.zip client-side for "Download All (ZIP)".

How to use

  1. Open the tool and drop up to 100 JPG, PNG, or WebP images (each max 50MB) into the dropzone.
  2. Review the batch preview; remove unwanted files or click "Add More Files".
  3. Set "Max Target Size (MB)" and "Max Width / Height (px)" for the pass.
  4. Drag the "Quality Tuning" slider (0.1–1.0, shown as a percentage) and pick "Output Format": Keep Original, JPEG, PNG, or WEBP.
  5. Optionally check "Maintain Original Image Resolution (Ignores Max Width/Height)" for pure re-encode compression.
  6. Click "Compress N Image(s)" (label switches to "Compressing...") and wait for "Compression Complete!".
  7. Use "Compare"/"Hide" per file to inspect before/after, then "Download" or "Download Image" singles, or "Download All (ZIP)" while it shows "Zipping...".
  8. Hit "Tweak Settings & Recompress" to adjust options and run the same batch again.

Tips

  • The defaults (1MB / 1920px / 80%) are aggressive for the web — raise Quality Tuning if you need archival quality.
  • Enabling "Maintain Original Image Resolution" ignores Max Width / Height and only re-encodes.
  • A 100-file ZIP resolves filename collisions with _2, _3 suffixes so nothing is overwritten.
  • The quality slider barely helps PNG re-encodes — switch Output Format to WebP or JPEG for real size wins.
  • Upload toasts name skipped counts: "Not valid images." and "Exceed 50MB limit." — fix those files before retrying.

Image Compressor FAQ

Are my images uploaded to a server?

No. Compression runs entirely in your browser via browser-image-compression's web worker; files never leave the device for processing.

How many images can I process at once?

Up to 100 files per batch, each capped at 50MB. Beyond that you get toasts like "You can only upload up to 100 images at once."

Does changing the output format rename the file?

Yes — the output extension is rewritten to .jpg, .png, or .webp to match the MIME you chose under Output Format.

Why were some files skipped on upload?

Non-image types or files over 50MB are rejected; the toast reports how many were skipped for each reason.

Can I download everything as one archive?

Yes — "Download All (ZIP)" builds compressed_images.zip in the browser with JSZip.

Credits

ShareTweet
More Image Tools

Command Palette

Search for a command to run...