What This Tool Does
Drop in one JPEG, PNG, or WebP image, or a whole batch of them, pick an output format and quality, and compress them all with one click. Each file gets its own card showing the size before and after, with a per-file download and a "Download all" shortcut once your batch is ready.
Everything runs on your device. There's no upload step, no server-side processing queue, and no limit beyond what your browser's memory can hold.
Choosing an Output Format
| Format | Compression | Quality slider | Notes |
|---|---|---|---|
| Keep original | Matches the input's own format | Applies only if the input is JPEG | Simplest choice: re-compress without changing the container |
| JPEG | Lossy | Yes — trades size for fidelity | Best for photos where some quality loss is an acceptable trade for a much smaller file |
| PNG | Lossless | Ignored | Same pixels, smaller file, via the encoder's best compression settings |
| WebP | Lossless | Ignored (hidden) | Often smaller than an equivalent lossless PNG at the same fidelity |
| AVIF | Lossy | Yes | Smallest files at a given quality, but slowest to encode |
JPEG and AVIF Are Lossy — PNG and WebP Are Not
JPEG compression in this tool genuinely discards image detail: the quality slider (1–100, default 80) controls how much. A lower value produces a smaller file by throwing away more fine detail; a higher value keeps more detail at the cost of file size. AVIF works the same way — its own quality slider trades size for fidelity — but its encoder is built to extract noticeably smaller files at a comparable quality, at the cost of taking longer to finish, sometimes a few seconds for a large photo.
PNG and WebP output are both lossless here. Compressing a PNG re-encodes it with the underlying image library's own best compression settings — every pixel decodes back out exactly as it went in, and the file gets smaller purely because the encoder packs the same data more efficiently. WebP output works the same way: this tool only ever produces lossless WebP files, so its quality slider is hidden entirely, since there's no fidelity trade-off for it to control.
Batch Compression
Drop as many JPEG, PNG, or WebP files as you like — they're queued together and share whatever format and quality you have set when you click Compress. Each card updates independently as its file finishes, showing the percentage saved (or, occasionally, a note that a particular file didn't shrink, which simply means it was already close to optimal going in). Download files one at a time or grab everything with "Download all" once your batch is done.
Your Files Never Leave Your Device
Compression runs through a small WebAssembly module loaded into your browser tab. When you drop a file, its bytes are read locally and handed to that module — they're never sent anywhere over the network. Closing the tab discards everything; there's nothing left behind on a server because there was never a server involved in the first place.
If you need a different container format without necessarily shrinking the file, see the Image Format Converter. For resizing, cleaning hidden metadata, or applying visual filters first, see the Image Resizer, EXIF Metadata Viewer & Remover, and Image Filters tools — all built the same on-device way.