Image Compressor

Compress images in your browser: re-encode any photo as JPEG or WebP with an adjustable quality slider and see the file-size savings instantly. Nothing is uploaded.

How the image compressor works

Your image is decoded by the browser, redrawn onto a canvas at its original dimensions and re-encoded as JPEG or WebP at the quality you choose. Lower quality lets the encoder discard more detail the eye barely notices, which is where the savings come from — 0.8 is a good default for photos, and WebP usually beats JPEG by 20–30% at the same visual quality. PNG input converted to JPEG is composited onto a white background first, because JPEG has no transparency. The before and after sizes and the savings percentage update live as you move the slider.

canvas.toBlob(cb, "image/webp", 0.8) // re-encode at quality 0.8

Frequently asked questions

Is my image uploaded anywhere?

No. Compression runs entirely in your browser with the canvas API — your image never leaves your browser. Nothing is sent to a server, logged or stored, and only the quality and format options appear in the page URL.

What quality setting should I use?

For photos, 0.7–0.85 is the sweet spot: files shrink dramatically while artifacts stay invisible at normal viewing sizes. Go lower for thumbnails and previews, higher (0.9+) for images people will zoom into. Compare the side-by-side preview — if you can't see a difference, take the smaller file.

Why did my file get bigger instead of smaller?

Re-encoding an already heavily compressed image at a high quality setting can produce a larger file, because the encoder faithfully reproduces the existing compression artifacts. Try a lower quality, or switch to WebP, which compresses more efficiently than JPEG. The savings figure shows negative when the output grows, so you'll never download a worse file unknowingly.

Last updated: 8 July 2026

More tools

Runs entirely in your browser — your images are never uploaded. ImageMint · MintKit