Benchmark · measured 5 October 2026
Image compressor benchmark: Smol against sips, Squoosh and Caesium
The short version. On the 24 images of the Kodak test suite, Smol 1.0.35 writing AVIF needed 15 to 21% fewer bytes than Apple’s AVIF encoder and 22 to 26% fewer than the best JPEG encoder we measured to reach the same SSIMULACRA2 quality score. Its JPEG and WebP files are the same as Squoosh’s. It was not the fastest tool, it has no lossless mode, and it lost three comparisons, which are listed below.
Smol made this benchmark, so do not take our word for it: the raw data and scripts are on this page, the test images are public, and every tool except Smol is free.
Bytes needed for the same quality, all 24 Kodak images
Shorter is better. Every encoder tuned to the same SSIMULACRA2 score of 70 on each image.
- AVIF
- WebP
- JPEG
| Format and tool | Total bytes |
|---|---|
| AVIF · Smol | 922 KB |
| AVIF · sips (Apple) | 1,161 KB |
| JPEG · Smol and Squoosh (MozJPEG) | 1,189 KB |
| WebP · Smol, Squoosh and Caesium | 1,220 KB |
| JPEG · sips (Apple) | 1,327 KB |
| JPEG · Caesium | 1,349 KB |
Bytes needed for the same quality
A compressor can always make a smaller file by keeping less of the picture, so file size alone says nothing. Each encoder was run at several settings on every image, each output was scored against its original, and we then worked out how many bytes each encoder needs to reach the same score. Totals are bytes for all 24 images; the percentage is the gap to Smol’s AVIF.
| Encoder | Score 70 | Score 75 | Score 80 | Score 85 |
|---|---|---|---|---|
| Smol, AVIF | 921,550 | 1,141,216 | 1,491,137 | n/a (2 of 24) |
| sips (Apple), AVIF | 1,160,621 (+26%) | 1,398,567 (+23%) | 1,760,869 (+18%) | n/a (12 of 24) |
| Smol and Squoosh (MozJPEG), JPEG | 1,188,611 (+29%) | 1,503,919 (+32%) | 2,026,085 (+36%) | 3,040,283 |
| Smol, WebP | 1,219,939 (+32%) | 1,485,640 (+30%) | 1,897,776 (+27%) | n/a (19 of 24) |
| Caesium, WebP | 1,218,859 (+32%) | 1,473,826 (+29%) | 1,875,732 (+26%) | 2,599,531 |
| sips (Apple), JPEG | 1,326,624 (+44%) | 1,619,680 (+42%) | 2,069,111 (+39%) | 2,864,112 |
| Caesium, JPEG | 1,348,596 (+46%) | n/a (2 of 24) | n/a (24 of 24) | n/a (24 of 24) |
SSIMULACRA2 is a perceptual quality metric from Cloudinary that ships with the JPEG XL reference software; its authors describe a score of 70 as high quality and 90 as very high quality. “n/a (2 of 24)” means none of the settings we ran reached that score on 2 of the 24 images, so no fair total exists. Caesium’s WebP files are byte-identical to Smol’s at the same quality number (72 of 72 files). Its totals differ slightly only because we ran it at more settings, which gives the interpolation more points and a wider range.
The older SSIM metric tells a flatter story. By SSIM the two AVIF encoders are 2% apart, and Apple’s JPEG encoder beats MozJPEG:
| Encoder | Score 0.95 | Score 0.96 |
|---|---|---|
| Smol, AVIF | 1,292,833 | 1,579,742 |
| sips (Apple), AVIF | 1,318,673 (+2%) | 1,611,629 (+2%) |
| Smol and Squoosh (MozJPEG), JPEG | 2,185,464 (+69%) | 2,771,104 (+75%) |
| Smol, WebP | 1,499,206 (+16%) | n/a (2 of 24) |
| Caesium, WebP | 1,488,156 (+15%) | 1,806,224 (+14%) |
| sips (Apple), JPEG | 2,102,574 (+63%) | 2,540,271 (+61%) |
| Caesium, JPEG | n/a (23 of 24) | n/a (23 of 24) |
Smol against Squoosh
Squoosh is the free reference most people compare against, and for two of three formats there is nothing to separate them. At the same quality number, Smol’s JPEG files were within 6 to 51 bytes of Squoosh’s MozJPEG on all 72 files compared, with identical SSIM, and its WebP files were byte-identical on 24 of 24. Smol is not a better JPEG or WebP encoder than Squoosh. It is the same output for a whole folder at once.
AVIF differs. We ran Squoosh’s AVIF at its default setting only, then found the bytes Smol’s AVIF needs to match each file’s score:
| Matched on | Images comparable | Squoosh AVIF | Smol AVIF | Result |
|---|---|---|---|---|
| SSIMULACRA2 | 17 of 24 | 666,265 | 565,101 | Smol 15.2% smaller, on 17 of 17 |
| SSIM | 23 of 24 | 779,699 | 813,952 | Squoosh 4.2% smaller, on 23 of 23 |
The two metrics disagree, and we report both. An image is “comparable” when Squoosh’s score falls inside the range of settings we ran for Smol.
Speed
Wall-clock time to convert all 24 PNGs to one format, on an M2 Pro.
| Tool | Job | Runs (seconds) | Mean |
|---|---|---|---|
| Smol | JPEG, quality 75 | 7.2, 7.2, 7.5 | 7.3 s |
| Smol | JPEG, quality 80 | 7.3, 7.4 | 7.3 s |
| Smol | AVIF, quality 65 | 8.2, 7.4 | 7.8 s |
| Smol | WebP, quality 82 | 6.7, 6.5 | 6.6 s |
| sips | JPEG, formatOptions 50, shell loop | 0.63, 0.54, 0.54 | 0.57 s |
| caesiumclt | JPEG, quality 90 | 0.21, 0.19, 0.19 | 0.20 s |
Smol is the slowest of the three by a wide margin. MozJPEG is built to trade encoding time for smaller files, so some of the gap is the encoder; we did not measure how much is the encoder and how much is Smol itself. Squoosh is not in this table because it has no batch mode.
Lossless
The 24 source PNGs are 15,394,305 bytes. Smol has no lossless mode, so it is absent here.
| Tool | Total bytes | Saved |
|---|---|---|
| Caesium, lossless PNG | 14,709,218 | 4.5% |
| Squoosh, OxiPNG default | 14,768,017 | 4.1% |
Where Smol did not win
- Speed. A sips loop was about 13 times faster and caesiumclt about 37 times faster.
- JPEG at high quality. At a SSIMULACRA2 score of 85, Apple’s JPEG encoder needed 5.8% fewer bytes than Smol’s. By SSIM, Apple’s JPEG was smaller at both scores we matched.
- AVIF, by SSIM. Squoosh’s default AVIF was 4.2% smaller than Smol’s at the same SSIM, on every comparable image.
- Lossless. Smol always re-encodes. For pixel-identical output use ImageOptim, OxiPNG or Caesium’s lossless mode.
- JPEG and WebP against Squoosh. A tie, not a win: the files are the same.
Method
- Images. The 24 images of the Kodak Lossless True Color Image Suite, 768 × 512 pixels each, 15,394,305 bytes of PNG in total. They are public, so anyone can repeat this.
- Machine. Apple M2 Pro, 16 GB, macOS 27.0.
- Tools. Smol 1.0.35 driven through its MCP server; sips-316 (built into macOS); caesiumclt 1.5.0; squoosh.app in headless Chrome 154; Zipic 1.10.2 on its free tier, which allowed three images and no AVIF.
- Settings. Each encoder at four to ten quality settings per format, except Squoosh’s AVIF (default only). 1,335 output files in all.
- Scoring. Every output against its original PNG with SSIMULACRA2 (libjxl 0.11.2) and SSIM (11-tap Gaussian window, sigma 1.5, mean of the red, green and blue channels).
- Matching. For each image and encoder, the bytes needed to hit a target score are interpolated in log-bytes between the two nearest settings measured, then summed over the 24 images. If any image cannot reach the score, no total is reported.
- Timing. Wall-clock seconds for the whole folder, two or three runs each, all listed above.
Limits of this test
- Twenty-four small film scans are not your photo library. Phone photos, screenshots and product shots on white will give different numbers.
- A quality metric is a model of what people see, not people. SSIMULACRA2 and SSIM disagree in places, which is why both are shown.
- One machine, one version of each tool, one day. Smol’s JPEG output changed between versions 1.0.34 and 1.0.35, and other tools change too.
- Squoosh’s AVIF was measured at one setting and Zipic on three images, so those comparisons are narrower than the rest.
- We make one of the products tested. The data and scripts below exist so the result does not depend on trusting us.
Raw data and scripts
- results.json and results.csv: one row per scored file (image, tool, format, setting, bytes, SSIM, SSIMULACRA2), 1,335 rows.
- ssim_lib.py, harvest2.py and match2.py: the scoring and matching code.
- smol-run.mjs and squoosh.mjs: how Smol and Squoosh were driven. README.txt explains the rest.
For what the numbers mean when you are choosing a tool, including four compressors we assessed without measuring, read the best image compressors for Mac. Found a mistake? Tell us and we will correct it.
Questions this answers
Is Smol the best image compressor for Mac?
It depends on what you measure. For the smallest file at a given quality, Smol's AVIF output was the smallest we measured: 15 to 21% fewer bytes than Apple's AVIF encoder and 22 to 26% fewer than the best JPEG encoder, at the same SSIMULACRA2 score on all 24 Kodak images. For raw speed a sips or Caesium script is more than ten times faster, and for lossless optimization ImageOptim is the right tool, because Smol has no lossless mode.
Is Smol better than Squoosh?
For JPEG and WebP the output is the same: Smol's JPEG files were within 6 to 51 bytes of Squoosh's MozJPEG on 72 files, and its WebP files were byte-identical. The difference is that Smol does a whole folder at once and Squoosh does one image at a time. For AVIF, Smol's files were 15.2% smaller than Squoosh's default AVIF at the same SSIMULACRA2 score, and 4.4% larger at the same SSIM.
How much smaller is AVIF than JPEG at the same quality?
In this test, 22 to 26% smaller: Smol's AVIF against MozJPEG at SSIMULACRA2 scores of 70, 75 and 80, summed over 24 images.
Is Smol faster than sips?
No. Converting the 24 test images took Smol about 7.3 seconds, a sips shell loop 0.6 seconds and caesiumclt 0.2 seconds on the same M2 Pro.