What JPEG throws away

JPEG divides the image into 8×8 blocks, converts each block to frequencies, and discards the ones your eye is worse at noticing. At high quality that is invisible. At low quality you see the grid in gradients (sky, wall paint), “mosquito” noise around high-contrast type, and muddy skin. Chroma is often stored at half resolution (4:2:0), which is why saturated reds on a hard edge smear first. Once those coefficients are gone, raising the slider on a second pass cannot invent them. You need the original.

What WebP does differently

Lossy WebP (VP8 stills) spends bits more efficiently on edges and tends to beat JPEG at the same visual quality, especially on screenshots-with-a-photo and UI. That does not mean “always pick WebP.” Many printer portals, older Outlook builds, and bureaucratic uploaders still only accept JPEG or PNG. Serving WebP to a parser that does not understand it is a failed upload, not a smaller file. Crush can encode WebP when this browser supports it; if not, it falls back to JPEG so you are not stuck.

A practical rule for Crush’s slider

  • Photographs for web or email: JPEG or WebP at 75–85. Compare both on one hero image before batching.
  • Product shots with type on the pack: stay at 85+ or use WebP; JPEG mosquitoes around letters faster than around skin.
  • Screenshots, comics, UI: PNG. JPEG will ruin 1-pixel lines. WebP can work if the destination accepts it.
  • Already tiny logos: do not run Crush. Canvas round-trip can add bytes.

Resize beats another click on the slider

A 12-megapixel JPEG at quality 90 is still huge because it is 12 megapixels. If the layout shows 720 pixels of width, encode at max width 1440 (2× for sharp phones) and quality 80. That almost always beats quality-40 at full resolution, and it avoids the block grid. Crush’s max width / max height fields exist for this, not as an afterthought.

Generation loss

Save a JPEG, open it, save again, and you requantize the same blocks. Social apps do this without asking. Crush will do it too if you feed it an export instead of a camera original. Symptom: muddy midtones and block boundaries that do not match the scene. Fix: go back to the DNG/HEIC/full-size JPEG from the camera roll, not the Messenger copy.

What Crush does not claim

We do not run a perceptual model that picks quality for you. We do not promise a percent saved. We do not keep a sidecar of SSIM scores. You look at the preview sizes and the actual pixels. If the output is larger, keep the input. If it looks worse, raise quality or switch format — do not invent a third pass at 20.

Walk through the clicks on How to, or start on the compressor.