Compress Images

Compress JPG, PNG and WebP images with a quality setting and optional downscaling. Free and private, no upload, no watermark, batch support.

🌐 Español

Drop your files here (.jpg, .jpeg, .png, .webp)

🔒 Private by design: your files are processed locally in your browser and never uploaded to any server.

What the quality number actually throws away

JPEG and WebP save space by deciding which parts of a picture your eye is least likely to miss, then storing those parts more coarsely. Smooth gradients get simplified, fine texture inside a block of similar colour gets averaged, and the colour channels are recorded less precisely than the brightness channel, because human vision is far sharper about light and dark than about hue.

The Quality (1–100, lower = smaller file) box sets how far the encoder is allowed to go. It is worth being precise about what that number is: it is a target handed to the encoder, not a percentage shaved off your current file. Setting 75 on a photo that was already exported at roughly quality 70 will barely change anything, while setting 75 on a camera original saved at 95 usually produces a dramatic drop. Two files that both say “quality 75” can be wildly different sizes, because the number describes the encoder’s tolerance, not the outcome.

Quality is also the one control that PNG ignores. PNG is lossless by definition, and this tool passes no quality value at all when it re-encodes a PNG, so the number in that box changes nothing for that format. The lever that works on PNG is the second option.

Picking a number for where the picture is going

Somewhere between 70 and 80 is the range where most photographs stop losing anything you can see at normal viewing distance, which is why the default sits at 75. Below about 55, JPEG starts showing its hand: soft blocky edges around high-contrast lines, a faint ringing halo around text, and banding across a clear sky.

Push down into the 50s and 60s anyway when the destination cares more about bytes than pixels, such as a chat app, a forum avatar or an email thread that already has six attachments. Go up to 85 or 90 when the photo will be looked at closely, printed, or edited again afterwards. There is no cost to trying two settings and comparing the results, since each run happens on your own machine and finishes in about the time it takes to read this sentence.

Downscaling, the lever a PNG does respond to

The Downscale large images select does something entirely different from the quality box: it reduces how many pixels exist at all. Pick one of the limits and the tool measures the longest side of each image, and if that side is over the limit it scales both edges by the same factor, so proportions are never disturbed. A 4032x3024 phone photo capped at 1920 comes out 1920x1440. Anything already smaller than the limit is left alone.

This matters because file size tracks pixel count closely, and most images are far larger than the place they are headed. A website that displays a photo 800 pixels wide gains nothing from a 4000 pixel original except a slower page. For screenshots and diagrams saved as PNG, the downscale is effectively the only saving available here, and it is a real one.

Compressing a batch

  1. Drop your JPG, PNG or WebP files into the box above, or use Choose files. Files accumulate across drops, so you can add a second folder before starting.
  2. Type a Quality (1–100, lower = smaller file) value if you want something other than 75.
  3. Pick a Downscale large images limit when your images are bigger than the destination needs, or leave it on Keep original dimensions.
  4. Click Compress Images and watch the progress bar, which advances one step per finished file.
  5. Download each result. The shell prints the combined before and after sizes with the percentage saved.

The rule that stops a file getting bigger

Re-encoding an image that is already tightly compressed can produce a larger file than you started with, which is a genuinely annoying way for a compressor to behave. This one checks: if the new file is not smaller than the original and no downscale was applied, it returns your original bytes instead of the re-encode. An explicit downscale is always honoured, even in the unusual case where it does not save space, because you asked for those dimensions on purpose.

So without a downscale the worst case is that nothing happens, and you can tell because the before and after figures are identical.

Three compressors, and which one you want

This page is the quality-first option: you choose a setting, the tool tells you what size that produced. If instead you have been handed a hard limit, like a portal that refuses anything over 100 KB, Compress Image to Exact Size works backwards from the byte count and finds the setting for you. And when the pixels must survive untouched, Optimize PNG rewrites a PNG’s internal encoding with oxipng and changes not a single colour value.

Changing format is often the bigger win than any of the three. JPG to WebP typically beats JPEG at the same visual quality, and every option is listed on the image tools hub or discussed in the image converter and editing tools guide.

See it in action

Screenshot of the Compress Images tool with sysfenix-photo.jpg (48 KB) loaded, Quality (1–100, lower = smaller file) set to 75, Downscale large images set to Keep original dimensions
Compress Images mid-process: sysfenix-photo.jpg (48 KB) loaded, Quality (1–100, lower = smaller file) set to 75, Downscale large images set to Keep original dimensions.
Screenshot of the Compress Images result screen showing sysfenix-photo-compressed.jpg ready to download (16 KB, 66% smaller)
The finished result: sysfenix-photo-compressed.jpg ready to download (16 KB, 66% smaller). The download link is a local blob URL — the file never leaves your device.

Frequently asked questions

My PNG came back at exactly the same size. Is that a bug?

No. The browser's PNG encoder ignores the quality value completely, so nothing you type into that box changes a PNG. The re-encode can still come out smaller on its own, and when it does that is what you get. If the re-encoded PNG is no smaller than the source and no downscale was actually applied to it, the tool hands back your original bytes untouched, which is why the before and after figures match to the byte. The downscale limit is the only control here that reliably moves a PNG.

Does the compressed copy still carry my camera's GPS tag?

It depends which path your file took. When the image is genuinely re-encoded, it is decoded to raw pixels and drawn onto a fresh canvas, and a canvas has nowhere to keep EXIF, so location, camera model and capture time are absent from that result. When the tool falls back to handing your original bytes back instead, which happens whenever no downscale was actually applied to that image and the re-encode came out no smaller, you get the file exactly as it arrived, GPS tag and all. Note that the test is whether a downscale happened, not whether you picked one. An image already inside the limit you selected is left at its own dimensions, so it can take the fallback path and keep its EXIF even though a limit was chosen, while larger files in the same batch do not. Stripping metadata is a side effect of compression here rather than its purpose, so use the dedicated EXIF remover when removing it is the actual goal, for a JPG or a PNG, the two formats it accepts, since it strips the tags on every file it takes rather than only on the ones that took the re-encode path. A WebP carried out of a batch here has to be converted first, because that page refuses it. It is not free either, since it re-encodes a JPG at its own quality setting of 92, which is a second lossy save, while a PNG is rewritten losslessly.

Does "Max 1920 px" measure the width or the height?

The longest side, whichever that is. The tool compares the larger of the two dimensions against the limit and scales both edges by the same factor, so a 4000x3000 landscape photo becomes 1920x1440 and a 3000x4000 portrait becomes 1440x1920. An image already inside the limit keeps its original dimensions.

Why does a photo barely shrink at quality 75?

Because it was probably saved at a similar setting already. The number is a target handed to the JPEG or WebP encoder, not a percentage taken off the current file, so an image a phone editing app exported at around 70 has very little left to give at 75. Drop into the 50s for those, or add a downscale, which cuts the pixel count itself rather than the detail per pixel.

Can I run the same photos again at a different quality?

Only after clicking Process another, which clears the results and lets the dropzone accept files again. Start from your originals when you do, because compressing a JPG that this tool already compressed stacks a second lossy encode on top of the first, and that damage does not undo.

What filename does the compressed copy get?

The original name with -compressed inserted before the extension, so holiday.jpg downloads as holiday-compressed.jpg and never overwrites the source. The extension itself is preserved, since the output format always matches the input, so JPG stays JPG, PNG stays PNG and WebP stays WebP.

Related tools