1. Decode
The image is decoded into an offscreen canvas. Large photos are downscaled to a sensible maximum edge first.
Drop a file below and Squishpic re-encodes it locally using the canvas API. Nothing is uploaded, nothing is stored, nothing is logged.
Drag an image here
or — JPEG, PNG, WebP up to 20 MB
Everything runs on your machine. Your files never touch a server.
The image is decoded into an offscreen canvas. Large photos are downscaled to a sensible maximum edge first.
We re-encode at a quality level picked from a small perceptual search, stopping as soon as the difference stops being visible.
You get both files side by side with the byte counts. Keep the new one or throw it away — it is entirely your call.
| Input | Output | Typical saving |
|---|---|---|
| JPEG | JPEG, WebP | 35–60% |
| PNG | PNG, WebP | 10–70% |
| WebP | WebP | 5–25% |
| HEIC | JPEG | varies |
Savings depend heavily on the source. Screenshots and flat illustrations compress far better than film grain.
No. There is no upload endpoint at all — open your network tab and watch. The page is static and the work happens in a worker thread.
Already-optimised files can grow when re-encoded. When that happens we tell you and suggest keeping the original.
Not today. The whole point is that there is no server to call.
Select multiple files at once and they queue up. Very large batches will make your fan spin.