The JPEG quality number decides how coarsely the encoder rounds off the detail in each 8×8 block of pixels. Higher means finer rounding, more bytes and less visible damage; lower means coarser rounding and smaller files. The useful range is narrower than the 0 to 100 scale suggests: above about 85 the extra bytes buy nothing a screen can show, and below about 60 the blocks start to appear. Everything else in this guide follows from that.
What the number actually controls
A JPEG encoder splits the image into 8×8 pixel blocks and converts each one into 64 frequency values: one for the block's average, and 63 for progressively finer patterns inside it. Those values are divided by numbers from a quantization table and rounded to whole numbers. Big divisors turn most of the fine-pattern values into zero, which is what makes the file small and, taken too far, makes the block look flat.
The quality setting scales that table. At 50 the standard table is used as is; at 75 every divisor is halved; at 100 every divisor is 1. So quality 100 rounds as gently as JPEG can, but it still rounds, still cuts the image into blocks, and usually still throws away colour resolution (more on that below). That is why 100 is not lossless, and why the jump from 95 to 100 can double the file size while changing nothing you can see.
Diminishing returns above 85
File size does not grow in a straight line with quality. From 60 to 85 each step adds a little detail and a little size. Above 85 the size climbs steeply: 85 to 95 roughly doubles the bytes, and 95 to 100 can double them again, while the encoder is by then preserving sensor noise and differences smaller than a display can reproduce.
Cameras and phones save at about 95 or above by default. That is why a 12-megapixel photo is 4 MB, and why re-encoding it at 85 usually halves the size with no visible difference. The compress JPEG page exists mostly to do that one thing.
Test it on your own photo: export at 85 and at 100, compare them at 1:1, then compare the file sizes.
Where the artifacts start (below 60)
Around 60 the divisors get big enough for the rounding to show. The first signs are in smooth areas: skies, walls and skin go slightly blotchy as neighbouring blocks land on different flat values. Next come ringing and "mosquito" noise, a shimmer of dots around sharp edges such as text, branches and hairlines. By 40 the 8×8 grid itself is visible in gradients, and by 20 the image is a mosaic.
This is why a compressor that has to hit a size limit should lower quality to about 50 and then reduce pixels rather than go further. A 900 px photo at quality 55 looks better than a 1200 px photo at quality 25 at the same file size.
Chroma subsampling, in one paragraph
JPEG stores brightness and colour separately, and most encoders keep the colour at half resolution in both directions (called 4:2:0), because eyes are far less sensitive to colour detail than to brightness. That alone cuts the data by half before any quality setting applies, and it is invisible on photos. It is visible on small red or blue text against a contrasting background, where edges bleed and go soft. Phone cameras almost always use 4:2:0, and so do most browser and app encoders at normal settings; some desktop apps switch to full colour resolution (4:4:4) at high quality settings.
Generation loss: saving a JPEG again
Every time a JPEG is decoded, changed and encoded again, the rounding happens again on already-rounded values. Saving at the same quality with no edits loses very little after the first time. Anything else (a crop that shifts the 8×8 grid, a resize, a filter, a different quality, a different app) starts the loss over, and after a few rounds the blotches and ringing appear at settings that were fine on the first save.
The everyday version: a photo sent on WhatsApp (re-encoded at about 100 to 200 KB), screenshotted, cropped, posted to Instagram (re-encoded again) and downloaded. Each hop looked "fine" and the result is mud. Keep one original and make every export from that, never from a previous export.
Metadata: the bytes that aren't pixels
A camera JPEG carries EXIF data (camera, lens, settings, date, often GPS location), an embedded preview thumbnail, a colour profile and sometimes XMP editing history. Together they are commonly 20 to 100 KB, and they don't change a single pixel. Stripping them is lossless and makes a real difference at small targets: 30 KB of metadata inside a 50 KB limit leaves only 20 KB for the picture. The tool removes all of it on export and converts to sRGB, which also removes the location data you probably didn't mean to share.
JPEG, WebP and PNG
| Format | Quality setting | Photos | Text and flat graphics | Transparency | Accepted by |
|---|---|---|---|---|---|
| JPEG | Yes, 0 to 100 | Best all-round, smallest widely accepted | Ringing around edges at low quality | No | Everything, including Indian portals |
| WebP (lossy) | Yes | About 25 to 35% smaller than JPEG at the same look | Cleaner edges than JPEG | Yes | Websites and browsers; not Instagram, not most forms |
| PNG | No, always lossless | Huge, several times a JPEG | Perfect edges, small files for flat art | Yes | Everything, but often rejected for photos on size |
Use JPEG for anything you upload to an app or a form, WebP for your own website, and PNG only for flat graphics or when transparency is required. Converting a photo to PNG never improves it; it only stores the existing damage exactly.
What the quality search on this site does
Instead of guessing a number and checking the size, the tool works backwards from the size you need:
- It encodes the image at quality 95. If that already fits your cap, you get it, pixels untouched.
- If not, it binary-searches between 95 and 50, encoding up to seven times, and keeps the result that lands closest to about 86% of your cap, never above it.
- If even quality 50 is too big, it reduces the pixels a little and searches again, so the result is the largest image that fits.
- For tiny targets it allows quality down to 35 as a last resort, and it shows the final quality, size and pixels before you download.
To set the number yourself, use the Custom mode on the homepage: a quality slider (default 85) plus Keep original pixels.
Rule: get the pixels right for where the image will be shown, sharpen after any resize, export at quality 80 to 85 with metadata stripped, and stop. Anything above that is bytes for the sake of a bigger number.
What this can't do
No quality setting adds detail that isn't there, and no re-encode undoes an earlier one. A photo that has been through WhatsApp at 150 KB does not become a better photo at quality 100; it becomes a bigger file of the same photo. Quality settings control how much you lose on the way out, and nothing else.
Checklist
- Screens and uploads: quality 80 to 85
- Masters and prints: 90 to 92, and keep the original anyway
- Never below 60 by choice; let pixels drop first
- One original, every export made from it
- Strip metadata; it is 20 to 100 KB of nothing, and a location leak
- JPEG for apps and forms, WebP for websites, PNG for flat graphics only