The best image compression tools differ depending on who you are. A blogger wants small JPEGs quickly, while a developer wants the smallest bytes in a format every browser can load. This page helps you pick one today.
We build ImgCompress.app, so we are biased toward it. To keep that honest, we measured only our own tool and open-source encoders, and we compared TinyPNG, Squoosh and iLoveIMG from their official pages. We never ran those three ourselves, so you will find no made-up numbers for them.
Quick answer: the best image compression tools by need
| Your need | Pick | Why |
|---|---|---|
| Smallest JPEG at a given size | Squoosh (mozjpeg) | In our test mozjpeg beat our own canvas encoder by 36 to 66% at the same dimensions |
| Simple batches, upload is fine | TinyPNG | 20 images per batch, 5 MB each on the free tier |
| Maximum control over codecs, nothing uploaded | Squoosh | Open source, runs in your browser, offers MozJPEG, WebP, AVIF and OxiPNG |
| Quick resize for web with no upload | ImgCompress.app | Local processing, 1920 px default, 10 files per batch |
| Large files or many tool types in one site | iLoveIMG | 200 MB file size on the Basic plan, but files go to its servers |
| Automation from code | TinyPNG API | 500 free compressions per month |
The numbers behind these picks follow.
How we tested, and our disclosure
We build ImgCompress.app. We ran every test on 2026-10-05 on an Apple M3 Max with macOS 26.7.1. The app ran in Playwright Chromium 154 against a local dev server. The open-source encoders ran through sharp 0.35.5, which bundles mozjpeg, libwebp 1.6.0, libaom 3.15.1 and libimagequant 2.4.1.
We used six images:
| File | Source and author | Licence | Size |
|---|---|---|---|
| landscape.jpg | "Lake Mountain Landscape", Wikimedia Commons, Bonnie Moreland | CC0 1.0 | 5184x3456, 2.92 MB |
| portrait.jpg | Woman in a headwrap in Quebec City, Wikimedia Commons, Wilfredor | CC0 1.0 | 8256x5504, 12.0 MB |
| product.jpg | Balenciaga shoes with huge soles, Wikimedia Commons, Syced | CC0 1.0 | 4080x3072, 2.42 MB |
| kodim04.png | Kodak test image 4, r0k.us/graphics/kodak, Eastman Kodak | Released by Kodak for unrestricted usage, per r0k.us | 512x768, 637 kB |
| screenshot-ui.png | Capture of our own /compress page | Own work | 1440x900, 100.7 kB |
| graphic-newlogo.png | "NEW LOGO R", Wikimedia Commons, Enzy Cell | CC0 1.0 | 1568x1274, 152 kB |
The metric is SSIM, a score from 0 to 1 for how similar the output looks to the original, where 1 is identical. We computed it on luma against the original at the same dimensions. Each row is one run, and six images are a small sample, not a statistical study.
We did not test the TinyPNG, Squoosh, iLoveIMG outputs, Safari or Firefox, or ImgCompress.app with AVIF or WebP output. The third-party facts below come from each tool's official pages, checked on the same date. Test files and scripts are listed in our methodology notes, linked from our about page. An AI assistant helped draft the text, and we checked every figure against the raw data.
Our benchmark results
Photos: what the default run really does
On a default /compress run (quality 0.8, 1 MB target, 1920 px long edge), the savings look huge:
| Image | Before | After | Saved |
|---|---|---|---|
| landscape.jpg | 2.78 MB | 244.5 kB | 91.4% |
| portrait.jpg | 11.47 MB | 150 kB | 98.7% |
| product.jpg | 2.31 MB | 243 kB | 89.7% |
Most of that saving comes from shrinking the image to 1920 px, not from clever encoding. That suits a blog or a product page and is wrong when you need full resolution. Each image took 88 to 694 ms.
At the same 1920 px size, a dedicated JPEG encoder does better than we do:
| Image | ImgCompress.app | mozjpeg q80 | We are larger by | SSIM app / mozjpeg |
|---|---|---|---|---|
| landscape.jpg | 250 kB | 183 kB | 36% | 0.978 / 0.978 |
| product.jpg | 249 kB | 183 kB | 36% | 0.986 / 0.980 |
| portrait.jpg | 154 kB | 93 kB | 66% | 0.960 / 0.982 |
On the portrait we are both bigger and lower in SSIM. The cause is that our tool uses the browser's built-in canvas encoder, not mozjpeg.
PNG: lossless versus palette
| Image | Original | ImgCompress.app (lossless) | Palette PNG (libimagequant q80) |
|---|---|---|---|
| screenshot-ui.png | 98.4 kB | 78.5 kB (-20%) | 32.2 kB (-68%, SSIM 0.9985) |
| graphic-newlogo.png | 148 kB | 111 kB (-25%) | 26.0 kB (-83%, SSIM 0.9967) |
Our PNG output is lossless only, so it saves 15 to 25%. Palette quantisation cuts screenshots and logos to a third or less, at the cost of reducing the image to 256 colours. On kodim04.png, lossless libpng at level 9 saved 66%, and our default saved 15%.
Formats: WebP and AVIF
At full resolution, AVIF at quality 50 was 47 to 59% smaller than mozjpeg at quality 75:
| Image | mozjpeg q75 | AVIF q50 | SSIM mozjpeg / AVIF |
|---|---|---|---|
| landscape.jpg | 839 kB | 447 kB | 0.946 / 0.939 |
| portrait.jpg | 1,534 kB | 633 kB | 0.962 / 0.946 |
| product.jpg | 521 kB | 228 kB | 0.967 / 0.962 |
WebP at quality 75 landed between the two, 28 to 33% smaller than mozjpeg on the same three photos. On product.jpg it produced 347 kB. SSIM tends to forgive the texture smoothing AVIF applies, so look at your own images before trusting a score.
AVIF is slow to produce. Native libaom at quality 50 took 1.0 s for a 12.5 MP image and 3.9 s for a 45 MP one, while mozjpeg at 1920 px took 0.2 to 0.4 s. That is fine for a hero image and painful for a batch of 500.
For flat graphics, AVIF was smallest. The logo came out at 13.3 kB (-91%) as AVIF, 26.0 kB as palette PNG and 32.8 kB as WebP. The screenshot was 27.4 kB, 32.2 kB and 40.3 kB in the same order. Palette PNG is the safe choice when you cannot count on AVIF support.
Tool by tool
Here are the best image compression tools one at a time, with limits taken from each official page.
ImgCompress.app
Good at: fast local resizing and re-encoding of JPG, PNG, WebP and AVIF in the browser. The image bytes never leave your device. In our six runs we saw zero non-GET requests and zero request bodies. During our benchmark (2026-10-05) the library script came from cdn.jsdelivr.net; since then the site serves it from its own domain, so compressing makes no request to a third-party host. You can verify this in the DevTools Network tab.
Limits: 10 files per batch and 50 MB per file. JPEG output is larger than mozjpeg at equal dimensions, PNG is lossless only, and the 1920 px default does most of the work. It runs in the browser only, with no API or command line. For other formats, try /convert.
TinyPNG
Good at: simple batches. The web tool handles JPEG, PNG, WebP, AVIF, JPEG XL and APNG, with up to 20 images at once and 5 MB each on the free tier. No account is needed for the free tool. Free format conversion covers only 3 images.
Limits and privacy: files are uploaded to TinyPNG servers and kept for a maximum of 48 hours, then deleted. The developer API gives 500 free compressions per month. If you are searching for a TinyPNG alternative, the real trade is upload versus local processing, so look at Squoosh and our tool.
Squoosh
Good at: control. Squoosh is an Apache-2.0 web app from Google Chrome Labs. It compiles MozJPEG, WebP, AVIF and OxiPNG to WebAssembly, so it uses the same open-source encoders we benchmarked, per the web.dev write-up.
Privacy: it states that it does not send your image to a server. It does collect basic usage analytics, not image data. The command-line tool is deprecated, but the web app stays supported.
iLoveIMG
Good at: breadth and big files. The compress page lists JPG, PNG, SVG and GIF. The pricing page shows a free Basic plan with 200 MB files and 30 tasks, and Premium at $7 a month with 4 GB files.
Privacy: files are processed on its servers and, per its security page, deleted within two hours. Basic includes ads. Best for: occasional jobs where file size, not privacy, is the constraint. Its pricing page says Basic requires only a free account, so expect to sign up, whereas TinyPNG's free web tool needs no account.
Upload versus in-browser
| Tool | Where processing happens | Stated retention |
|---|---|---|
| TinyPNG | Its servers | Up to 48 hours |
| iLoveIMG | Its servers | Deleted within 2 hours |
| Squoosh | Your browser | Nothing uploaded |
| ImgCompress.app | Your browser | Nothing uploaded |
The biggest difference between the best image compression tools is where your file goes. For contracts, ID photos or unreleased product shots, pick a local tool. For a public blog photo, an upload is a minor risk.
Settings by use case
- Blog photo: 1920 px long edge, JPEG or WebP. Our default run took the landscape from 2.78 MB to 244.5 kB. See the JPEG best practices for quality values.
- Store product photo: keep every product at the same dimensions. Use WebP for roughly 30% less than JPEG, and read our e-commerce image guide.
- Screenshot: palette PNG took our screenshot from 98.4 kB to 32.2 kB. Palette quantisation (libimagequant, the library we measured) gives that result, and we do not offer it.
- Logo with transparency: palette PNG at 26.0 kB, or AVIF at 13.3 kB if your audience uses modern browsers. Learn more in the AVIF deep dive.
If you need the original resolution, turn on "keep resolution" in our tool. We did not benchmark that mode.
FAQ
What is the best free image compressor?
It depends on the file. For JPEG photos we measured mozjpeg, which Squoosh uses, as the smallest at equal dimensions. For a quick local resize, ImgCompress.app is fine. TinyPNG is simple but uploads your files. No single option wins on every image type.
Is there a good TinyPNG alternative that does not upload files?
Yes. Squoosh and ImgCompress.app both process images in your browser. Squoosh uses MozJPEG, WebP, AVIF and OxiPNG encoders. Ours resizes to 1920 px by default, but its JPEG output was 36 to 66% larger than mozjpeg in our test.
Which format should I choose, WebP or AVIF?
AVIF was about half the size of JPEG at similar SSIM in our test, and WebP was 28 to 33% smaller. AVIF takes seconds to encode per large image, so WebP is the practical default and AVIF suits hero images.
Do online image compressors lower quality?
Lossy modes do. Our JPEG test scored SSIM 0.960 to 0.986. Palette PNG limits you to 256 colours, so check gradients before you publish.
Conclusion
The best image compression tools for you depend on two choices: upload or local, and size or speed. Squoosh gives you the same encoders we benchmarked, with local processing. TinyPNG is the simplest batch tool if you accept an upload. ImgCompress.app is a fast local resizer, and its limits are real: larger JPEGs than mozjpeg, lossless-only PNG, and 10 files per batch. Compare outputs on your own images before you commit. For a full walkthrough, read the ultimate image compression guide, or try the compressor.
