Image Compressor
Shrink JPG, PNG, or WebP file sizes right in your browser — nothing is uploaded. Mix formats in one batch; each file is re-encoded in its own format, not converted to a different one.
How it works
- Drop one or more JPG, PNG, or WebP files into the box above, or click to browse your device.
- Adjust the quality slider for JPG/WebP files, or the PNG compression mode for PNG files, then click "Compress".
- Check the before/after size shown next to each file, then download individually or as a ZIP.
About this tool — and an honest note on PNG
JPG and WebP are lossy formats — re-encoding them at a lower quality genuinely shrinks the file, and the quality slider controls that trade-off directly. Both keep the same format in and out: a JPG stays a JPG, a WebP stays a WebP.
PNG works differently, and we're upfront about it. PNG is a lossless format — there's no single "quality" lever the way JPG and WebP have. This tool gives PNG files a real choice instead: Lossless keeps every pixel exactly as-is (the size change is usually small, and can occasionally be zero — it's just re-encoding through the browser's standard PNG encoder). Smaller file is a genuinely different, lossy operation: it reduces the image to a 256-color palette before re-encoding, which can shrink the file substantially at a real, visible quality cost — not the same kind of setting as JPEG's quality percentage. If even "Smaller file" doesn't produce something smaller than the original (rare, but possible for already low-color images), you'll get the original file back rather than a fake "smaller" result. If you don't need PNG specifically, converting to JPG usually gets a bigger size reduction, and WebP keeps transparency while still beating PNG's file size in most cases.
AVIF files aren't accepted here for the same reason they're not offered as a conversion target elsewhere on this site: no current browser can re-encode AVIF through the canvas API, only decode it.
Frequently asked questions
Why didn't my PNG get smaller?
By default, PNG compression here is set to Lossless — every pixel stays exactly as-is, so the size change is usually small and can occasionally be zero. Switch to "Smaller file" for a real reduction (it reduces the image to a 256-color palette — see the note above for what that trades off). If even "Smaller file" doesn't shrink your specific PNG, this tool returns the original rather than handing back something the same size or larger and calling it a win.
What's the difference between "Lossless" and "Smaller file" for PNG?
"Lossless" keeps every pixel exactly as the original — nothing about the image itself changes. "Smaller file" is a genuinely different, lossy operation: it reduces the image to a limited color palette (256 colors) before re-encoding, which can meaningfully shrink the file at the cost of some visual precision, especially for photos or images with smooth gradients. It isn't "quality" in the JPEG sense — JPEG quality reduces detail gradually across the whole image, while PNG's palette reduction is a step change in how many distinct colors it can use at all.
What quality setting should I use for JPG/WebP?
75% is a reasonable default for general use. Go higher (85-95%) for images you'll edit further, or lower (40-60%) for thumbnails and previews where file size matters more than fine detail.
Can I compress a mix of JPG, PNG, and WebP in one batch?
Yes. Each file is re-encoded in its own format — the quality slider affects JPG and WebP files, and the PNG compression mode (Lossless / Smaller file) affects PNG files; each control only changes the files it actually applies to.
Is there a file size or file count limit?
Each file must be under 25MB, and you can process up to 40 files in one batch, since everything runs in your browser's memory rather than on a server.