Home / Image Compressor
Image Compressor
Shrink photo file sizes without leaving your browser.
Real compression, done with your own CPU
This tool draws your photo onto a canvas and re-encodes it using the browser's native JPEG or WebP encoder via canvas.toBlob() — the same underlying compression browsers use everywhere else. The quality slider maps directly to the encoder's quality parameter, and the preview updates live.
Two ways to compress
Drag the quality slider and watch the estimated file size and preview update instantly, or switch to target-size mode, type a KB limit, and let the tool search for the best quality that fits under it automatically.
Frequently asked questions
How does the “target file size” mode work?
Type a target in kilobytes and click “Auto-find quality.” The tool re-encodes your image at different quality levels using a binary search (checking roughly 8 quality values) until it finds the highest quality setting that still comes in at or under your target size.
JPEG or WebP — which should I pick?
WebP typically produces a smaller file than JPEG at the same visual quality, and is supported by essentially all modern browsers. JPEG is the safer choice if the image needs to work in very old software or specific print/upload workflows that don't accept WebP.
Why does my compressed file look identical to the original at high quality?
At quality settings above roughly 90%, JPEG and WebP compression artifacts are usually invisible to the eye even though the encoder is still discarding some data — that's the point of lossy compression. Drag the quality slider down further and you'll start to see visible softening and blockiness, especially in fine detail and sharp edges.
Does compressing an already-compressed JPEG hurt quality?
Yes, a little — every JPEG re-encode discards some additional information, an effect called generation loss. It's usually minor at a single pass and a high quality setting, but avoid repeatedly compressing the same file over and over.