Guide
Why this JPEG will not get smaller
Some files give up half their size on the first pass and some give up three percent however hard you push. The difference is not the tool. It is what was already done to the file before it reached you.
If you are here because a compressor reported a one percent saving and you assumed it was broken, it probably was not. Below is how to tell which of the three common cases you are in, and what each one actually calls for.
The floor is set by the pass that made the file
A JPEG encoder divides each block's frequency coefficients by entries in a quantisation table and rounds the results. Whatever rounds to zero is gone, and the table used is written into the file. When you re-encode, you are quantising numbers that have already been quantised: the fine detail that a low-quality table would have removed was removed the first time.
So the second pass has very little left to find. What it does still have is the ability to do damage, because the new table does not line up with the old one and the rounding errors compound. That is the shape of the curve people run into: the saving falls away much faster than the loss does.
Three shapes of stuck file
One: the file is already efficient
Anything that has been through a social platform, a messaging app or a website's own image pipeline has been compressed by something that does this for a living. There is nothing left on the table. The right response is to stop — and if the file is still too big for what you need, the problem is the pixel count, not the quality.
Two: the picture has too many pixels for the target
A byte cap and a pixel count are in direct competition. Twenty kilobytes across twelve million pixels is one byte for every six hundred of them, and no encoder writes a photograph that thin while it still looks like a photograph. When a cap is unreachable at the quality floor, that is what has happened, and the only remaining lever changes the picture's dimensions rather than its bytes.
Three: the picture is in the wrong container
A photograph saved as a PNG is usually several times larger than the same photograph as a JPEG, because PNG stores every pixel exactly and a photograph has a different colour in nearly every one. Screenshots have the opposite problem: saved as JPEG, flat colours and text get ringing artefacts and the file is often larger than a palette PNG of the same picture would be. When a file is stubbornly large, check what it is before you check how hard it was compressed — the format is frequently the thing doing the work.
What a second re-encode actually costs
- Ringing around hard edges compounds, because the new block grid quantises detail that the previous pass had already distorted.
- Flat regions band further. Skies, walls and skin are where a second generation shows first, and they are also what people photograph most.
- Nothing in the file records how many passes it has been through, so there is no way to know how much has already been spent except to look at the picture closely.
- The saving, meanwhile, is usually in single figures. You are paying a visible cost for an invisible benefit.
When the answer is to leave it alone
If a run comes back within a few percent of where it started, that is the honest result and not a failure of the tool. The file you already have is the best version of it that exists, and putting it through another pass makes it worse without making it meaningfully smaller. This site reports that case in those words rather than showing a three percent improvement as a success, because the useful answer there is to stop.
A better encoder finds a little more — not a lot.
JPEGs on this site are written by MozJPEG, with trellis quantisation and optimised Huffman tables, running in your browser. On a file that is genuinely at its floor that changes nothing — there is nothing to find either way. If you want the bytes back without touching a pixel, the lossless page rebuilds a JPEG's Huffman tables; that is usually worth a few percent at most.
Asked about stuck files
I set quality to 40 and the file barely changed. Why?
My photo is 5 MB and nothing gets it under 1 MB. What is wrong?
Is it worth compressing a file twice?
How can I tell whether a JPEG is already compressed hard?
Does saving as PNG help a stubborn JPEG?
Related work
- Compress a JPEGThe quality axis, with the ledger reporting plainly when a file is already at its limit.
- Compress to a size in KBThe search reports an unreachable cap after a single encode instead of grinding through eight.
- Upload limits on Indian exam portalsWhen the cap comes from a form rather than from you, and both dimensions and bytes are constrained.
