How to Compress a Photo Without Changing Its Resolution: 17 MB to 2 MB, Same Pixels
A 7280 x 4080 photo weighing 17 MB can become a 2.2 MB file that is still 7280 x 4080. Nothing was cropped, nothing was downscaled, and at normal viewing distance the two are hard to tell apart. The trick is knowing which of the two dials on every image you are actually turning.
Every raster image has a dimension dial, how many pixels it holds, and a quality dial, how faithfully those pixels are encoded. Most people reach for the dimension dial because it is the obvious one, and pay for it with soft detail. The quality dial is where the free weight loss lives.
Why the same pixels can weigh eight times less
JPEG and WebP are lossy codecs: they throw away information the human eye barely registers, then pack what remains tightly. The quality setting decides how aggressive that throwaway is. At quality 95 the encoder keeps almost everything and the file is huge. At quality 70 it discards high-frequency colour detail you will not miss on a screen, and the file collapses to a fraction of the size while every pixel position stays exactly where it was.
That is the entire secret behind "17 MB to 2.2 MB, same resolution". Dimensions were never the problem. The encoding budget was.
The quality ladder, and where the sweet spot sits
- Quality 90 to 100: near-lossless, for masters you will re-edit later. Big files, invisible gain over 85.
- Quality 75 to 85: the sweet spot for sharing, listings and documents. Large savings, artefacts essentially invisible.
- Quality 60 to 75: aggressive but clean for web pages and thumbnails viewed at size.
- Quality below 50: visible blockiness around text and edges. Only for previews where size is everything.
The artefacts to hunt for when you push low: mosquito noise around lettering, blocking in smooth skies, and colour banding in gradients. If a test crop at 100 percent zoom shows none of these, the setting is safe.
Free bytes: optimize, progressive and metadata
Three savings cost zero quality because they touch nothing visual. Optimized Huffman tables let the encoder use shorter codes for frequent patterns, typically 5 to 10 percent off. Progressive encoding reorders the data so previews load in passes, often a few percent smaller and always better perceived on slow connections. And stripping EXIF metadata removes camera serials, settings and, importantly, GPS coordinates from phone shots, which is a privacy win as much as a size win.
Choosing the right container
- JPEG: universal, best for photos, no transparency.
- PNG: lossless, the only sane choice for screenshots, line art and anything with text or alpha. Compressing PNG means re-encoding its zlib stream and reducing palette colour, not a quality dial.
- WebP: photos and transparency both, usually 25 to 35 percent under JPEG at equal visual quality. Check that the destination accepts it.
Hitting an exact KB target, the measured way
Portals do not say "use quality 70". They say "under 100 KB", and guesswork wastes attempts. The reliable method is a measured ladder: encode at a starting quality, read the real byte size, step quality down and encode again, and stop the first time the file lands under the target. Because size responds monotonically to quality, a binary search converges in a handful of passes and always yields the highest quality that fits.
Run in your browser, the loop costs seconds and never uploads the original, which is exactly what you want for ID scans and client images.
When compression cannot help
- Re-compressing an already compressed JPEG: each generation loses a little more. Always work from the original export.
- Screenshots full of sharp text: lossy codecs hate hard edges. Keep these as PNG, or convert to WebP lossless.
- Tiny files: below a few hundred KB the metadata and headers dominate, and there is little left to win.
Pro tip
- Decide the destination first, then compress once to its exact limit from the original file, because stacked re-encodes are where visible quality actually dies.
Try it free: Image Compressor | quality dial, exact KB targets and per-file before and after sizes, entirely in your browser.