How to use
- Drag one or more images into the box, or click to open a file picker — up to 20 files per batch, JPEG, PNG or WebP, 30 MB each.
- Set Max dimension (longest side) to cap resolution. 1920 px suits most web use; pick Keep original size to compress without resizing.
- Choose an Output format: keep each file’s own format, or convert the whole batch to JPEG or WebP.
- Slide Quality (0.50–0.95). It changes JPEG and WebP output only; 0.80 is a sound starting point.
- Files compress as they arrive, each row showing before → after bytes. Change any setting and press Recompress with current settings to redo the batch, then grab files individually or with Download all.
How it works
Each file is handed to a Web Worker running the browser-image-compression library, so the encoding never blocks the page or leaves your device. The worker decodes the file to raw pixels, draws them onto a canvas, and — if you set a max dimension and the longest side is above it — scales the canvas down, keeping the aspect ratio. It only ever shrinks: an image already under the limit is left at its native size. The canvas is then re-encoded to your chosen format at the quality you set, and JPEG/WebP quality is passed straight through as the encoder’s initialQuality. When the format is left on “keep”, the tool compares the re-encoded bytes against the original and returns whichever is smaller, so an already-optimised file is never made larger.
Take a 7.1 MB JPEG straight off a camera at 4608 × 3456 pixels, with Max dimension set to 2560 and Quality at 0.85. The longest side, 4608, is above 2560, so the canvas is scaled by 2560 ÷ 4608 ≈ 0.556, giving 2560 × 1920 — about 0.556², or 31%, of the original pixel count. Re-encoding those fewer pixels at quality 0.85 typically lands the file near 700 KB: roughly a 90% reduction, most of it from the resize rather than the quality drop, with no visible difference at screen size.
Use cases & limitations
This is the tool for getting a photo under an upload cap — a 5 MB form limit, an email attachment ceiling — or for trimming page-weight before publishing images to a site. Batch mode handles a folder of gallery shots in one pass, and because everything runs locally, it keeps working with the network switched off once the page has loaded.
The honest limits: re-encoding JPEG and WebP is lossy, and running the same file through repeatedly compounds that loss, so compress from an original rather than a previous output. Resizing throws pixels away permanently — there is no upscale and no undo, so keep your originals. And as the FAQ on PNGs explains, the quality slider does nothing to a PNG, since PNG is lossless; shrink those by lowering the dimension or converting to WebP.
Privacy note
Your images never leave the browser. Each file is read into memory in your tab and compressed by a Web Worker on your own machine, and even the compression library is served from this site’s own domain rather than a third-party CDN, so no image data is sent anywhere. Because the round trip through a canvas discards metadata, EXIF fields like GPS coordinates and capture time are dropped as a side effect — but if scrubbing metadata is the real goal, reach for the purpose-built EXIF remover and confirm the result in the EXIF viewer.