A phone camera produces a file between four and twelve megabytes. An upload form accepts five. A mailbox rejects twenty-five. A web page that loads a dozen of these takes long enough that people leave before it finishes. So the question is never really "how do I compress an image" — it is "how much can come out of this file before anyone can tell."
That question has a real answer, and it is usually much more than people expect. The gap exists because cameras are tuned to preserve everything for editing later, while a picture that is going to be looked at once on a screen needs a fraction of that. Understanding what the extra bytes are buying is what lets you throw them away with confidence.
What compression actually removes
JPEG and WebP are lossy formats. They work by splitting the image into small blocks, describing each block as a set of frequency components — broad tones first, fine detail last — and then storing the fine components at reduced precision. Human vision is far more sensitive to brightness edges than to subtle colour variation, so the fine colour detail is where the savings are, and where the loss is least visible.
This is why a photograph compresses so much better than a screenshot. A photograph is full of gradients and noise that the eye cannot track precisely. A screenshot is full of hard edges and flat colour, exactly the content JPEG handles worst, which is why compressed screenshots go blotchy around text while compressed landscapes look fine at a tenth of the size.
PNG is a different animal entirely. It is lossless: it finds repetition and encodes it more efficiently, and the pixels that come out are bit-for-bit the pixels that went in. There is no quality setting because nothing is being discarded. A PNG can still be made meaningfully smaller by re-deriving the optimal filters and compression parameters, but the ceiling is lower and the image itself is untouched.
Choosing a setting, and why the number matters less than the measurement
Most compressors give you a quality slider from 1 to 100 and no way to know what any given number will do to your particular image. The number is not a percentage of anything — a photograph at 80 and a logo at 80 will come out completely differently, because the setting describes how coarsely detail is stored, not how good the result looks.
The more useful approach is to work backwards from the result. Rather than picking a number and hoping, an encoder can compress at several settings, compare each result against the original with a perceptual similarity measure, and keep the smallest file that still clears a quality floor. That way the setting adapts to the picture: a noisy photograph is pushed harder than a clean illustration, because it can take it.
Filum's Compress Image works that way, and shows you the measured score alongside the result rather than asking you to trust a slider. A typical high-quality camera JPG shrinks by roughly two thirds at the Balanced setting — measured on a real photograph, not estimated.
When an image will not get smaller — and what a good tool does about it
Some images are already at their floor. An illustration exported from a design tool with optimisation switched on, a photo that has been through a compressor once already, a small icon — there may be nothing left to remove. A compressor that insists on producing output anyway will hand you a file that is the same size or larger, and visibly worse, because it has re-applied lossy compression to something that was already compressed.
That second pass is the hidden cost of repeated compression, and it is cumulative. Each round of JPEG encoding quantises detail that the previous round already coarsened, and the artefacts compound. Compressing the same photo five times does not make it five times smaller; it makes it slightly smaller and considerably worse.
The correct behaviour when there are no savings available is to say so and return the original untouched. Filum does that: the output is never larger than the input, and when nothing can be gained you get your file back unchanged with an explanation, not a silently degraded copy.
The upload question
Almost every free image compressor works by uploading your picture to a server, compressing it there, and sending it back. That is a reasonable engineering choice — it was the only way to do it for most of the web's history — but it means the image is transmitted to and briefly stored on infrastructure you do not control, along with whatever is in it.
For a holiday photo that is a non-issue. For a scan of a document, a photograph of a whiteboard after a meeting, a screenshot with a customer's details on it, or a picture of a child, it is a decision worth making deliberately rather than by default.
The browser can now do this work itself. Image codecs compiled to WebAssembly run in the page at speeds close to native, which means the compression can happen on your own device with the file never being transmitted anywhere. That is how Filum's Compress Image works — it supports JPG, PNG, and WebP, it shows real before and after sizes, and the picture never leaves your computer.