Compression quality, backed by open data
Every release is automatically benchmarked against best-in-class open-source stacks. We publish both size and perceptual-quality numbers.
Latest PNG benchmark
Run on 2026-06-27 against libimagequant (the palette-quantization engine TinyPNG uses), on a 37-image core test set.
By category (vs libimagequant)
| Category | Images | MiniPic | Reference | Rel. size | SSIM |
|---|---|---|---|---|---|
| UI screenshots | 12 | 72.5% | 62.1% | 72.4% | 0.9986 |
| Illustrations | 10 | 75.8% | 64.6% | 75.4% | 1.0000 |
| Icons | 10 | 78.4% | 72.9% | 81.0% | 0.9892 |
| Pixel art | 5 | 76.7% | 68.3% | 73.3% | 1.0000 |
Quality guarantees
Every PNG in this run scores SSIM at or above the control group, while coming out smaller. The banding index, alpha channel and ICC color profile invariants all pass.
JPEG benchmark coming soon
We're finalizing the JPEG operating point and will publish its full head-to-head data alongside PNG.
Methodology
Our test set spans UI screenshots, illustrations, icons, pixel art, alpha-channel design assets and photos — all procedurally generated from our own seeds (reproducible, zero third-party assets, zero licensing risk). The control group is libimagequant — the same palette-quantization engine behind TinyPNG — run via sharp under the same constraints. The published PNG aggregate covers the UI / illustration / icon / pixel-art core set.
- Size: output bytes under the same constraint (smaller is better ↓)
- Quality: chroma-sensitive SSIM (higher is better ↑), backed by a banding index and low-pass chroma ΔE
- Hard invariants: alpha channel and ICC color profile must be preserved byte-for-byte
Raw data
Reproduce
Every number reproduces with the open benchmark script:
node bench/run.mjsTest environment: 12th Gen Intel(R) Core(TM) i9-12900T · 24× · Node v22.22.0 · sharp 0.35.0 · imagequant 2.4.1