Bulk Image Compressor & File Size Reducer
How to use the image compressor
Back to the toolSmaller files at the same pixel size, either down to a number you name or at one of three fixed levels — and a row that cannot get smaller says so instead of handing you a worse file.
- 01
Add the images you want to shrink
Drop them on the page, use Upload images, or paste one in. Up to 25 MB each · JPG, PNG or WebP. The work happens in this tab and nothing is uploaded, which is also the reason a very large image can run the browser out of memory.
- 02
Name a size, or pick a level
Desired size is the first line and the one the tool opens on, because most people arrive with a number already in mind. Light, Medium and Strong are the other way round: a fixed quality applied to every image, whatever that turns out to weigh. They also differ in one way that catches people out — a level always re-encodes, while a size leaves anything already under it alone. Pick a level to treat the batch the same, and a size when every file has to clear a limit.
- 03
Set the number, then run
Read this box as a ceiling, not a goal. An image already under your number is handed straight back with nothing to download, which is why a batch of small logos at the default 100 kB can finish with every row green and no files to take. The box accepts 1 to 25600 — the top end is the 25 MB limit on the images themselves, since asking for more than the largest file the tool accepts could never do anything — and it snaps back into range when you leave it. This mode is the slow one on purpose: each image is encoded up to eight times to find the best quality that still fits. There is a floor it will not go under, so an image that cannot reach your number comes back at its smallest honest size rather than as a block of squares.
- 04
Read the rows before you take them
The pixel size never moves — shrinking that is a different tool — so the only number that changes is the file size. Download ZIP takes the batch, the buttons on a row take one image, and a row with no buttons is a row that produced no file. Read the second line under a name before you assume a row worked.
How to read the compressor results table
This tool has more to say per row than the others, because there are several honest reasons a file cannot get smaller and each of them reads differently.
Result table columns
- Image
- The thumbnail and the name you will get: the original name with -min added. A row that produced no file keeps the original name instead, since there is no new file to name. Under either sits a second line whenever the row has something to report — which on this tool is most rows, so it is worth reading rather than skipping.
- Dimensions
- The same number on both sides of the arrow, always. Compression works on how the pixels are stored, not how many there are; if you need fewer pixels that is a different tool.
- File size
- Before and after, and the only thing this tool is trying to move. A row that gave you no file shows one number instead of two, because there is no second file to weigh.
- Result
- One badge per row. Note that two different badges here are both green: finishing with a file and finishing without one are both correct endings, and neither is an error.
- Actions
- Download and copy on a row that produced a file, Retry on a row that failed, and nothing at all on a row that came back unchanged. The empty cell is the signal — there is no file to take.
Result badges
- Processing…
- This image is being worked on right now. Images are processed one at a time, so exactly one row carries this badge during a run.
- Done
- A smaller file was produced and is ready to take. How much smaller is on the second line under the name.
- Unchanged
- The image was read, a compressed copy was measured, and that copy was not smaller than what you already had — so you were given nothing rather than a bigger file wearing a smaller name. This is the tool being honest, and on a batch with PNGs in it you should expect to see it.
- Failed
- The image could not be drawn at all — hover the badge for the reason. Nearly always the browser ran out of room for an image that large, which is a limit of the machine rather than of your file. Retry reruns only this row.
The second line when you did get a file
- 95% smaller
- The plain success line: how much lighter the new file is, rounded down so it never claims more than the two numbers beside it. This is what you see when nothing else needed saying.
- Couldn’t reach the target without wrecking the image — this is as small as it goes.
- Your number was not reachable without visible damage, so you were given the smallest file the tool was willing to make instead. It is a real file and worth taking — it just weighs more than you asked. Fewer pixels usually gets there where more compression will not.
- 40% smaller — PNG has no quality setting, so this is as far as it goes.
- A PNG did get lighter — usually a 16-bit one, which the canvas drops to 8-bit — but it stopped short of your number and no setting will push it further, because PNG has no quality dial. The percentage is real; the ceiling is the format.
- Saved as PNG because this browser can’t save WebP.
- Your browser could read the original but could not write that format back, so the file you are being given is a PNG. The compression still happened; the container changed. This line wins over every other note, because a different format is the more important thing to know.
The second line when the row gave you nothing
- Already under the target size.
- The file was under your target before anything ran, so it was never decoded, never redrawn, and never re-encoded. That is why this row costs no quality at all — and why it wins even over the size limit: an image too large for the browser to draw still gets this line rather than a failure, because nothing was ever drawn. Ask for a smaller number if you actually want it re-encoded.
- PNG can’t be compressed further here — the format has no quality setting.
- A PNG that came out no smaller. PNG stores exact pixels and has no quality setting to turn down, and the browser is not a specialist PNG optimizer — a palette PNG can come back several times larger. Changing your choice will not help either: all four lines of Compression produce the same PNG byte for byte, so they can only change what this second line says. A different format is the real answer.
- Already smaller than this level. Try a stronger one.
- Your image was already compressed harder than the level you picked, so re-encoding it at that level made it bigger. This is common with photos straight off the web, which have usually been squeezed already.
- Already smaller than this level. Try a desired size instead.
- The same thing at Strong, where there is no harder level left to try. The line points you at Desired size instead, because naming a number lets the tool search below the fixed levels.
- This browser can’t save WebP.
- Your browser can read this format but cannot write it, so there was no file to hand back. Nothing is wrong with the image, and another browser may well manage it.