Compress JPEG photos
Drop JPEGs below and get smaller JPEGs back. Lossless repacks the file without touching a pixel; Smart finds the lowest quality that still matches each photo. Up to 16 MB as a guest or 32 MB with a free account. Free. No account, no watermark.
Measured, not estimated
What compression did to five real JPEGs
The five JPG photographs from our showcase, compressed as JPG at each level. The range is the point: the same level saves very different amounts on different photos.
| Sample | Original | Lossless | Smart | Ultra |
|---|---|---|---|---|
| Fjord 1800 by 1200 | 832 KB JPG | 786 KB 5.6% smaller | 555 KB 33.3% smaller | 317 KB 61.9% smaller |
| Raspberries 1800 by 1200 | 342 KB JPG | 332 KB 3% smaller | 56 KB 83.7% smaller | 46 KB 86.5% smaller |
| Night skyline 1800 by 1200 | 427 KB JPG | 408 KB 4.3% smaller | 236 KB 44.7% smaller | 107 KB 74.8% smaller |
| Canoe at dusk 1800 by 1200 | 387 KB JPG | 375 KB 3.3% smaller | 125 KB 67.6% smaller | 68 KB 82.4% smaller |
| Café interior 1800 by 1200 | 356 KB JPG | 347 KB 2.4% smaller | 90 KB 74.6% smaller | 75 KB 78.9% smaller |
Sources are 1800 by 1200 JPGs at quality 92. Metadata stripped, no resize. The landscape is dense foliage and needs a high quality to hold the target, so it gives up the least.
How it works
Why one quality number doesn't fit every photo
Most compressors give you a slider. Set it to 80 and a foggy sky comes out well while a brick wall comes out rough, because the same number costs different photos different amounts. In our tests one photo held a 40 dB target at quality 61 and another needed 95.
So Smart measures instead of guessing. It encodes your photo at several qualities with jpegli, compares each result with your upload, and keeps the smallest that clears 40 dB PSNR. Then it checks that result on the SSIMULACRA 2 scale and moves back up if it scores under 70. Ultra does the same with lower targets. The quality search runs on images up to 36 megapixels and the perceptual check on images up to 8; anything larger is encoded at the level's ceiling.
Lossless is a different operation altogether. mozjpeg's jpegtran rebuilds the file's Huffman tables and rearranges it into progressive scans without decoding it. Not one pixel changes, and no lossy result is ever delivered if it would be bigger than that repack.
What survives
What a JPEG keeps when it's compressed
-
Every pixel, at Lossless
The repack works on the file's coefficients, never on decoded pixels, so the image is bit-for-bit what you uploaded.
-
The right way up, losslessly
A sideways phone JPEG is turned by moving its blocks, not by re-encoding, so turning it usually costs nothing. When the dimensions leave edge blocks that can't be moved whole, Lossless keeps the pixels as stored with the orientation tag, and Smart and Ultra turn them as part of their one encode.
-
A wide-gamut profile, at Lossless
Nothing on the lossless path can convert colours, so a Display P3 profile stays in the file. Smart and Ultra convert it to sRGB.
-
Metadata, unless you ask
EXIF is stripped by default: camera, exposure, GPS. Turn on Keep EXIF to keep it.
When not to
When it won't help much
- The JPEG was already compressed hard for the web. There's little left to remove, and Iminify hands back your original when nothing beats it.
- The image is a screenshot or a logo. Those don't belong in a JPEG; a PNG or WebP of the source is sharper and smaller.
- You can change format. The same photo as WebP or AVIF is usually smaller again, as the JPG to AVIF page shows.
How to
Compress a JPEG in three steps
-
1
Drop your JPEGs
Change Format stays off, so you get JPGs back. Both .jpg and .jpeg are accepted.
-
2
Pick a level
Lossless if the file is evidence or a master. Smart for the web. Ultra for thumbnails.
-
3
Compare, then download
The Compare view reports the PSNR between your upload and the result.
Questions
JPEG compression questions
- JPG to AVIF The smallest file a photo can get in a current browser.
- JPG to WebP Smaller photos for the web, with the exceptions shown honestly.
- Compress PNG Smaller PNGs that stay PNGs, transparency and all.
From the blog
Make your JPEGs lighter
Drop a photo and open Compare. The PSNR is right there next to the slider.