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.8Frequently 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