Compress image
Shrink JPG, PNG and WebP files without uploading them anywhere.
Runs on your device. The file is never uploaded.
Compress image re-encodes a JPG, PNG or WebP at a quality you choose, defaulting to 70, and hands back the same format with a -min suffix on the name. It reports the exact before and after byte counts. PNG is encoded losslessly, so quality is ignored there, and a well packed file can come back larger.
Questions
Are my photos sent to a server to be compressed?
No. Compression happens in a Web Worker on your device using the jSquash WebAssembly codecs. Nothing is uploaded, no account exists, and you can watch the request counter on the homepage stay at zero while you use it. The site also works offline once it has loaded a first time.
How much smaller will my image get?
That depends on the picture and on the Quality option, which defaults to 70. The tool reports the exact result next to the file, in the shape "photo.jpg: 10891 to 4597 bytes (58% smaller)", so you can compare rather than guess. Photographic JPGs usually shrink a lot at 70. A small, already-optimised file might barely move.
Why did my file come back larger than it started?
Because re-encoding can cost more than it saves. That happens with a high quality setting, or with a PNG that was already packed well. The tool does not hide it: the summary line says "12% larger" instead of a percentage saved, and you can simply keep your original. Lowering the quality number is the usual fix for a JPG or WebP.
Does it compress PNG files?
It re-encodes them, but the PNG encoder is lossless and ignores the Quality option completely, so the saving is whatever the codec can find in the packing alone. If you need a real size drop from a PNG photo, convert it to WebP with Convert image instead. Quality only affects JPG and WebP here.
What is the compressed file called?
Your name with a -min suffix and the extension re-derived from the format that was encoded, so PHOTO.JPG comes back as PHOTO-min.jpg. The format never changes: a JPG stays a JPG, a PNG stays a PNG, a WebP stays a WebP. Drop a whole folder if you like; each file is handled separately.
Which files does it accept?
JPG, PNG and WebP, decided by the file extension rather than by sniffing the bytes. A file it cannot place stops with "only JPG, PNG and WebP are supported". It also does not resize anything: the output has exactly the same pixel dimensions as the input. For fewer pixels, use Resize image.