BlazeDiffOther librariesLower is better
Apple M1 Max · darwin/arm64 · Node v22.14.0 · rustc 1.97.1 (8bab26f4f 2026-07-14) · best-of, iterations scaled by image size, single-threaded, Node (V8) running wasm32 with SIMD · 2026-10-26 · 3017cb8-dirty · pnpm benchmark png-wasm
Per-fixture results (36)
| Fixture | MPx | blazediff | zune-png | jSquash | blazediff vs jSquash | zune-png vs jSquash |
|---|
| 4k/1a.png | 17.9 | 185ms | 223ms | 398ms | 2.15x | 1.78x |
| 4k/1b.png | 17.9 | 163ms | 206ms | 378ms | 2.31x | 1.84x |
| 4k/2a.png | 20.0 | 224ms | 274ms | 545ms | 2.44x | 1.99x |
| 4k/2b.png | 20.0 | 232ms | 269ms | 547ms | 2.36x | 2.03x |
| 4k/3a.png | 24.0 | 245ms | 310ms | 569ms | 2.32x | 1.83x |
| 4k/3b.png | 24.0 | 242ms | 309ms | 579ms | 2.39x | 1.87x |
| alpha/1a.png | 0.0 | 0.10ms | 0.12ms | 0.36ms | 3.47x | 3.13x |
| alpha/1b.png | 0.0 | 0.11ms | 0.11ms | 0.36ms | 3.32x | 3.17x |
| blazediff/1a.png | 0.4 | 0.85ms | 0.97ms | 4.32ms | 5.09x | 4.45x |
| blazediff/1b.png | 0.4 | 0.80ms | 1.00ms | 4.35ms | 5.47x | 4.34x |
| blazediff/2a.png | 0.4 | 0.74ms | 0.88ms | 3.66ms | 4.92x | 4.14x |
| blazediff/2b.png | 0.4 | 0.80ms | 0.97ms | 3.71ms | 4.67x | 3.84x |
| blazediff/3a.png | 1.6 | 13.48ms | 16.19ms | 36.66ms | 2.72x | 2.26x |
| blazediff/3b.png | 1.6 | 13.52ms | 16.08ms | 35.38ms | 2.62x | 2.20x |
| blazediff/4a.png | 3.8 | 4.40ms | 4.74ms | 31.96ms | 7.26x | 6.74x |
| blazediff/4b.png | 3.8 | 4.51ms | 4.78ms | 31.67ms | 7.02x | 6.63x |
| page/1a.png | 58.9 | 210ms | 277ms | 626ms | 2.97x | 2.25x |
| page/1b.png | 58.9 | 217ms | 262ms | 610ms | 2.80x | 2.33x |
| page/2a.png | 41.7 | 47.61ms | 53.70ms | 286ms | 6.01x | 5.33x |
| page/2b.png | 41.7 | 46.96ms | 51.86ms | 283ms | 6.02x | 5.45x |
| pixelmatch/1a.png | 0.1 | 0.77ms | 0.94ms | 1.82ms | 2.36x | 1.94x |
| pixelmatch/1b.png | 0.1 | 0.61ms | 0.81ms | 1.81ms | 2.98x | 2.24x |
| pixelmatch/2a.png | 0.1 | 0.20ms | 0.23ms | 0.77ms | 3.83x | 3.36x |
| pixelmatch/2b.png | 0.1 | 0.21ms | 0.23ms | 0.78ms | 3.76x | 3.31x |
| pixelmatch/3a.png | 0.1 | 0.58ms | 0.67ms | 1.52ms | 2.60x | 2.26x |
| pixelmatch/3b.png | 0.1 | 0.55ms | 0.67ms | 1.52ms | 2.76x | 2.28x |
| pixelmatch/4a.png | 0.2 | 1.78ms | 2.21ms | 4.31ms | 2.42x | 1.95x |
| pixelmatch/4b.png | 0.2 | 1.99ms | 2.37ms | 4.68ms | 2.35x | 1.97x |
| pixelmatch/5a.png | 0.1 | 0.56ms | 0.59ms | 1.03ms | 1.84x | 1.75x |
| pixelmatch/5b.png | 0.1 | 0.56ms | 0.55ms | 0.75ms | 1.33x | 1.36x |
| pixelmatch/6a.png | 0.1 | 0.68ms | 0.67ms | 1.32ms | 1.93x | 1.95x |
| pixelmatch/6b.png | 0.1 | 0.90ms | 0.99ms | 1.37ms | 1.53x | 1.39x |
| pixelmatch/7a.png | 0.3 | 0.34ms | 0.39ms | 1.90ms | 5.52x | 4.88x |
| pixelmatch/7b.png | 0.3 | 0.34ms | 0.41ms | 1.88ms | 5.48x | 4.58x |
| same/1a.png | 1.7 | 3.54ms | 7.37ms | 14.08ms | 3.98x | 1.91x |
| same/1b.png | 1.7 | 3.56ms | 7.43ms | 14.03ms | 3.95x | 1.89x |
| TOTAL | | 1.87s | 2.31s | 5.03s | 2.69x | 2.18x |
BlazeDiffOther librariesLower is better
Levels: blazediff stored · zune-png stored.
Apple M1 Max · darwin/arm64 · Node v22.14.0 · rustc 1.97.1 (8bab26f4f 2026-07-14) · best-of, iterations scaled by image size, single-threaded, Node (V8) running wasm32 with SIMD · 2026-10-26 · 3017cb8-dirty · pnpm benchmark png-wasm
Per-fixture results (36)
| Fixture | MPx | blazediff | zune-png | blazediff vs zune-png |
|---|
| 4k/1a.png | 17.9 | 44.55ms | 71.50ms | 1.61x |
| 4k/1b.png | 17.9 | 37.01ms | 66.31ms | 1.79x |
| 4k/2a.png | 20.0 | 51.72ms | 81.47ms | 1.58x |
| 4k/2b.png | 20.0 | 42.54ms | 74.70ms | 1.76x |
| 4k/3a.png | 24.0 | 52.96ms | 91.61ms | 1.73x |
| 4k/3b.png | 24.0 | 50.30ms | 94.01ms | 1.87x |
| alpha/1a.png | 0.0 | 0.09ms | 0.14ms | 1.60x |
| alpha/1b.png | 0.0 | 0.09ms | 0.14ms | 1.57x |
| blazediff/1a.png | 0.4 | 0.94ms | 1.50ms | 1.59x |
| blazediff/1b.png | 0.4 | 0.91ms | 1.50ms | 1.64x |
| blazediff/2a.png | 0.4 | 0.75ms | 1.19ms | 1.59x |
| blazediff/2b.png | 0.4 | 0.77ms | 1.22ms | 1.59x |
| blazediff/3a.png | 1.6 | 3.35ms | 6.20ms | 1.85x |
| blazediff/3b.png | 1.6 | 3.42ms | 5.85ms | 1.71x |
| blazediff/4a.png | 3.8 | 7.90ms | 13.80ms | 1.75x |
| blazediff/4b.png | 3.8 | 7.97ms | 13.63ms | 1.71x |
| page/1a.png | 58.9 | 129ms | 258ms | 1.99x |
| page/1b.png | 58.9 | 131ms | 264ms | 2.01x |
| page/2a.png | 41.7 | 89.78ms | 153ms | 1.71x |
| page/2b.png | 41.7 | 88.88ms | 156ms | 1.76x |
| pixelmatch/1a.png | 0.1 | 0.28ms | 0.45ms | 1.62x |
| pixelmatch/1b.png | 0.1 | 0.28ms | 0.47ms | 1.64x |
| pixelmatch/2a.png | 0.1 | 0.14ms | 0.24ms | 1.66x |
| pixelmatch/2b.png | 0.1 | 0.14ms | 0.23ms | 1.60x |
| pixelmatch/3a.png | 0.1 | 0.28ms | 0.45ms | 1.59x |
| pixelmatch/3b.png | 0.1 | 0.27ms | 0.46ms | 1.66x |
| pixelmatch/4a.png | 0.2 | 0.38ms | 0.61ms | 1.62x |
| pixelmatch/4b.png | 0.2 | 0.39ms | 0.63ms | 1.63x |
| pixelmatch/5a.png | 0.1 | 0.14ms | 0.24ms | 1.63x |
| pixelmatch/5b.png | 0.1 | 0.14ms | 0.23ms | 1.61x |
| pixelmatch/6a.png | 0.1 | 0.14ms | 0.22ms | 1.60x |
| pixelmatch/6b.png | 0.1 | 0.14ms | 0.22ms | 1.62x |
| pixelmatch/7a.png | 0.3 | 0.52ms | 0.85ms | 1.64x |
| pixelmatch/7b.png | 0.3 | 0.52ms | 0.86ms | 1.68x |
| same/1a.png | 1.7 | 3.58ms | 6.16ms | 1.72x |
| same/1b.png | 1.7 | 3.60ms | 6.16ms | 1.71x |
| TOTAL | | 756ms | 1.37s | 1.82x |
BlazeDiffOther librariesLower is better
Levels: blazediff fdeflate, adaptive filter · zune-png stored · jSquash png crate default.
Apple M1 Max · darwin/arm64 · Node v22.14.0 · rustc 1.97.1 (8bab26f4f 2026-07-14) · best-of, iterations scaled by image size, single-threaded, Node (V8) running wasm32 with SIMD · 2026-10-26 · 3017cb8-dirty · pnpm benchmark png-wasm
Per-fixture results (36)
| Fixture | MPx | blazediff | zune-png | jSquash | blazediff vs jSquash | zune-png vs jSquash |
|---|
| 4k/1a.png | 17.9 | 236ms | 65.81ms | 286ms | 1.21x | 4.35x |
| 4k/1b.png | 17.9 | 225ms | 70.29ms | 276ms | 1.22x | 3.92x |
| 4k/2a.png | 20.0 | 234ms | 73.03ms | 308ms | 1.32x | 4.22x |
| 4k/2b.png | 20.0 | 240ms | 74.41ms | 303ms | 1.26x | 4.07x |
| 4k/3a.png | 24.0 | 304ms | 87.89ms | 384ms | 1.26x | 4.37x |
| 4k/3b.png | 24.0 | 304ms | 89.58ms | 388ms | 1.28x | 4.33x |
| alpha/1a.png | 0.0 | 0.16ms | 0.14ms | 0.23ms | 1.39x | 1.59x |
| alpha/1b.png | 0.0 | 0.16ms | 0.14ms | 0.23ms | 1.38x | 1.56x |
| blazediff/1a.png | 0.4 | 3.48ms | 1.50ms | 3.17ms | 0.91x | 2.11x |
| blazediff/1b.png | 0.4 | 3.44ms | 1.52ms | 3.18ms | 0.92x | 2.10x |
| blazediff/2a.png | 0.4 | 1.38ms | 1.20ms | 2.12ms | 1.53x | 1.76x |
| blazediff/2b.png | 0.4 | 1.40ms | 1.19ms | 2.14ms | 1.53x | 1.79x |
| blazediff/3a.png | 1.6 | 17.94ms | 6.10ms | 18.34ms | 1.02x | 3.00x |
| blazediff/3b.png | 1.6 | 17.72ms | 5.82ms | 17.91ms | 1.01x | 3.08x |
| blazediff/4a.png | 3.8 | 23.73ms | 13.54ms | 19.57ms | 0.82x | 1.44x |
| blazediff/4b.png | 3.8 | 23.81ms | 13.54ms | 19.55ms | 0.82x | 1.44x |
| page/1a.png | 58.9 | 485ms | 233ms | 413ms | 0.85x | 1.77x |
| page/1b.png | 58.9 | 480ms | 234ms | 404ms | 0.84x | 1.72x |
| page/2a.png | 41.7 | 207ms | 157ms | 323ms | 1.56x | 2.05x |
| page/2b.png | 41.7 | 191ms | 156ms | 321ms | 1.68x | 2.06x |
| pixelmatch/1a.png | 0.1 | 1.14ms | 0.44ms | 0.93ms | 0.82x | 2.10x |
| pixelmatch/1b.png | 0.1 | 1.19ms | 0.47ms | 0.96ms | 0.81x | 2.05x |
| pixelmatch/2a.png | 0.1 | 0.50ms | 0.24ms | 0.91ms | 1.83x | 3.87x |
| pixelmatch/2b.png | 0.1 | 0.49ms | 0.23ms | 0.89ms | 1.82x | 3.92x |
| pixelmatch/3a.png | 0.1 | 1.12ms | 0.45ms | 0.81ms | 0.73x | 1.79x |
| pixelmatch/3b.png | 0.1 | 1.12ms | 0.46ms | 0.82ms | 0.73x | 1.78x |
| pixelmatch/4a.png | 0.2 | 2.28ms | 0.62ms | 2.62ms | 1.15x | 4.26x |
| pixelmatch/4b.png | 0.2 | 2.28ms | 0.64ms | 2.75ms | 1.21x | 4.26x |
| pixelmatch/5a.png | 0.1 | 0.60ms | 0.24ms | 0.52ms | 0.87x | 2.19x |
| pixelmatch/5b.png | 0.1 | 0.57ms | 0.23ms | 0.52ms | 0.90x | 2.28x |
| pixelmatch/6a.png | 0.1 | 0.80ms | 0.22ms | 0.80ms | 1.00x | 3.59x |
| pixelmatch/6b.png | 0.1 | 0.79ms | 0.22ms | 0.74ms | 0.94x | 3.30x |
| pixelmatch/7a.png | 0.3 | 1.25ms | 0.85ms | 2.04ms | 1.63x | 2.41x |
| pixelmatch/7b.png | 0.3 | 1.22ms | 0.86ms | 2.06ms | 1.69x | 2.40x |
| same/1a.png | 1.7 | 12.78ms | 6.16ms | 10.73ms | 0.84x | 1.74x |
| same/1b.png | 1.7 | 12.82ms | 6.16ms | 10.69ms | 0.83x | 1.74x |
| TOTAL | | 3.04s | 1.30s | 3.53s | 1.16x | 2.71x |
BlazeDiffOther librariesLower is better
Levels: blazediff stored · zune-png stored.
Apple M1 Max · darwin/arm64 · Node v22.14.0 · rustc 1.97.1 (8bab26f4f 2026-07-14) · best-of, iterations scaled by image size, single-threaded, Node (V8) running wasm32 with SIMD · 2026-10-26 · 3017cb8-dirty · pnpm benchmark png-wasm
Per-fixture results (36)
| Fixture | MPx | blazediff | zune-png | blazediff vs zune-png |
|---|
| 4k/1a.png | 17.9 | 68.4 MB | 68.5 MB | 99.9% |
| 4k/1b.png | 17.9 | 68.4 MB | 68.5 MB | 99.9% |
| 4k/2a.png | 20.0 | 76.2 MB | 76.3 MB | 99.9% |
| 4k/2b.png | 20.0 | 76.2 MB | 76.3 MB | 99.9% |
| 4k/3a.png | 24.0 | 91.6 MB | 91.7 MB | 99.9% |
| 4k/3b.png | 24.0 | 91.6 MB | 91.7 MB | 99.9% |
| alpha/1a.png | 0.0 | 144.3 KB | 144.5 KB | 99.9% |
| alpha/1b.png | 0.0 | 144.3 KB | 144.5 KB | 99.9% |
| blazediff/1a.png | 0.4 | 1.6 MB | 1.6 MB | 99.9% |
| blazediff/1b.png | 0.4 | 1.6 MB | 1.6 MB | 99.9% |
| blazediff/2a.png | 0.4 | 1.3 MB | 1.3 MB | 99.9% |
| blazediff/2b.png | 0.4 | 1.3 MB | 1.3 MB | 99.9% |
| blazediff/3a.png | 1.6 | 6.2 MB | 6.2 MB | 99.9% |
| blazediff/3b.png | 1.6 | 6.2 MB | 6.2 MB | 99.9% |
| blazediff/4a.png | 3.8 | 14.4 MB | 14.5 MB | 99.9% |
| blazediff/4b.png | 3.8 | 14.4 MB | 14.5 MB | 99.9% |
| page/1a.png | 58.9 | 224.9 MB | 225.2 MB | 99.9% |
| page/1b.png | 58.9 | 224.9 MB | 225.2 MB | 99.9% |
| page/2a.png | 41.7 | 159.1 MB | 159.4 MB | 99.9% |
| page/2b.png | 41.7 | 159.1 MB | 159.4 MB | 99.9% |
| pixelmatch/1a.png | 0.1 | 512.4 KB | 513.1 KB | 99.9% |
| pixelmatch/1b.png | 0.1 | 512.4 KB | 513.1 KB | 99.9% |
| pixelmatch/2a.png | 0.1 | 256.3 KB | 256.7 KB | 99.9% |
| pixelmatch/2b.png | 0.1 | 256.3 KB | 256.7 KB | 99.9% |
| pixelmatch/3a.png | 0.1 | 512.4 KB | 513.1 KB | 99.9% |
| pixelmatch/3b.png | 0.1 | 512.4 KB | 513.1 KB | 99.9% |
| pixelmatch/4a.png | 0.2 | 705.4 KB | 706.5 KB | 99.9% |
| pixelmatch/4b.png | 0.2 | 705.4 KB | 706.5 KB | 99.9% |
| pixelmatch/5a.png | 0.1 | 256.3 KB | 256.7 KB | 99.9% |
| pixelmatch/5b.png | 0.1 | 256.3 KB | 256.7 KB | 99.9% |
| pixelmatch/6a.png | 0.1 | 256.3 KB | 256.7 KB | 99.9% |
| pixelmatch/6b.png | 0.1 | 256.3 KB | 256.7 KB | 99.9% |
| pixelmatch/7a.png | 0.3 | 977.2 KB | 978.6 KB | 99.9% |
| pixelmatch/7b.png | 0.3 | 977.2 KB | 978.6 KB | 99.9% |
| same/1a.png | 1.7 | 6.6 MB | 6.6 MB | 99.9% |
| same/1b.png | 1.7 | 6.6 MB | 6.6 MB | 99.9% |
| TOTAL | | 1.28 GB | 1.28 GB | 99.9% |
BlazeDiffOther librariesLower is better
Levels: blazediff fdeflate, adaptive filter · zune-png stored · jSquash png crate default.
Apple M1 Max · darwin/arm64 · Node v22.14.0 · rustc 1.97.1 (8bab26f4f 2026-07-14) · best-of, iterations scaled by image size, single-threaded, Node (V8) running wasm32 with SIMD · 2026-10-26 · 3017cb8-dirty · pnpm benchmark png-wasm
Per-fixture results (36)
| Fixture | MPx | blazediff | zune-png | jSquash | blazediff vs jSquash | zune-png vs jSquash |
|---|
| 4k/1a.png | 17.9 | 19.9 MB | 68.5 MB | 25.8 MB | 76.9% | 265.1% |
| 4k/1b.png | 17.9 | 18.4 MB | 68.5 MB | 24.5 MB | 74.9% | 278.9% |
| 4k/2a.png | 20.0 | 28.0 MB | 76.3 MB | 37.1 MB | 75.5% | 205.4% |
| 4k/2b.png | 20.0 | 28.1 MB | 76.3 MB | 37.1 MB | 75.5% | 205.3% |
| 4k/3a.png | 24.0 | 35.5 MB | 91.7 MB | 43.2 MB | 82.1% | 212.3% |
| 4k/3b.png | 24.0 | 35.1 MB | 91.7 MB | 42.8 MB | 82.0% | 214.5% |
| alpha/1a.png | 0.0 | 2.3 KB | 144.5 KB | 4.5 KB | 51.1% | 3235.1% |
| alpha/1b.png | 0.0 | 2.2 KB | 144.5 KB | 4.5 KB | 49.5% | 3187.0% |
| blazediff/1a.png | 0.4 | 67.9 KB | 1.6 MB | 152.5 KB | 44.5% | 1107.5% |
| blazediff/1b.png | 0.4 | 68.1 KB | 1.6 MB | 152.8 KB | 44.5% | 1105.5% |
| blazediff/2a.png | 0.4 | 19.6 KB | 1.3 MB | 77.8 KB | 25.2% | 1766.4% |
| blazediff/2b.png | 0.4 | 20.2 KB | 1.3 MB | 79.9 KB | 25.3% | 1720.1% |
| blazediff/3a.png | 1.6 | 996.6 KB | 6.2 MB | 1.2 MB | 79.2% | 507.3% |
| blazediff/3b.png | 1.6 | 978.8 KB | 6.2 MB | 1.2 MB | 79.0% | 515.2% |
| blazediff/4a.png | 3.8 | 307.2 KB | 14.5 MB | 232.3 KB | 132.2% | 6376.4% |
| blazediff/4b.png | 3.8 | 328.9 KB | 14.5 MB | 236.9 KB | 138.8% | 6254.4% |
| page/1a.png | 58.9 | 12.4 MB | 225.2 MB | 16.7 MB | 74.3% | 1349.0% |
| page/1b.png | 58.9 | 12.4 MB | 225.2 MB | 16.7 MB | 74.3% | 1350.0% |
| page/2a.png | 41.7 | 6.5 MB | 159.4 MB | 16.8 MB | 38.5% | 945.9% |
| page/2b.png | 41.7 | 6.5 MB | 159.4 MB | 16.9 MB | 38.4% | 944.9% |
| pixelmatch/1a.png | 0.1 | 37.0 KB | 513.1 KB | 40.0 KB | 92.5% | 1282.6% |
| pixelmatch/1b.png | 0.1 | 36.9 KB | 513.1 KB | 40.0 KB | 92.4% | 1283.7% |
| pixelmatch/2a.png | 0.1 | 44.9 KB | 256.7 KB | 122.3 KB | 36.7% | 209.9% |
| pixelmatch/2b.png | 0.1 | 46.0 KB | 256.7 KB | 124.7 KB | 36.9% | 205.9% |
| pixelmatch/3a.png | 0.1 | 27.8 KB | 513.1 KB | 33.6 KB | 82.8% | 1527.2% |
| pixelmatch/3b.png | 0.1 | 27.9 KB | 513.1 KB | 33.7 KB | 82.8% | 1521.9% |
| pixelmatch/4a.png | 0.2 | 280.8 KB | 706.5 KB | 317.8 KB | 88.4% | 222.3% |
| pixelmatch/4b.png | 0.2 | 299.9 KB | 706.5 KB | 338.2 KB | 88.7% | 208.9% |
| pixelmatch/5a.png | 0.1 | 14.6 KB | 256.7 KB | 43.5 KB | 33.5% | 589.8% |
| pixelmatch/5b.png | 0.1 | 13.9 KB | 256.7 KB | 42.6 KB | 32.6% | 602.1% |
| pixelmatch/6a.png | 0.1 | 82.7 KB | 256.7 KB | 105.0 KB | 78.7% | 244.5% |
| pixelmatch/6b.png | 0.1 | 65.5 KB | 256.7 KB | 87.5 KB | 74.9% | 293.4% |
| pixelmatch/7a.png | 0.3 | 51.2 KB | 978.6 KB | 144.8 KB | 35.4% | 675.9% |
| pixelmatch/7b.png | 0.3 | 50.5 KB | 978.6 KB | 143.2 KB | 35.3% | 683.6% |
| same/1a.png | 1.7 | 206.3 KB | 6.6 MB | 306.2 KB | 67.4% | 2220.8% |
| same/1b.png | 1.7 | 206.3 KB | 6.6 MB | 306.2 KB | 67.4% | 2220.8% |
| TOTAL | | 206.8 MB | 1.28 GB | 283.2 MB | 73.0% | 462.5% |