CompressPictureCompress an image

Compress a JPEGShrink JPG photos, keep them sharp

Drop a JPG and download a lighter one that still looks crisp.

A photographer sliding landscape prints into a paper envelope on a wooden desk — the compressed copy, which looks the same as the original.Looks the same
studio-prints.jpg261 KB261 KB down to 136 KB−48%
Same photo, same 1800 × 720 size
or drop it here · paste works tooJPG, PNG, WebP, GIF or HEIC · up to 120 MB

No photo handy?

Free · No sign-up · Photos stay on your device

The scale is the encoder's own, 1 to 100. Move it, run it, and read the byte count it produced — the dimensions stay exactly where they are.

What the quality number actually selects

The encoder splits the picture into blocks of eight pixels by eight and turns each one into sixty-four frequency coefficients: one for the block's average brightness, the rest for progressively finer variation across it. Each coefficient is divided by an entry in a quantisation table and rounded to a whole number. Coefficients that round to zero cost almost nothing to store, which is the entire trick.

Quality picks the table. A high number means small divisors and few zeros; a low number means large divisors, many zeros and a short file. Nothing about that scale is linear and nothing about it is a percentage — quality 50 is not half of anything, and the same 50 in a different encoder means a different table again.

Where the floor is

Every JPEG already carries the quantisation of the pass that made it. Re-encoding at a quality above that pass adds bytes without adding detail; re-encoding at a quality below it removes more detail and finds progressively less to remove. Somewhere around the setting the file was originally written at, the curve flattens, and further reduction buys blocking rather than bytes.

When a run lands within three percent of where it started, this page says so in plain terms and suggests keeping the original, because a three percent saving is not worth a generation of loss.

What a second pass costs

  • The blocks are re-quantised on a grid that no longer matches the detail in the picture, so ringing around hard edges compounds rather than repeating.
  • Flat areas that were already slightly banded band further, and the banding is the part people notice on skies and skin.
  • Nothing about the file records that it has been through two passes, so the only way to judge the damage is to look at it — which is what the 400 percent comparison is for.

MozJPEG writes baseline files unless you ask for progressive.

JPEGs here come from MozJPEG — trellis quantisation and optimised Huffman tables — running in a background worker on this device, with 4:2:0 or 4:4:4 chroma, optional progressive scans and a smoothing control under Advanced. Baseline is the default because many upload portals reject progressive files. If the codec cannot load, the browser's own writer stands in and the result line says which encoder wrote your file. The size difference between the two is not quoted: it depends on the picture and has not been measured here.

Questions people arrive with

What does quality 80 mean?
It selects a quantisation table, not a percentage of anything. At 80 the coefficients that carry fine detail are divided by larger numbers before rounding than they are at 95, so more of them round to zero and the file gets shorter. The same number in WebP or AVIF selects something different again, which is why this page does not pretend the scales are interchangeable.
What is the lowest quality worth using?
For a photograph destined for a screen, somewhere between 70 and 85 is usually where the loss stops being visible at 100 percent and the file is already a fraction of the original. Below about 50 the eight-by-eight block structure starts showing on flat areas such as skies and skin. The slider here goes down to 5 because a byte cap sometimes demands it, not because 5 is a setting anyone should choose on purpose.
Does re-saving a JPEG at quality 100 keep it lossless?
No. Quality 100 still quantises and still resamples nothing that was already lost, and the pixels have already been through one lossy pass. A JPEG re-saved at 100 is usually larger than the original and slightly worse. If a file must not lose anything further, do not put it through a JPEG encoder again.
Why did quality 90 make my file bigger?
Because the file you opened was saved at a lower quality than 90. Asking for a higher quality than the picture actually contains spends bytes describing detail that is no longer there. The result panel marks that as no gain and tells you to keep your original.
Can I control chroma subsampling here?
Yes, with MozJPEG (the default encoder): Advanced → Chroma subsampling, 4:2:0 or 4:4:4. 4:2:0 halves the colour resolution both ways and saves bytes; 4:4:4 keeps red text on a plain background crisp. 4:2:2 is not offered, because this MozJPEG build does not expose it. With the browser's own writer the choice is not available, and the control says so.

Elsewhere on this site