Compress images right in your browser. No uploads to any server.
Drop an image here or click to upload
Supports JPEG, PNG, WebP. Max 20MB.
Powered by Ubikon Technologies | Compression uses the Canvas API. No images leave your browser.
This compressor loads your image into an HTML5 Canvas and re-exports it with canvas.toBlob() at the quality level you set with the slider. PNG files stay PNG; every other format is re-encoded as JPEG. Nothing is uploaded — the original file never leaves the Canvas element in your browser.
Original
2.4 MB JPEG
Quality setting
70%
Compressed
~450 KB
Actual savings depend on your specific image — this is an illustrative example, not a guaranteed ratio.
How does the image compressor work?
It draws your image onto an HTML5 Canvas at its original dimensions, then calls canvas.toBlob() with the quality value from the slider (10–100%). For PNG files it re-encodes as PNG; for everything else it re-encodes as JPEG. The resulting blob is usually smaller because toBlob() re-runs the JPEG/PNG compression at the quality you chose.
What file types and sizes are supported?
Any image/* file your browser can decode (JPEG, PNG, WebP, etc.), up to 20MB. The output format is PNG only if the input was PNG — otherwise it is re-encoded as JPEG regardless of the original format.
Why did my file not get smaller?
If the image is already well-compressed, or the quality slider is set high, canvas re-encoding can produce a similar or occasionally larger file. The tool shows "No reduction" rather than a fabricated savings percentage when that happens.
Are my images uploaded to a server?
No. The compression happens with the Canvas API directly in your browser — the image is never sent anywhere. The "Original" and "Compressed" previews are both generated locally with object URLs.