Image compressor
Runs entirely in your browser. Your files and data never leave your device.
About this tool
This tool shrinks a photo or screenshot without sending it anywhere. Pick a file, choose an output format, and drag the quality slider to see the size drop in real time.
How does it actually compress the image?
It uses jSquash, a set of WebAssembly encoders built on the same codecs behind Squoosh, Google’s browser-based image compression tool. That means JPEG and WebP compression run at close to native speed right in the tab instead of relying on slower canvas-based tricks. The encoding itself happens in a Web Worker, so dragging the quality slider stays smooth even while a large image is being re-encoded in the background. You can also cap the maximum width or height: the image scales down to fit while keeping its original aspect ratio, and the tool never scales an image up past its source size.
Are my images uploaded anywhere?
No. Everything runs client-side, so your image never touches a server, and there’s no upload step to wait on for a large file. Re-encoding a photo also strips its EXIF metadata along the way, including any GPS coordinates a camera or phone embedded in the file. That’s worth knowing if you’re about to post a photo somewhere public and don’t want its location tagging along, since the original file’s metadata simply doesn’t survive the re-encode.
What’s it good for?
Common uses are getting a screenshot under a file-size limit for a bug report or support ticket, shrinking a batch of product photos before uploading them to a CMS, or converting an old PNG to WebP for a smaller page. WebP and JPEG both support a quality slider since they’re lossy formats; PNG compression is lossless, so shrinking a PNG mostly comes from resizing rather than quality loss.
Picking the right format for the content matters as much as the slider. Photos with lots of gradients and detail generally compress better as JPEG or WebP than PNG, while flat graphics like screenshots of text or simple diagrams often stay smaller as PNG even without a quality setting to lean on. The size readout updates live as you drag the slider, so you can watch for the point where the file stops shrinking much but the image starts visibly degrading, and stop just before that. Capping the maximum width or height helps too, since a smaller image at high quality often beats a full-size image at low quality, both in file size and in how it actually looks. See MDN’s guide on createImageBitmap for how the browser decodes the source image before compression runs.