What it does
This tool shrinks the file size of your images by re-encoding them with a chosen quality level and, optionally, resizing them down to a maximum width. It works entirely client-side using the HTML5 Canvas API — nothing is uploaded to a server, your images never leave your device.
Try it
How it works
- Your image is loaded into an
<img>element and drawn onto a hidden<canvas>, optionally scaled down so its width never exceeds the max width you set (height is scaled proportionally to keep the aspect ratio). - The canvas is then re-encoded using
canvas.toBlob()with the format and quality you chose:
| Format | Notes |
|---|---|
| JPEG | Best for photos; lossy, quality slider has a strong effect |
| WebP | Usually smaller than JPEG at the same quality, if supported by your browser |
| PNG | Lossless; the quality slider has no effect, size mainly drops if you also reduce the width |
- The resulting blob's size is compared against the original file size, and a download link is generated for the compressed image.
Notes
- PNG is lossless, so to meaningfully shrink a PNG you generally need to reduce its dimensions rather than the quality.
- Converting a PNG with transparency to JPEG will fill transparent areas with a solid background (JPEG has no alpha channel) — use WebP or keep PNG if you need to preserve transparency.
- Everything happens locally in your browser: no image is ever uploaded.