An image compressor that works entirely in your browser
Drop JPEG, PNG, WebP or AVIF files below. Every decode, resize and encode happens on this device with WebAssembly, so nothing is uploaded and no byte of your file goes anywhere. A file over 40,000,000 pixels or 32 MiB is refused before it is decoded, and the rest of your batch still finishes.
Free, no sign-up. See how it works
PNG is lossless, so it ignores this setting.
Off by default, so the output carries no EXIF and camera and location data does not travel with the picture.
Empty means no target. The tool searches quality for a file at or under it, down from your setting, or up from it when the first encode comes out far under, and the row says so when the format cannot reach it.
Add one or more images to begin.
Compressing without sending anything anywhere
- Nothing is uploaded. Each file is decoded, resized and encoded in a Web Worker with WebAssembly, so the page stays responsive while a batch runs. Files are read with the File API and stay in this tab; loading the page and running the conversion make requests to this site's own address and to no other.
- You choose the settings. JPEG, PNG, WebP or AVIF out, a quality from 1 to 100, a resize by width or by percent (off until you turn it on), a target size in KiB, and whether to keep EXIF. The output carries no EXIF, so camera and location data does not travel with the picture; ask to keep it and it comes back in a JPEG, PNG or WebP output, while an AVIF output cannot carry it, and the row says so.
- A batch, with a cancel, and limits it names. Several files at once, up to three at a time in a small pool of workers, each with its own before and after size and its own download; stop whenever you like. An input over 40,000,000 pixels or 32 MiB is refused with a message that names the limit. Those are fixed numbers, not a reading of your machine, and the rest of the batch still finishes.
Common questions
Which formats can it read and write?
JPEG, PNG, WebP and AVIF in, and JPEG, PNG, WebP and AVIF out. JPEG XL is not supported in either direction, and Compress Images does not read HEIC or PDF files. Which of the four gives the smaller file depends on the picture and the settings, so this site does not rank them; every finished row shows both sizes so you can compare on your own images.
Is my file uploaded anywhere?
No. Every decode, resize and encode happens on this device. Your browser does fetch this site's own page files, its scripts, its worker and the WebAssembly codec modules a run needs (the input's decoder, the output's encoder, and the resize or PNG optimiser when used), all from this site, and every request is a GET or HEAD with no body. You can watch it happen in your own network tab.
What happens to the EXIF data?
It is stripped: the output carries no EXIF at all. The orientation stored in a JPEG, PNG or WebP input is applied to the pixels, so those pictures come out the right way up. An AVIF input's EXIF block is not read. Tick the keep control and the block comes back in a JPEG, PNG or WebP output; an AVIF output cannot carry it, so the row says the metadata was not kept.
What happens to transparency?
PNG, WebP and AVIF keep it. A JPEG output has no alpha channel, so what was transparent is flattened onto white.
Why did my PNG come out bigger?
PNG is lossless, so it ignores the quality setting and there is no dial to turn down. A detailed picture can easily come out larger than it went in. Every row shows both sizes, so you can see what happened before you download.
Can I get a file under an exact size?
Set a target in KiB and the tool spends quality to reach it: down, as far as 1, when the first encode is over the number, and up from your setting, never above 100, when it comes out well under. Only the upward search is bounded by your setting, so a file that was over the target can come back rougher than the quality you chose. The search aims at the band from 95% to 100% of your number and lands in it when a whole-number quality step falls inside it, and it never goes over your number. It reports whether the file it is handing you is at or under that number, counted after any EXIF you asked to keep, and it never calls a target met when the download is over it. A target that quality 1 already misses is not reached: you get the smallest encode, which is then over your number and reported as missed. A target above what quality 100 can reach cannot be filled, and there you get the largest encode the format made, still under your number, which is reported as reached because the file is at or under the ceiling.
How big can a file be?
An input of more than 40,000,000 pixels, or larger than 32 MiB, is refused with a message naming the limit, before anything decodes its pixels. Those are fixed numbers, so a different or smaller computer does not raise them: the file itself has to change. The other files in the batch still finish.
What happens to your file
Every step between the drop and the download, and what each setting changes.