Skip to content

Benchmarks ​

The numbers below are generated from bench/results/*.json by pnpm bench:report; nothing is estimated. Corpus: 24 images (bench/corpus/manifest.json lists sources, sizes and SHA-256). Hardware: Apple M4 Pro (14 cores, 24 GB), macOS arm64, Node 24.15, headless Chromium 156.

Reproduce:

sh
pnpm bench:corpus    # download/render the corpus
pnpm bench:node      # Optiq vs libvips (sharp); peak RSS per run in a fresh process
pnpm bench:browser   # Optiq vs browser-image-compression and canvas, in Chromium
pnpm bench:report    # regenerate bench/results/RESULTS.md

How to read it: fixed-quality baselines do not target a quality, so compare size and SSIM together. The head-to-head tables count, per image, which tool is smaller and at least as good.

Node.js: Optiq engine vs libvips (sharp) ​

Environment: {"runtime":"node v24.15.0","platform":"darwin-arm64","cpu":"Apple M4 Pro","cores":14,"memGB":24,"sharp":"0.35.5","date":"2026-10-28T05:27:34.642Z","merged":["2026-10-27T12:09:36.746Z: sc-balanced,sc-balanced-nometa","2026-10-27T13:05:48.482Z: sc-balanced,sc-balanced-nometa,sc-visually-lossless,sc-lossless","2026-10-27T14:22:30.306Z: sc-fast","2026-10-28T05:27:34.642Z: sc-fast"]}

Perceptual (lossy) results by category ​

SSIM is Optiq's metric (8x8 windows, Y/Cb/Cr 6:1:1, active-window pooling), computed identically for every tool against the decoded input. Fixed-quality baselines do not target a quality, so compare size and SSIM.

photo (10 images) ​

ToolnTotal bytes (in → out)Total reductionMedian reductionMedian SSIMMin SSIMSSIM ≥ 0.975SSIM ≥ 0.99Median timeMedian peak RSS
sc-balanced102.80 MB → 0.61 MB78.3%65.2%0.97670.975310/100/101.0 s218 MB
sc-balanced-nometa102.80 MB → 0.61 MB78.3%65.2%0.97670.975310/100/101.0 s217 MB
sc-visually-lossless102.80 MB → 0.98 MB65.1%36.4%0.99090.990410/1010/101.7 s226 MB
sharp-mozjpeg-q80102.80 MB → 0.66 MB76.2%51.7%0.96490.94872/100/1034 ms102 MB
sharp-webp-q80102.80 MB → 0.66 MB76.5%59.0%0.97390.96134/100/1035 ms102 MB
sharp-avif-q50102.80 MB → 0.32 MB88.7%77.8%0.95100.92790/100/10496 ms123 MB
sc-fast102.80 MB → 0.77 MB72.5%49.8%0.97890.976210/100/10298 ms148 MB

photo-large (3 images) ​

ToolnTotal bytes (in → out)Total reductionMedian reductionMedian SSIMMin SSIMSSIM ≥ 0.975SSIM ≥ 0.99Median timeMedian peak RSS
sc-balanced37.58 MB → 4.43 MB41.5%40.0%0.97940.97523/30/34.0 s584 MB
sc-balanced-nometa37.58 MB → 3.73 MB50.8%51.6%0.97910.97533/30/310.3 s936 MB
sc-visually-lossless37.58 MB → 5.30 MB30.1%29.9%0.99330.99173/33/33.8 s594 MB
sharp-mozjpeg-q8037.58 MB → 5.68 MB25.0%24.8%0.99580.99573/33/3790 ms194 MB
sharp-webp-q8037.58 MB → 5.25 MB30.7%34.7%0.98000.97933/30/3836 ms187 MB
sharp-avif-q5037.58 MB → 2.82 MB62.8%63.3%0.97320.96320/30/39.5 s540 MB
sc-fast37.58 MB → 4.40 MB42.0%45.4%0.97790.97523/30/32.6 s551 MB

screenshot (2 images) ​

ToolnTotal bytes (in → out)Total reductionMedian reductionMedian SSIMMin SSIMSSIM ≥ 0.975SSIM ≥ 0.99Median timeMedian peak RSS
sc-balanced20.44 MB → 0.04 MB90.6%90.2%0.99100.98192/21/29.2 s694 MB
sc-balanced-nometa20.44 MB → 0.04 MB90.6%90.2%0.99100.98192/21/29.2 s585 MB
sc-visually-lossless20.44 MB → 0.04 MB90.5%90.1%0.99510.99022/22/220.2 s665 MB
sharp-mozjpeg-q8020.44 MB → 0.24 MB45.7%46.7%0.96190.93041/21/2132 ms123 MB
sharp-webp-q8020.44 MB → 0.16 MB62.8%62.6%0.98530.97241/21/2134 ms115 MB
sharp-avif-q5020.44 MB → 0.08 MB81.1%81.0%0.99510.99152/22/21.4 s224 MB
sc-fast20.44 MB → 0.10 MB76.9%78.1%1.00001.00002/22/2883 ms352 MB

text-graphic (2 images) ​

ToolnTotal bytes (in → out)Total reductionMedian reductionMedian SSIMMin SSIMSSIM ≥ 0.975SSIM ≥ 0.99Median timeMedian peak RSS
sc-balanced20.40 MB → 0.03 MB91.8%87.5%0.99880.99772/22/22.2 s407 MB
sc-balanced-nometa20.40 MB → 0.03 MB91.8%87.5%0.99880.99772/22/22.2 s403 MB
sc-visually-lossless20.40 MB → 0.03 MB92.0%88.2%0.99900.99802/22/22.4 s415 MB
sharp-mozjpeg-q8020.40 MB → 0.24 MB39.7%37.6%0.98700.97782/21/290 ms109 MB
sharp-webp-q8020.40 MB → 0.21 MB46.6%46.2%0.98530.98492/20/275 ms106 MB
sharp-avif-q5020.40 MB → 0.12 MB68.6%70.6%0.99080.98212/21/2786 ms163 MB
sc-fast20.40 MB → 0.04 MB90.7%83.3%1.00001.00002/22/2505 ms275 MB

transparent-illustration (4 images) ​

ToolnTotal bytes (in → out)Total reductionMedian reductionMedian SSIMMin SSIMSSIM ≥ 0.975SSIM ≥ 0.99Median timeMedian peak RSS
sc-balanced40.44 MB → 0.03 MB92.4%92.5%0.97660.97514/40/42.8 s304 MB
sc-balanced-nometa40.44 MB → 0.03 MB92.4%92.5%0.97660.97514/40/42.8 s305 MB
sc-visually-lossless40.44 MB → 0.06 MB87.0%86.8%0.99120.99074/44/43.9 s327 MB
sharp-webp-q8040.44 MB → 0.18 MB58.0%58.2%0.99150.99044/44/4127 ms128 MB
sharp-avif-q5040.44 MB → 0.06 MB87.4%87.5%0.99440.99384/44/4615 ms161 MB
sc-fast40.44 MB → 0.17 MB61.9%61.8%0.98760.98644/41/4440 ms173 MB

gradient (3 images) ​

ToolnTotal bytes (in → out)Total reductionMedian reductionMedian SSIMMin SSIMSSIM ≥ 0.975SSIM ≥ 0.99Median timeMedian peak RSS
sc-balanced31.61 MB → 0.00 MB99.8%99.8%0.99650.99583/33/34.7 s519 MB
sc-balanced-nometa31.61 MB → 0.00 MB99.8%99.8%0.99650.99583/33/34.7 s523 MB
sc-visually-lossless31.61 MB → 0.00 MB99.8%99.8%0.99650.99553/33/36.3 s549 MB
sharp-mozjpeg-q8031.61 MB → 0.05 MB97.1%97.1%0.99570.99553/33/370 ms115 MB
sharp-webp-q8031.61 MB → 0.03 MB97.9%98.3%0.99620.99553/33/398 ms109 MB
sharp-avif-q5031.61 MB → 0.01 MB99.3%99.3%0.99670.99653/33/3456 ms196 MB
sc-fast31.61 MB → 0.02 MB98.5%98.9%0.99520.99463/33/3935 ms305 MB

All categories ​

ToolnTotal bytes (in → out)Total reductionMedian reductionMedian SSIMMin SSIMSSIM ≥ 0.975SSIM ≥ 0.99Median timeMedian peak RSS
sc-balanced2413.25 MB → 5.15 MB61.2%80.1%0.97840.975124/246/241.8 s304 MB
sc-balanced-nometa2413.25 MB → 4.45 MB66.5%80.1%0.97840.975124/246/241.8 s305 MB
sc-visually-lossless2413.25 MB → 6.41 MB51.7%76.2%0.99150.990224/2424/242.3 s327 MB
sharp-mozjpeg-q802012.82 MB → 6.87 MB46.4%49.8%0.97660.930411/208/2054 ms106 MB
sharp-webp-q802413.25 MB → 6.50 MB51.0%58.6%0.98050.961317/248/2459 ms105 MB
sharp-avif-q502413.25 MB → 3.41 MB74.3%78.1%0.97400.927911/2410/24590 ms151 MB
sc-fast2413.25 MB → 5.49 MB58.5%60.9%0.98470.975224/248/24425 ms173 MB

Lossless results by category ​

Pixel-exact = output decodes to exactly the reference pixels (RGBA) with the same WASM decoders. JPEG inputs are decoded with MozJPEG; libvips' libjpeg-turbo decode differs slightly, so libvips lossless re-encodes of JPEG inputs are not pixel-exact against that reference.

photo ​

ToolnTotal bytes (in → out)Total reductionMedian reductionPixel-exactMedian timeMedian peak RSS
sc-lossless102.80 MB → 2.04 MB27.0%0.0%10/1018 ms103 MB
sharp-png-max102.80 MB → 2.81 MB-0.7%-119.6%0/10323 ms110 MB
sharp-webp-lossless102.80 MB → 4.07 MB-45.4%-206.5%10/10300 ms127 MB

photo-large ​

ToolnTotal bytes (in → out)Total reductionMedian reductionPixel-exactMedian timeMedian peak RSS
sc-lossless37.58 MB → 7.58 MB0.0%0.0%3/394 ms209 MB
sharp-png-max37.58 MB → 24.12 MB-218.4%-219.2%0/34.4 s252 MB
sharp-webp-lossless37.58 MB → 32.13 MB-324.0%-328.9%3/35.0 s552 MB

screenshot ​

ToolnTotal bytes (in → out)Total reductionMedian reductionPixel-exactMedian timeMedian peak RSS
sc-lossless20.44 MB → 0.10 MB76.2%77.5%2/22.4 s323 MB
sharp-png-max20.44 MB → 0.19 MB56.4%56.8%0/2216 ms137 MB
sharp-webp-lossless20.44 MB → 0.10 MB77.1%78.3%2/2532 ms196 MB

text-graphic ​

ToolnTotal bytes (in → out)Total reductionMedian reductionPixel-exactMedian timeMedian peak RSS
sc-lossless20.40 MB → 0.04 MB90.7%83.4%2/2800 ms219 MB
sharp-png-max20.40 MB → 0.14 MB64.8%61.7%2/2100 ms136 MB
sharp-webp-lossless20.40 MB → 0.04 MB90.8%83.4%2/255 ms145 MB

transparent-illustration ​

ToolnTotal bytes (in → out)Total reductionMedian reductionPixel-exactMedian timeMedian peak RSS
sc-lossless40.44 MB → 0.25 MB42.3%42.6%4/4996 ms178 MB
sharp-png-max40.44 MB → 0.17 MB60.1%60.1%0/4151 ms113 MB
sharp-webp-lossless40.44 MB → 0.25 MB43.3%43.9%4/4467 ms124 MB

gradient ​

ToolnTotal bytes (in → out)Total reductionMedian reductionPixel-exactMedian timeMedian peak RSS
sc-lossless31.61 MB → 0.54 MB66.3%56.6%3/32.9 s276 MB
sharp-png-max31.61 MB → 0.39 MB75.8%64.8%0/3209 ms147 MB
sharp-webp-lossless31.61 MB → 0.64 MB60.0%55.9%3/3662 ms175 MB

All categories ​

ToolnTotal bytes (in → out)Total reductionMedian reductionPixel-exactMedian timeMedian peak RSS
sc-lossless2413.25 MB → 10.55 MB20.4%39.7%24/24379 ms178 MB
sharp-png-max2413.25 MB → 27.83 MB-110.0%50.6%2/24231 ms113 MB
sharp-webp-lossless2413.25 MB → 37.22 MB-180.8%36.8%24/24307 ms131 MB

Head-to-head per image ​

A dominates = A is no larger and has SSIM ≥ B on that image. trade-off = one is smaller, the other has higher SSIM.

ABimagesA dominatesB dominatestrade-off
sc-balancedsharp-mozjpeg-q80201109
sc-balancedsharp-webp-q802410014
sc-balancedsharp-avif-q50242022
sc-balanced-nometasharp-mozjpeg-q80201109
sc-balanced-nometasharp-webp-q80249015
sc-balanced-nometasharp-avif-q50242022
sc-visually-losslesssharp-mozjpeg-q80205015
sc-visually-losslesssharp-webp-q80247017
sc-visually-losslesssharp-avif-q50242121
sc-fastsharp-mozjpeg-q80206014
sc-fastsharp-webp-q80247215
sc-fastsharp-avif-q50242616
Per-image rows
ImageToolBytesReductionSSIMFormatTime
photo-kodim01.jpgsc-balanced8052052.0%0.9767avif1.1 s
photo-kodim01.jpgsc-balanced-nometa8052052.0%0.9767avif1.1 s
photo-kodim01.jpgsc-visually-lossless11236633.0%0.9911avif1.8 s
photo-kodim01.jpgsc-lossless1677600.0%1.0000 (exact)jpeg18 ms
photo-kodim01.jpgsharp-mozjpeg-q808617348.6%0.9566jpeg42 ms
photo-kodim01.jpgsharp-webp-q809487043.4%0.9792webp40 ms
photo-kodim01.jpgsharp-avif-q504184375.1%0.9338avif589 ms
photo-kodim01.jpgsharp-png-max345361-105.9%0.9923png216 ms
photo-kodim01.jpgsharp-webp-lossless431354-157.1%1.0000 (exact)webp295 ms
photo-kodim03.jpgsc-balanced2973565.8%0.9767avif844 ms
photo-kodim03.jpgsc-balanced-nometa2973565.8%0.9767avif840 ms
photo-kodim03.jpgsc-visually-lossless5358938.4%0.9908avif1.2 s
photo-kodim03.jpgsc-lossless869690.0%1.0000 (exact)jpeg17 ms
photo-kodim03.jpgsharp-mozjpeg-q804258351.0%0.9715jpeg29 ms
photo-kodim03.jpgsharp-webp-q803264862.5%0.9731webp30 ms
photo-kodim03.jpgsharp-avif-q501944477.6%0.9661avif426 ms
photo-kodim03.jpgsharp-png-max228512-162.8%0.9779png307 ms
photo-kodim03.jpgsharp-webp-lossless281922-224.2%1.0000 (exact)webp336 ms
photo-kodim05.jpgsc-balanced7828854.9%0.9765avif1.1 s
photo-kodim05.jpgsc-balanced-nometa7828854.9%0.9765avif1.1 s
photo-kodim05.jpgsc-visually-lossless11387034.4%0.9909avif1.6 s
photo-kodim05.jpgsc-lossless1736110.0%1.0000 (exact)jpeg19 ms
photo-kodim05.jpgsharp-mozjpeg-q809545145.0%0.9711jpeg43 ms
photo-kodim05.jpgsharp-webp-q809696244.1%0.9801webp38 ms
photo-kodim05.jpgsharp-avif-q504519974.0%0.9526avif649 ms
photo-kodim05.jpgsharp-png-max313227-80.4%0.9813png563 ms
photo-kodim05.jpgsharp-webp-lossless511768-194.8%1.0000 (exact)webp301 ms
photo-kodim07.jpgsc-balanced2962870.2%0.9756avif900 ms
photo-kodim07.jpgsc-balanced-nometa2962870.2%0.9756avif901 ms
photo-kodim07.jpgsc-visually-lossless5637043.3%0.9910avif1.3 s
photo-kodim07.jpgsc-lossless993400.0%1.0000 (exact)jpeg18 ms
photo-kodim07.jpgsharp-mozjpeg-q805210447.5%0.9805jpeg31 ms
photo-kodim07.jpgsharp-webp-q804039059.3%0.9803webp31 ms
photo-kodim07.jpgsharp-avif-q502173978.1%0.9720avif468 ms
photo-kodim07.jpgsharp-png-max250974-152.6%0.9868png340 ms
photo-kodim07.jpgsharp-webp-lossless329526-231.7%1.0000 (exact)webp302 ms
photo-kodim13.jpgsc-balanced11072045.0%0.9789avif1.2 s
photo-kodim13.jpgsc-balanced-nometa11072045.0%0.9789avif1.2 s
photo-kodim13.jpgsc-visually-lossless13922430.9%0.9904avif2.4 s
photo-kodim13.jpgsc-lossless2013920.0%1.0000 (exact)jpeg17 ms
photo-kodim13.jpgsharp-mozjpeg-q8010424148.2%0.9487jpeg51 ms
photo-kodim13.jpgsharp-webp-q8012786636.5%0.9808webp44 ms
photo-kodim13.jpgsharp-avif-q505895870.7%0.9279avif702 ms
photo-kodim13.jpgsharp-png-max356077-76.8%0.9877png388 ms
photo-kodim13.jpgsharp-webp-lossless523214-159.8%1.0000 (exact)webp293 ms
photo-kodim15.jpgsc-balanced4713454.2%0.9786avif1.0 s
photo-kodim15.jpgsc-balanced-nometa4713454.2%0.9786avif1.0 s
photo-kodim15.jpgsc-visually-lossless6935632.6%0.9904avif1.4 s
photo-kodim15.jpgsc-lossless1028880.0%1.0000 (exact)jpeg17 ms
photo-kodim15.jpgsharp-mozjpeg-q804894252.4%0.9602jpeg28 ms
photo-kodim15.jpgsharp-webp-q804263658.6%0.9660webp31 ms
photo-kodim15.jpgsharp-avif-q502318977.5%0.9495avif472 ms
photo-kodim15.jpgsharp-png-max254599-147.5%0.9797png358 ms
photo-kodim15.jpgsharp-webp-lossless339170-229.6%1.0000 (exact)webp308 ms
photo-kodim20.jpgsc-balanced2763268.1%0.9753avif808 ms
photo-kodim20.jpgsc-balanced-nometa2763268.1%0.9753avif798 ms
photo-kodim20.jpgsc-visually-lossless5120140.8%0.9913avif1.9 s
photo-kodim20.jpgsc-lossless864870.0%1.0000 (exact)jpeg19 ms
photo-kodim20.jpgsharp-mozjpeg-q804124252.3%0.9696jpeg28 ms
photo-kodim20.jpgsharp-webp-q803666457.6%0.9746webp29 ms
photo-kodim20.jpgsharp-avif-q501904078.0%0.9608avif482 ms
photo-kodim20.jpgsharp-png-max201888-133.4%0.9911png205 ms
photo-kodim20.jpgsharp-webp-lossless275162-218.2%1.0000 (exact)webp276 ms
photo-kodim23.jpgsc-balanced3011764.5%0.9782avif857 ms
photo-kodim23.jpgsc-balanced-nometa3011764.5%0.9782avif853 ms
photo-kodim23.jpgsc-visually-lossless5873130.8%0.9917avif1.3 s
photo-kodim23.jpgsc-lossless848870.0%1.0000 (exact)jpeg18 ms
photo-kodim23.jpgsharp-mozjpeg-q804019652.6%0.9753jpeg27 ms
photo-kodim23.jpgsharp-webp-q803007264.6%0.9711webp30 ms
photo-kodim23.jpgsharp-avif-q501745979.4%0.9671avif400 ms
photo-kodim23.jpgsharp-png-max212335-150.1%0.9522png544 ms
photo-kodim23.jpgsharp-webp-lossless343038-304.1%1.0000 (exact)webp295 ms
photo-kodim08.pngsc-balanced10186789.8%0.9774avif1.4 s
photo-kodim08.pngsc-balanced-nometa10186789.8%0.9774avif1.4 s
photo-kodim08.pngsc-visually-lossless16358583.6%0.9905avif2.3 s
photo-kodim08.pngsc-lossless55237044.5%1.0000 (exact)webp485 ms
photo-kodim08.pngsharp-mozjpeg-q809384790.6%0.9572jpeg49 ms
photo-kodim08.pngsharp-webp-q809882690.1%0.9724webp42 ms
photo-kodim08.pngsharp-avif-q504288595.7%0.9424avif677 ms
photo-kodim08.pngsharp-png-max32336067.5%0.9870png299 ms
photo-kodim08.pngsharp-webp-lossless54744645.0%1.0000 (exact)webp299 ms
photo-kodim19.pngsc-balanced7074491.1%0.9758avif1.1 s
photo-kodim19.pngsc-balanced-nometa7074491.1%0.9758avif1.1 s
photo-kodim19.pngsc-visually-lossless15715080.3%0.9927avif2.0 s
photo-kodim19.pngsc-lossless48606839.1%1.0000 (exact)webp509 ms
photo-kodim19.pngsharp-mozjpeg-q805945292.6%0.9531jpeg38 ms
photo-kodim19.pngsharp-webp-q805740092.8%0.9613webp39 ms
photo-kodim19.pngsharp-avif-q502668596.7%0.9403avif509 ms
photo-kodim19.pngsharp-png-max32855758.9%0.9891png169 ms
photo-kodim19.pngsharp-webp-lossless48366839.4%1.0000 (exact)webp307 ms
large-picsum1015.jpgsc-balanced137135140.0%0.9842jpeg4.5 s
large-picsum1015.jpgsc-balanced-nometa110688751.6%0.9791avif8.5 s
large-picsum1015.jpgsc-visually-lossless160199729.9%0.9936jpeg3.8 s
large-picsum1015.jpgsc-lossless22858540.0%1.0000 (exact)jpeg94 ms
large-picsum1015.jpgsharp-mozjpeg-q80169550925.8%0.9958jpeg790 ms
large-picsum1015.jpgsharp-webp-q80149372634.7%0.9800webp836 ms
large-picsum1015.jpgsharp-avif-q5081326264.4%0.9732avif9.5 s
large-picsum1015.jpgsharp-png-max7295526-219.2%0.9498png5.0 s
large-picsum1015.jpgsharp-webp-lossless9874632-332.0%1.0000 (exact)webp5.1 s
large-picsum1043.jpgsc-balanced204490137.9%0.9794jpeg4.0 s
large-picsum1043.jpgsc-balanced-nometa182394344.6%0.9797avif11.7 s
large-picsum1043.jpgsc-visually-lossless235261528.6%0.9933jpeg4.4 s
large-picsum1043.jpgsc-lossless32938820.0%1.0000 (exact)jpeg103 ms
large-picsum1043.jpgsharp-mozjpeg-q80248209124.6%0.9957jpeg960 ms
large-picsum1043.jpgsharp-webp-q80248140624.7%0.9793webp984 ms
large-picsum1043.jpgsharp-avif-q50127102561.4%0.9632avif10.6 s
large-picsum1043.jpgsharp-png-max9879830-199.9%0.9728png4.4 s
large-picsum1043.jpgsharp-webp-lossless13685602-315.5%1.0000 (exact)webp5.0 s
large-picsum1050.jpgsc-balanced101497849.2%0.9752webp3.1 s
large-picsum1050.jpgsc-balanced-nometa79766360.1%0.9753avif10.3 s
large-picsum1050.jpgsc-visually-lossless134363132.7%0.9917jpeg3.4 s
large-picsum1050.jpgsc-lossless19970630.0%1.0000 (exact)jpeg90 ms
large-picsum1050.jpgsharp-mozjpeg-q80150215324.8%0.9964jpeg730 ms
large-picsum1050.jpgsharp-webp-q80127517636.1%0.9819webp785 ms
large-picsum1050.jpgsharp-avif-q5073202563.3%0.9747avif8.2 s
large-picsum1050.jpgsharp-png-max6949339-248.0%0.9720png4.3 s
large-picsum1050.jpgsharp-webp-lossless8566208-328.9%1.0000 (exact)webp4.7 s
screenshot-dashboard.pngsc-balanced1712193.2%0.9819avif16.6 s
screenshot-dashboard.pngsc-balanced-nometa1712193.2%0.9819avif16.7 s
screenshot-dashboard.pngsc-visually-lossless1734693.1%0.9902avif38.6 s
screenshot-dashboard.pngsc-lossless8054267.9%1.0000 (exact)webp4.1 s
screenshot-dashboard.pngsharp-mozjpeg-q8015072639.9%0.9934jpeg200 ms
screenshot-dashboard.pngsharp-webp-q809015264.0%0.9982webp209 ms
screenshot-dashboard.pngsharp-avif-q504583681.7%0.9987avif2.1 s
screenshot-dashboard.pngsharp-png-max11520854.0%0.9999png331 ms
screenshot-dashboard.pngsharp-webp-lossless7653869.5%1.0000 (exact)webp1.0 s
screenshot-code.pngsc-balanced2437287.2%1.0000 (exact)webp1.7 s
screenshot-code.pngsc-balanced-nometa2437287.2%1.0000 (exact)webp1.7 s
screenshot-code.pngsc-visually-lossless2437287.2%1.0000 (exact)webp1.9 s
screenshot-code.pngsc-lossless2437287.2%1.0000 (exact)webp665 ms
screenshot-code.pngsharp-mozjpeg-q808827353.5%0.9304jpeg64 ms
screenshot-code.pngsharp-webp-q807354861.2%0.9724webp59 ms
screenshot-code.pngsharp-avif-q503752780.2%0.9915avif615 ms
screenshot-code.pngsharp-png-max7680759.5%0.9999png101 ms
screenshot-code.pngsharp-webp-lossless2436287.2%1.0000 (exact)webp53 ms
text-docs.pngsc-balanced2223093.5%1.0000 (exact)webp2.6 s
text-docs.pngsc-balanced-nometa2223093.5%1.0000 (exact)webp2.6 s
text-docs.pngsc-visually-lossless2223093.5%1.0000 (exact)webp1.7 s
text-docs.pngsc-lossless2223093.5%1.0000 (exact)webp928 ms
text-docs.pngsharp-mozjpeg-q8020272440.6%0.9778jpeg120 ms
text-docs.pngsharp-webp-q8018165046.7%0.9856webp91 ms
text-docs.pngsharp-avif-q5010985067.8%0.9821avif1.3 s
text-docs.pngsharp-png-max11596166.0%1.0000 (exact)png125 ms
text-docs.pngsharp-webp-lossless2158693.7%1.0000 (exact)webp63 ms
text-slide.pngsc-balanced1019581.5%0.9977avif1.9 s
text-slide.pngsc-balanced-nometa1019581.5%0.9977avif1.8 s
text-slide.pngsc-visually-lossless943482.8%0.9980avif3.0 s
text-slide.pngsc-lossless1467673.3%1.0000 (exact)webp672 ms
text-slide.pngsharp-mozjpeg-q803594534.6%0.9963jpeg60 ms
text-slide.pngsharp-webp-q802993245.6%0.9849webp58 ms
text-slide.pngsharp-avif-q501459573.5%0.9995avif317 ms
text-slide.pngsharp-png-max2346757.3%1.0000 (exact)png76 ms
text-slide.pngsharp-webp-lossless1473673.2%1.0000 (exact)webp46 ms
transparent-illustration-1.pngsc-balanced932892.8%0.9751avif2.8 s
transparent-illustration-1.pngsc-balanced-nometa932892.8%0.9751avif2.8 s
transparent-illustration-1.pngsc-visually-lossless1570187.8%0.9907avif3.8 s
transparent-illustration-1.pngsc-lossless7443242.2%1.0000 (exact)webp975 ms
transparent-illustration-1.pngsharp-webp-q805437657.8%0.9904webp129 ms
transparent-illustration-1.pngsharp-avif-q501623687.4%0.9944avif591 ms
transparent-illustration-1.pngsharp-png-max5199659.6%0.9935png142 ms
transparent-illustration-1.pngsharp-webp-lossless7296243.3%1.0000 (exact)webp461 ms
transparent-illustration-2.pngsc-balanced1197692.2%0.9762avif2.9 s
transparent-illustration-2.pngsc-balanced-nometa1197692.2%0.9762avif2.9 s
transparent-illustration-2.pngsc-visually-lossless2180185.8%0.9913avif4.0 s
transparent-illustration-2.pngsc-lossless8737043.1%1.0000 (exact)webp1.0 s
transparent-illustration-2.pngsharp-webp-q806364658.5%0.9920webp126 ms
transparent-illustration-2.pngsharp-avif-q501914687.5%0.9938avif645 ms
transparent-illustration-2.pngsharp-png-max6046960.6%0.9948png161 ms
transparent-illustration-2.pngsharp-webp-lossless8521644.5%1.0000 (exact)webp473 ms
transparent-illustration-3.pngsc-balanced962393.3%0.9770avif2.8 s
transparent-illustration-3.pngsc-balanced-nometa962393.3%0.9770avif2.8 s
transparent-illustration-3.pngsc-visually-lossless1619388.7%0.9911avif4.0 s
transparent-illustration-3.pngsc-lossless8572440.3%1.0000 (exact)webp1.0 s
transparent-illustration-3.pngsharp-webp-q805931058.7%0.9911webp127 ms
transparent-illustration-3.pngsharp-avif-q501645988.5%0.9944avif639 ms
transparent-illustration-3.pngsharp-png-max5623360.9%0.9946png167 ms
transparent-illustration-3.pngsharp-webp-lossless8522840.7%1.0000 (exact)webp503 ms
transparent-icon.pngsc-balanced214778.8%0.9824avif803 ms
transparent-icon.pngsc-balanced-nometa214778.8%0.9824avif823 ms
transparent-icon.pngsc-visually-lossless283672.0%0.9930avif1.1 s
transparent-icon.pngsc-lossless403660.1%1.0000 (exact)webp274 ms
transparent-icon.pngsharp-webp-q80573043.4%0.9970webp24 ms
transparent-icon.pngsharp-avif-q50324867.9%0.9997avif115 ms
transparent-icon.pngsharp-png-max534547.2%1.0000png29 ms
transparent-icon.pngsharp-webp-lossless397260.8%1.0000 (exact)webp21 ms
gradient-linear.pngsc-balanced141399.8%0.9965avif4.7 s
gradient-linear.pngsc-balanced-nometa141399.8%0.9965avif4.7 s
gradient-linear.pngsc-visually-lossless125799.8%0.9966avif6.3 s
gradient-linear.pngsc-lossless12077084.8%1.0000 (exact)webp2.9 s
gradient-linear.pngsharp-mozjpeg-q801093098.6%0.9970jpeg70 ms
gradient-linear.pngsharp-webp-q801186098.5%0.9964webp99 ms
gradient-linear.pngsharp-avif-q50418499.5%0.9970avif456 ms
gradient-linear.pngsharp-png-max6075992.3%0.9987png209 ms
gradient-linear.pngsharp-webp-lossless11212285.8%1.0000 (exact)webp662 ms
gradient-radial.pngsc-balanced193699.8%0.9958avif7.4 s
gradient-radial.pngsc-balanced-nometa193699.8%0.9958avif7.5 s
gradient-radial.pngsc-visually-lossless182599.8%0.9955avif9.7 s
gradient-radial.pngsc-lossless40682848.1%1.0000 (exact)png3.8 s
gradient-radial.pngsharp-mozjpeg-q802280797.1%0.9955jpeg72 ms
gradient-radial.pngsharp-webp-q801326698.3%0.9955webp98 ms
gradient-radial.pngsharp-avif-q50544099.3%0.9965avif495 ms
gradient-radial.pngsharp-png-max31787759.4%0.9989png247 ms
gradient-radial.pngsharp-webp-lossless51640234.1%1.0000 (exact)webp759 ms
gradient-sky.pngsc-balanced49998.4%0.9965avif4.0 s
gradient-sky.pngsc-balanced-nometa49998.4%0.9965avif4.0 s
gradient-sky.pngsc-visually-lossless49798.4%0.9965avif6.0 s
gradient-sky.pngsc-lossless1373056.6%1.0000 (exact)webp1.3 s
gradient-sky.pngsharp-mozjpeg-q801247360.5%0.9957jpeg56 ms
gradient-sky.pngsharp-webp-q80853273.0%0.9962webp77 ms
gradient-sky.pngsharp-avif-q5095797.0%0.9967avif415 ms
gradient-sky.pngsharp-png-max1111764.8%0.9986png143 ms
gradient-sky.pngsharp-webp-lossless1394455.9%1.0000 (exact)webp467 ms
photo-kodim01.jpgsc-fast9487043.4%0.9792webp302 ms
photo-kodim03.jpgsc-fast3761056.8%0.9768webp269 ms
photo-kodim05.jpgsc-fast9696244.1%0.9801webp416 ms
photo-kodim07.jpgsc-fast4039059.3%0.9803webp289 ms
photo-kodim13.jpgsc-fast13112234.9%0.9821webp391 ms
photo-kodim15.jpgsc-fast6102240.7%0.9787webp294 ms
photo-kodim20.jpgsc-fast3850455.5%0.9786webp224 ms
photo-kodim23.jpgsc-fast5079940.2%0.9781jpeg259 ms
photo-kodim08.pngsc-fast10816289.1%0.9762webp382 ms
photo-kodim19.pngsc-fast11041886.2%0.9837webp324 ms
large-picsum1015.jpgsc-fast124705545.4%0.9779jpeg2.6 s
large-picsum1043.jpgsc-fast213332735.2%0.9857jpeg2.9 s
large-picsum1050.jpgsc-fast101497849.2%0.9752webp2.4 s
screenshot-dashboard.pngsc-fast7740469.1%1.0000 (exact)webp1.4 s
screenshot-code.pngsc-fast2437287.2%1.0000 (exact)webp341 ms
text-docs.pngsc-fast2223093.5%1.0000 (exact)webp540 ms
text-slide.pngsc-fast1473473.2%1.0000 (exact)webp470 ms
transparent-illustration-1.pngsc-fast4922861.8%0.9864webp434 ms
transparent-illustration-2.pngsc-fast5781462.3%0.9868webp592 ms
transparent-illustration-3.pngsc-fast5497661.7%0.9885webp446 ms
transparent-icon.pngsc-fast403660.1%1.0000 (exact)webp100 ms
gradient-linear.pngsc-fast829799.0%0.9953jpeg935 ms
gradient-radial.pngsc-fast889098.9%0.9946webp1.1 s
gradient-sky.pngsc-fast645679.6%0.9952webp635 ms

Browser (Chromium): Optiq vs browser-image-compression and canvas ​

Environment: {"runtime":"Chromium 156.0.8078.4 (Playwright, headless)","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.8078.4 Safari/537.36","platform":"darwin-arm64","date":"2026-10-28T05:27:54.789Z","memory":"not measured in the browser (see Node benchmark for peak RSS)","merged":["2026-10-27T12:10:41.567Z: sc-balanced","2026-10-27T13:08:44.960Z: sc-balanced,sc-visually-lossless,sc-lossless","2026-10-27T14:22:54.348Z: sc-fast","2026-10-28T05:27:54.789Z: sc-fast"]}

Perceptual (lossy) results by category ​

SSIM is Optiq's metric (8x8 windows, Y/Cb/Cr 6:1:1, active-window pooling), computed identically for every tool against the decoded input. Fixed-quality baselines do not target a quality, so compare size and SSIM.

photo (10 images) ​

ToolnTotal bytes (in → out)Total reductionMedian reductionMedian SSIMMin SSIMSSIM ≥ 0.975SSIM ≥ 0.99Median time
sc-balanced102.80 MB → 0.61 MB78.3%65.2%0.97670.975310/100/10910 ms
sc-visually-lossless102.80 MB → 0.98 MB65.1%36.4%0.99090.990410/1010/101.6 s
bic-maxsize-1mb102.80 MB → 2.25 MB19.4%3.5%0.99620.994410/1010/1011 ms
bic-quality-0.8102.80 MB → 1.83 MB34.4%39.7%0.97480.95745/102/104 ms
bic-webp-0.8102.80 MB → 0.66 MB76.3%58.5%0.97420.96115/100/1022 ms
canvas-webp-0.8102.80 MB → 0.66 MB76.3%58.5%0.97420.96115/100/1022 ms
canvas-jpeg-0.8102.80 MB → 0.79 MB71.8%42.0%0.96860.95743/100/103 ms
sc-fast102.80 MB → 0.77 MB72.5%49.8%0.97890.976210/100/10249 ms

photo-large (3 images) ​

ToolnTotal bytes (in → out)Total reductionMedian reductionMedian SSIMMin SSIMSSIM ≥ 0.975SSIM ≥ 0.99Median time
sc-balanced37.58 MB → 4.43 MB41.5%40.0%0.97940.97523/30/33.8 s
sc-visually-lossless37.58 MB → 5.30 MB30.1%29.9%0.99330.99173/33/33.6 s
bic-maxsize-1mb37.58 MB → 2.80 MB63.0%60.0%––0/30/3405 ms
bic-quality-0.837.58 MB → 6.33 MB16.5%16.5%0.99630.99573/33/370 ms
bic-webp-0.837.58 MB → 5.24 MB30.8%34.7%0.97990.97923/30/3616 ms
canvas-webp-0.837.58 MB → 5.24 MB30.8%34.7%0.97990.97923/30/3611 ms
canvas-jpeg-0.837.58 MB → 6.33 MB16.5%16.5%0.99630.99573/33/370 ms
sc-fast37.58 MB → 4.40 MB42.0%45.4%0.97790.97523/30/32.5 s

screenshot (2 images) ​

ToolnTotal bytes (in → out)Total reductionMedian reductionMedian SSIMMin SSIMSSIM ≥ 0.975SSIM ≥ 0.99Median time
sc-balanced20.44 MB → 0.04 MB90.6%90.2%0.99100.98192/21/28.2 s
sc-visually-lossless20.44 MB → 0.04 MB90.5%90.1%0.99510.99022/22/217.2 s
bic-maxsize-1mb20.44 MB → 0.38 MB14.7%15.9%1.00001.00002/22/2275 ms
bic-quality-0.820.44 MB → 0.38 MB14.8%15.9%1.00001.00002/22/2189 ms
bic-webp-0.820.44 MB → 0.16 MB62.6%62.4%0.98530.97231/21/289 ms
canvas-webp-0.820.44 MB → 0.16 MB62.6%62.4%0.98530.97231/21/289 ms
canvas-jpeg-0.820.44 MB → 0.33 MB24.7%26.6%0.96220.93211/21/216 ms
sc-fast20.44 MB → 0.10 MB76.9%78.1%1.00001.00002/22/2867 ms

text-graphic (2 images) ​

ToolnTotal bytes (in → out)Total reductionMedian reductionMedian SSIMMin SSIMSSIM ≥ 0.975SSIM ≥ 0.99Median time
sc-balanced20.40 MB → 0.03 MB91.8%87.5%0.99880.99772/22/21.7 s
sc-visually-lossless20.40 MB → 0.03 MB92.0%88.2%0.99900.99802/22/21.9 s
bic-maxsize-1mb20.40 MB → 0.14 MB64.4%61.3%1.00001.00002/22/2100 ms
bic-quality-0.820.40 MB → 0.14 MB64.4%61.3%1.00001.00002/22/277 ms
bic-webp-0.820.40 MB → 0.21 MB46.3%45.6%0.98520.98492/20/249 ms
canvas-webp-0.820.40 MB → 0.21 MB46.3%45.6%0.98520.98492/20/249 ms
canvas-jpeg-0.820.40 MB → 0.32 MB18.7%13.4%0.98340.97081/21/27 ms
sc-fast20.40 MB → 0.04 MB90.7%83.3%1.00001.00002/22/2410 ms

transparent-illustration (4 images) ​

ToolnTotal bytes (in → out)Total reductionMedian reductionMedian SSIMMin SSIMSSIM ≥ 0.975SSIM ≥ 0.99Median time
sc-balanced40.44 MB → 0.03 MB92.4%92.5%0.97660.97514/40/42.2 s
sc-visually-lossless40.44 MB → 0.06 MB87.0%86.8%0.99120.99074/44/43.3 s
bic-maxsize-1mb40.44 MB → 0.34 MB22.1%23.2%0.99980.99984/44/4132 ms
bic-quality-0.840.44 MB → 0.33 MB24.5%25.4%0.99970.99974/44/4103 ms
bic-webp-0.840.44 MB → 0.21 MB52.8%52.8%0.99150.99034/44/474 ms
canvas-webp-0.840.44 MB → 0.21 MB52.8%52.8%0.99150.99034/44/474 ms
sc-fast40.44 MB → 0.17 MB61.9%61.8%0.98760.98644/41/4351 ms

gradient (3 images) ​

ToolnTotal bytes (in → out)Total reductionMedian reductionMedian SSIMMin SSIMSSIM ≥ 0.975SSIM ≥ 0.99Median time
sc-balanced31.61 MB → 0.00 MB99.8%99.8%0.99650.99583/33/34.0 s
sc-visually-lossless31.61 MB → 0.00 MB99.8%99.8%0.99650.99553/33/35.4 s
bic-maxsize-1mb31.61 MB → 1.22 MB23.9%12.1%1.00000.99993/33/3323 ms
bic-quality-0.831.61 MB → 1.20 MB25.1%12.1%1.00000.99993/33/3318 ms
bic-webp-0.831.61 MB → 0.03 MB97.8%98.3%0.99620.99553/33/351 ms
canvas-webp-0.831.61 MB → 0.03 MB97.8%98.3%0.99620.99553/33/350 ms
canvas-jpeg-0.831.61 MB → 0.07 MB95.5%96.1%0.99610.99563/33/39 ms
sc-fast31.61 MB → 0.02 MB98.5%98.9%0.99520.99463/33/3734 ms

All categories ​

ToolnTotal bytes (in → out)Total reductionMedian reductionMedian SSIMMin SSIMSSIM ≥ 0.975SSIM ≥ 0.99Median time
sc-balanced2413.25 MB → 5.15 MB61.2%80.1%0.97840.975124/246/241.3 s
sc-visually-lossless2413.25 MB → 6.41 MB51.7%76.2%0.99150.990224/2424/242.2 s
bic-maxsize-1mb2413.25 MB → 7.14 MB46.1%20.5%0.99980.994421/2421/24128 ms
bic-quality-0.82413.25 MB → 10.21 MB22.9%35.6%0.99770.957419/2416/2478 ms
bic-webp-0.82413.25 MB → 6.52 MB50.8%55.5%0.98040.961118/248/2437 ms
canvas-webp-0.82413.25 MB → 6.52 MB50.8%55.5%0.98040.961118/248/2436 ms
canvas-jpeg-0.82012.82 MB → 7.84 MB38.8%39.7%0.97680.932111/208/205 ms
sc-fast2413.25 MB → 5.49 MB58.5%60.9%0.98470.975224/248/24349 ms

Lossless results by category ​

Pixel-exact = output decodes to exactly the reference pixels (RGBA) with the same WASM decoders. JPEG inputs are decoded with MozJPEG; libvips' libjpeg-turbo decode differs slightly, so libvips lossless re-encodes of JPEG inputs are not pixel-exact against that reference.

photo ​

ToolnTotal bytes (in → out)Total reductionMedian reductionPixel-exactMedian time
sc-lossless102.80 MB → 2.04 MB27.0%0.0%10/1011 ms

photo-large ​

ToolnTotal bytes (in → out)Total reductionMedian reductionPixel-exactMedian time
sc-lossless37.58 MB → 7.58 MB0.0%0.0%3/3104 ms

screenshot ​

ToolnTotal bytes (in → out)Total reductionMedian reductionPixel-exactMedian time
sc-lossless20.44 MB → 0.10 MB76.2%77.5%2/21.4 s

text-graphic ​

ToolnTotal bytes (in → out)Total reductionMedian reductionPixel-exactMedian time
sc-lossless20.40 MB → 0.04 MB90.7%83.4%2/2538 ms

transparent-illustration ​

ToolnTotal bytes (in → out)Total reductionMedian reductionPixel-exactMedian time
sc-lossless40.44 MB → 0.25 MB42.3%42.6%4/4647 ms

gradient ​

ToolnTotal bytes (in → out)Total reductionMedian reductionPixel-exactMedian time
sc-lossless31.61 MB → 0.54 MB66.3%56.6%3/32.4 s

All categories ​

ToolnTotal bytes (in → out)Total reductionMedian reductionPixel-exactMedian time
sc-lossless2413.25 MB → 10.55 MB20.4%39.7%24/24248 ms

Head-to-head per image ​

A dominates = A is no larger and has SSIM ≥ B on that image. trade-off = one is smaller, the other has higher SSIM.

ABimagesA dominatesB dominatestrade-off
sc-balancedbic-maxsize-1mb212019
sc-balancedbic-quality-0.8249015
sc-balancedbic-webp-0.82410014
sc-balancedcanvas-webp-0.82410014
sc-balancedcanvas-jpeg-0.8201406
sc-visually-losslessbic-maxsize-1mb212019
sc-visually-losslessbic-quality-0.8243021
sc-visually-losslessbic-webp-0.8248016
sc-visually-losslesscanvas-webp-0.8248016
sc-visually-losslesscanvas-jpeg-0.8205015
sc-fastbic-maxsize-1mb215016
sc-fastbic-quality-0.8249015
sc-fastbic-webp-0.8249015
sc-fastcanvas-webp-0.8249015
sc-fastcanvas-jpeg-0.8209011
Per-image rows
ImageToolBytesReductionSSIMFormatTime
photo-kodim01.jpgsc-balanced8052052.0%0.9767avif989 ms
photo-kodim01.jpgsc-visually-lossless11236633.0%0.9911avif1.7 s
photo-kodim01.jpgsc-lossless1677600.0%1.0000 (exact)jpeg14 ms
photo-kodim01.jpgbic-maxsize-1mb1618833.5%0.9953jpeg19 ms
photo-kodim01.jpgbic-quality-0.810024940.2%0.9633jpeg4 ms
photo-kodim01.jpgbic-webp-0.89531043.2%0.9791webp28 ms
photo-kodim01.jpgcanvas-webp-0.89531043.2%0.9791webp27 ms
photo-kodim01.jpgcanvas-jpeg-0.810024940.2%0.9633jpeg3 ms
photo-kodim03.jpgsc-balanced2973565.8%0.9767avif713 ms
photo-kodim03.jpgsc-visually-lossless5358938.4%0.9908avif1.1 s
photo-kodim03.jpgsc-lossless869690.0%1.0000 (exact)jpeg10 ms
photo-kodim03.jpgbic-maxsize-1mb841733.2%0.9962jpeg9 ms
photo-kodim03.jpgbic-quality-0.85090641.5%0.9763jpeg3 ms
photo-kodim03.jpgbic-webp-0.83303462.0%0.9728webp20 ms
photo-kodim03.jpgcanvas-webp-0.83303462.0%0.9728webp19 ms
photo-kodim03.jpgcanvas-jpeg-0.85090641.5%0.9763jpeg3 ms
photo-kodim05.jpgsc-balanced7828854.9%0.9765avif939 ms
photo-kodim05.jpgsc-visually-lossless11387034.4%0.9909avif1.5 s
photo-kodim05.jpgsc-lossless1736110.0%1.0000 (exact)jpeg12 ms
photo-kodim05.jpgbic-maxsize-1mb1675353.5%0.9958jpeg12 ms
photo-kodim05.jpgbic-quality-0.810951236.9%0.9732jpeg4 ms
photo-kodim05.jpgbic-webp-0.89743443.9%0.9800webp27 ms
photo-kodim05.jpgcanvas-webp-0.89743443.9%0.9800webp27 ms
photo-kodim05.jpgcanvas-jpeg-0.810951236.9%0.9732jpeg4 ms
photo-kodim07.jpgsc-balanced2962870.2%0.9756avif764 ms
photo-kodim07.jpgsc-visually-lossless5637043.3%0.9910avif1.2 s
photo-kodim07.jpgsc-lossless993400.0%1.0000 (exact)jpeg11 ms
photo-kodim07.jpgbic-maxsize-1mb963583.0%0.9968jpeg10 ms
photo-kodim07.jpgbic-quality-0.86036239.2%0.9814jpeg3 ms
photo-kodim07.jpgbic-webp-0.84076059.0%0.9801webp20 ms
photo-kodim07.jpgcanvas-webp-0.84076059.0%0.9801webp20 ms
photo-kodim07.jpgcanvas-jpeg-0.86036239.2%0.9814jpeg3 ms
photo-kodim13.jpgsc-balanced11072045.0%0.9789avif1.1 s
photo-kodim13.jpgsc-visually-lossless13922430.9%0.9904avif2.2 s
photo-kodim13.jpgsc-lossless2013920.0%1.0000 (exact)jpeg11 ms
photo-kodim13.jpgbic-maxsize-1mb1934014.0%0.9944jpeg16 ms
photo-kodim13.jpgbic-quality-0.812370338.6%0.9574jpeg4 ms
photo-kodim13.jpgbic-webp-0.812825636.3%0.9807webp29 ms
photo-kodim13.jpgcanvas-webp-0.812825636.3%0.9807webp29 ms
photo-kodim13.jpgcanvas-jpeg-0.812370338.6%0.9574jpeg4 ms
photo-kodim15.jpgsc-balanced4713454.2%0.9786avif882 ms
photo-kodim15.jpgsc-visually-lossless6935632.6%0.9904avif1.3 s
photo-kodim15.jpgsc-lossless1028880.0%1.0000 (exact)jpeg11 ms
photo-kodim15.jpgbic-maxsize-1mb992003.6%0.9950jpeg10 ms
photo-kodim15.jpgbic-quality-0.85768343.9%0.9645jpeg4 ms
photo-kodim15.jpgbic-webp-0.84308858.1%0.9664webp20 ms
photo-kodim15.jpgcanvas-webp-0.84308858.1%0.9664webp20 ms
photo-kodim15.jpgcanvas-jpeg-0.85768343.9%0.9645jpeg3 ms
photo-kodim20.jpgsc-balanced2763268.1%0.9753avif672 ms
photo-kodim20.jpgsc-visually-lossless5120140.8%0.9913avif1.8 s
photo-kodim20.jpgsc-lossless864870.0%1.0000 (exact)jpeg10 ms
photo-kodim20.jpgbic-maxsize-1mb836743.3%0.9962jpeg10 ms
photo-kodim20.jpgbic-quality-0.84962442.6%0.9727jpeg3 ms
photo-kodim20.jpgbic-webp-0.83710657.1%0.9756webp18 ms
photo-kodim20.jpgcanvas-webp-0.83710657.1%0.9756webp18 ms
photo-kodim20.jpgcanvas-jpeg-0.84962442.6%0.9727jpeg2 ms
photo-kodim23.jpgsc-balanced3011764.5%0.9782avif717 ms
photo-kodim23.jpgsc-visually-lossless5873130.8%0.9917avif1.2 s
photo-kodim23.jpgsc-lossless848870.0%1.0000 (exact)jpeg9 ms
photo-kodim23.jpgbic-maxsize-1mb824582.9%0.9962jpeg9 ms
photo-kodim23.jpgbic-quality-0.84734644.2%0.9773jpeg3 ms
photo-kodim23.jpgbic-webp-0.83057664.0%0.9713webp19 ms
photo-kodim23.jpgcanvas-webp-0.83057664.0%0.9713webp20 ms
photo-kodim23.jpgcanvas-jpeg-0.84734644.2%0.9773jpeg2 ms
photo-kodim08.pngsc-balanced10186789.8%0.9774avif1.3 s
photo-kodim08.pngsc-visually-lossless16358583.6%0.9905avif2.2 s
photo-kodim08.pngsc-lossless55237044.5%1.0000 (exact)webp397 ms
photo-kodim08.pngbic-maxsize-1mb68313731.3%0.9977png306 ms
photo-kodim08.pngbic-quality-0.865336534.3%0.9972png276 ms
photo-kodim08.pngbic-webp-0.89920490.0%0.9722webp28 ms
photo-kodim08.pngcanvas-webp-0.89920490.0%0.9722webp27 ms
photo-kodim08.pngcanvas-jpeg-0.811404188.5%0.9624jpeg5 ms
photo-kodim19.pngsc-balanced7074491.1%0.9758avif985 ms
photo-kodim19.pngsc-visually-lossless15715080.3%0.9927avif1.9 s
photo-kodim19.pngsc-lossless48606839.1%1.0000 (exact)webp399 ms
photo-kodim19.pngbic-maxsize-1mb60293824.5%0.9986png227 ms
photo-kodim19.pngbic-quality-0.858117927.2%0.9982png214 ms
photo-kodim19.pngbic-webp-0.85770692.8%0.9611webp24 ms
photo-kodim19.pngcanvas-webp-0.85770692.8%0.9611webp23 ms
photo-kodim19.pngcanvas-jpeg-0.87412790.7%0.9596jpeg5 ms
large-picsum1015.jpgsc-balanced137135140.0%0.9842jpeg4.3 s
large-picsum1015.jpgsc-visually-lossless160199729.9%0.9936jpeg3.6 s
large-picsum1015.jpgsc-lossless22858540.0%1.0000 (exact)jpeg104 ms
large-picsum1015.jpgbic-maxsize-1mb91460560.0%n/ajpeg405 ms
large-picsum1015.jpgbic-quality-0.8189894916.9%0.9963jpeg70 ms
large-picsum1015.jpgbic-webp-0.8149221834.7%0.9799webp616 ms
large-picsum1015.jpgcanvas-webp-0.8149221834.7%0.9799webp611 ms
large-picsum1015.jpgcanvas-jpeg-0.8189894916.9%0.9963jpeg70 ms
large-picsum1043.jpgsc-balanced204490137.9%0.9794jpeg3.8 s
large-picsum1043.jpgsc-visually-lossless235261528.6%0.9933jpeg4.2 s
large-picsum1043.jpgsc-lossless32938820.0%1.0000 (exact)jpeg113 ms
large-picsum1043.jpgbic-maxsize-1mb85526774.0%n/ajpeg526 ms
large-picsum1043.jpgbic-quality-0.8276131416.2%0.9957jpeg85 ms
large-picsum1043.jpgbic-webp-0.8247588824.8%0.9792webp755 ms
large-picsum1043.jpgcanvas-webp-0.8247588824.8%0.9792webp758 ms
large-picsum1043.jpgcanvas-jpeg-0.8276131416.2%0.9957jpeg83 ms
large-picsum1050.jpgsc-balanced101497849.2%0.9752webp3.0 s
large-picsum1050.jpgsc-visually-lossless134363132.7%0.9917jpeg3.2 s
large-picsum1050.jpgsc-lossless19970630.0%1.0000 (exact)jpeg100 ms
large-picsum1050.jpgbic-maxsize-1mb103485348.2%n/ajpeg363 ms
large-picsum1050.jpgbic-quality-0.8166823116.5%0.9964jpeg68 ms
large-picsum1050.jpgbic-webp-0.8127368436.2%0.9818webp594 ms
large-picsum1050.jpgcanvas-webp-0.8127368436.2%0.9818webp588 ms
large-picsum1050.jpgcanvas-jpeg-0.8166823116.5%0.9964jpeg68 ms
screenshot-dashboard.pngsc-balanced1712193.2%0.9819avif15.2 s
screenshot-dashboard.pngsc-visually-lossless1734693.1%0.9902avif33.1 s
screenshot-dashboard.pngsc-lossless8054267.9%1.0000 (exact)webp2.5 s
screenshot-dashboard.pngbic-maxsize-1mb2316237.6%1.0000png426 ms
screenshot-dashboard.pngbic-quality-0.82316087.6%1.0000png281 ms
screenshot-dashboard.pngbic-webp-0.89054863.9%0.9982webp140 ms
screenshot-dashboard.pngcanvas-webp-0.89054863.9%0.9982webp140 ms
screenshot-dashboard.pngcanvas-jpeg-0.821839812.9%0.9923jpeg26 ms
screenshot-code.pngsc-balanced2437287.2%1.0000 (exact)webp1.2 s
screenshot-code.pngsc-visually-lossless2437287.2%1.0000 (exact)webp1.3 s
screenshot-code.pngsc-lossless2437287.2%1.0000 (exact)webp362 ms
screenshot-code.pngbic-maxsize-1mb14377324.2%1.0000png125 ms
screenshot-code.pngbic-quality-0.814376324.2%1.0000png96 ms
screenshot-code.pngbic-webp-0.87400661.0%0.9723webp39 ms
screenshot-code.pngcanvas-webp-0.87400661.0%0.9723webp37 ms
screenshot-code.pngcanvas-jpeg-0.811328640.3%0.9321jpeg6 ms
text-docs.pngsc-balanced2223093.5%1.0000 (exact)webp2.1 s
text-docs.pngsc-visually-lossless2223093.5%1.0000 (exact)webp1.3 s
text-docs.pngsc-lossless2223093.5%1.0000 (exact)webp641 ms
text-docs.pngbic-maxsize-1mb11740765.6%1.0000png124 ms
text-docs.pngbic-quality-0.811740265.6%1.0000png86 ms
text-docs.pngbic-webp-0.818211046.6%0.9855webp63 ms
text-docs.pngcanvas-webp-0.818211046.6%0.9855webp62 ms
text-docs.pngcanvas-jpeg-0.827039420.7%0.9708jpeg10 ms
text-slide.pngsc-balanced1019581.5%0.9977avif1.4 s
text-slide.pngsc-visually-lossless943482.8%0.9980avif2.4 s
text-slide.pngsc-lossless1467673.3%1.0000 (exact)webp436 ms
text-slide.pngbic-maxsize-1mb2368156.9%1.0000 (exact)png77 ms
text-slide.pngbic-quality-0.82368156.9%1.0000 (exact)png69 ms
text-slide.pngbic-webp-0.83043844.6%0.9849webp35 ms
text-slide.pngcanvas-webp-0.83043844.6%0.9849webp35 ms
text-slide.pngcanvas-jpeg-0.8516636.0%0.9961jpeg5 ms
transparent-illustration-1.pngsc-balanced932892.8%0.9751avif2.2 s
transparent-illustration-1.pngsc-visually-lossless1570187.8%0.9907avif3.2 s
transparent-illustration-1.pngsc-lossless7443242.2%1.0000 (exact)webp630 ms
transparent-illustration-1.pngbic-maxsize-1mb9973522.5%0.9999png142 ms
transparent-illustration-1.pngbic-quality-0.89669224.9%0.9997png115 ms
transparent-illustration-1.pngbic-webp-0.86231451.6%0.9903webp74 ms
transparent-illustration-1.pngcanvas-webp-0.86231451.6%0.9903webp73 ms
transparent-illustration-2.pngsc-balanced1197692.2%0.9762avif2.3 s
transparent-illustration-2.pngsc-visually-lossless2180185.8%0.9913avif3.4 s
transparent-illustration-2.pngsc-lossless8737043.1%1.0000 (exact)webp664 ms
transparent-illustration-2.pngbic-maxsize-1mb11701923.8%0.9998png133 ms
transparent-illustration-2.pngbic-quality-0.811368325.9%0.9997png103 ms
transparent-illustration-2.pngbic-webp-0.87072653.9%0.9920webp77 ms
transparent-illustration-2.pngcanvas-webp-0.87072653.9%0.9920webp77 ms
transparent-illustration-3.pngsc-balanced962393.3%0.9770avif2.3 s
transparent-illustration-3.pngsc-visually-lossless1619388.7%0.9911avif3.5 s
transparent-illustration-3.pngsc-lossless8572440.3%1.0000 (exact)webp693 ms
transparent-illustration-3.pngbic-maxsize-1mb11705118.5%0.9998png131 ms
transparent-illustration-3.pngbic-quality-0.811281921.5%0.9997png102 ms
transparent-illustration-3.pngbic-webp-0.86616854.0%0.9911webp74 ms
transparent-illustration-3.pngcanvas-webp-0.86616854.0%0.9911webp75 ms
transparent-icon.pngsc-balanced214778.8%0.9824avif547 ms
transparent-icon.pngsc-visually-lossless283672.0%0.9930avif774 ms
transparent-icon.pngsc-lossless403660.1%1.0000 (exact)webp134 ms
transparent-icon.pngbic-maxsize-1mb609539.8%1.0000png24 ms
transparent-icon.pngbic-quality-0.8609539.8%1.0000png16 ms
transparent-icon.pngbic-webp-0.8654835.3%0.9970webp9 ms
transparent-icon.pngcanvas-webp-0.8654835.3%0.9970webp9 ms
gradient-linear.pngsc-balanced141399.8%0.9965avif4.0 s
gradient-linear.pngsc-visually-lossless125799.8%0.9966avif5.4 s
gradient-linear.pngsc-lossless12077084.8%1.0000 (exact)webp2.4 s
gradient-linear.pngbic-maxsize-1mb42543846.3%1.0000png323 ms
gradient-linear.pngbic-quality-0.842543846.3%1.0000png318 ms
gradient-linear.pngbic-webp-0.81238098.4%0.9964webp58 ms
gradient-linear.pngcanvas-webp-0.81238098.4%0.9964webp59 ms
gradient-linear.pngcanvas-jpeg-0.81796697.7%0.9969jpeg9 ms
gradient-radial.pngsc-balanced193699.8%0.9958avif6.3 s
gradient-radial.pngsc-visually-lossless182599.8%0.9955avif8.4 s
gradient-radial.pngsc-lossless40682848.1%1.0000 (exact)png3.2 s
gradient-radial.pngbic-maxsize-1mb7709351.6%0.9999png3.9 s
gradient-radial.pngbic-quality-0.87504164.3%0.9999png3.4 s
gradient-radial.pngbic-webp-0.81362898.3%0.9955webp51 ms
gradient-radial.pngcanvas-webp-0.81362898.3%0.9955webp50 ms
gradient-radial.pngcanvas-jpeg-0.83064096.1%0.9956jpeg9 ms
gradient-sky.pngsc-balanced49998.4%0.9965avif3.0 s
gradient-sky.pngsc-visually-lossless49798.4%0.9965avif5.0 s
gradient-sky.pngsc-lossless1373056.6%1.0000 (exact)webp756 ms
gradient-sky.pngbic-maxsize-1mb2778012.1%1.0000 (exact)png191 ms
gradient-sky.pngbic-quality-0.82778012.1%1.0000 (exact)png189 ms
gradient-sky.pngbic-webp-0.8889671.8%0.9962webp45 ms
gradient-sky.pngcanvas-webp-0.8889671.8%0.9962webp45 ms
gradient-sky.pngcanvas-jpeg-0.82322426.5%0.9961jpeg6 ms
photo-kodim01.jpgsc-fast9487043.4%0.9792webp292 ms
photo-kodim03.jpgsc-fast3761056.8%0.9768webp217 ms
photo-kodim05.jpgsc-fast9696244.1%0.9801webp348 ms
photo-kodim07.jpgsc-fast4039059.3%0.9803webp222 ms
photo-kodim13.jpgsc-fast13112234.9%0.9821webp335 ms
photo-kodim15.jpgsc-fast6102240.7%0.9787webp228 ms
photo-kodim20.jpgsc-fast3850455.5%0.9786webp168 ms
photo-kodim23.jpgsc-fast5079940.2%0.9781jpeg203 ms
photo-kodim08.pngsc-fast10816289.1%0.9762webp316 ms
photo-kodim19.pngsc-fast11041886.2%0.9837webp270 ms
large-picsum1015.jpgsc-fast124705545.4%0.9779jpeg2.5 s
large-picsum1043.jpgsc-fast213332735.2%0.9857jpeg2.8 s
large-picsum1050.jpgsc-fast101497849.2%0.9752webp2.3 s
screenshot-dashboard.pngsc-fast7740469.1%1.0000 (exact)webp1.4 s
screenshot-code.pngsc-fast2437287.2%1.0000 (exact)webp292 ms
text-docs.pngsc-fast2223093.5%1.0000 (exact)webp470 ms
text-slide.pngsc-fast1473473.2%1.0000 (exact)webp349 ms
transparent-illustration-1.pngsc-fast4922861.8%0.9864webp352 ms
transparent-illustration-2.pngsc-fast5781462.3%0.9868webp503 ms
transparent-illustration-3.pngsc-fast5497661.7%0.9885webp350 ms
transparent-icon.pngsc-fast403660.1%1.0000 (exact)webp49 ms
gradient-linear.pngsc-fast829799.0%0.9953jpeg734 ms
gradient-radial.pngsc-fast889098.9%0.9946webp829 ms
gradient-sky.pngsc-fast645679.6%0.9952webp480 ms

Optimisation log: tile-mosaic proxy search (Node) ​

v0 searched quality with full-resolution encodes. v1 searches on a 3x3 mosaic of 512 px full-resolution tiles for images above 4 MP and verifies only the finalists at full size; balanced rows additionally use AVIF speed 7 instead of 8 (see docs/architecture.md). Same corpus, same machine; v0 data: bench/results/node-v0-before-proxy.json.

ImageToolBytes v0 → v1SSIM v0 → v1Time v0 → v1Peak RSS v0 → v1
photo-kodim13.jpgsc-visually-lossless139224 → 139224 (0.0%)0.9904 → 0.99042.2 s → 2.4 s220 MB → 223 MB
photo-kodim08.pngsc-visually-lossless163585 → 163585 (0.0%)0.9905 → 0.99052.1 s → 2.3 s225 MB → 227 MB
photo-kodim19.pngsc-visually-lossless141333 → 157150 (11.2%)0.9913 → 0.99272.3 s → 2.0 s232 MB → 237 MB
large-picsum1015.jpgsc-balanced1298804 → 1371351 (5.6%)0.9757 → 0.98429.9 s → 4.5 s769 MB → 772 MB
large-picsum1015.jpgsc-balanced-nometa1089255 → 1106887 (1.6%)0.9775 → 0.979117.6 s → 8.5 s1373 MB → 929 MB
large-picsum1015.jpgsc-visually-lossless1601997 → 1601997 (0.0%)0.9936 → 0.993611.1 s → 3.8 s883 MB → 594 MB
large-picsum1043.jpgsc-balanced2044901 → 2044901 (0.0%)0.9794 → 0.979410.6 s → 4.0 s821 MB → 584 MB
large-picsum1043.jpgsc-balanced-nometa1786000 → 1823943 (2.1%)0.9753 → 0.979720.2 s → 11.7 s1412 MB → 971 MB
large-picsum1043.jpgsc-visually-lossless2352615 → 2352615 (0.0%)0.9933 → 0.993313.2 s → 4.4 s932 MB → 613 MB
large-picsum1050.jpgsc-balanced1014978 → 1014978 (0.0%)0.9752 → 0.97529.6 s → 3.1 s763 MB → 534 MB
large-picsum1050.jpgsc-balanced-nometa1045781 → 797663 (-23.7%)0.9760 → 0.975320.0 s → 10.3 s1339 MB → 936 MB
large-picsum1050.jpgsc-visually-lossless1343631 → 1343631 (0.0%)0.9917 → 0.991710.8 s → 3.4 s868 MB → 590 MB
screenshot-dashboard.pngsc-balanced45068 → 17121 (-62.0%)0.9787 → 0.98197.9 s → 16.6 s947 MB → 1041 MB
screenshot-dashboard.pngsc-balanced-nometa45068 → 17121 (-62.0%)0.9787 → 0.98197.9 s → 16.7 s947 MB → 837 MB
screenshot-dashboard.pngsc-visually-lossless17346 → 17346 (0.0%)0.9902 → 0.990256.4 s → 38.6 s1129 MB → 978 MB
text-docs.pngsc-balanced22230 → 22230 (0.0%)1.0000 → 1.00002.3 s → 2.6 s407 MB → 416 MB
text-docs.pngsc-balanced-nometa22230 → 22230 (0.0%)1.0000 → 1.00002.3 s → 2.6 s411 MB → 412 MB
text-slide.pngsc-visually-lossless9434 → 9434 (0.0%)0.9980 → 0.99803.0 s → 3.0 s419 MB → 424 MB
transparent-illustration-1.pngsc-balanced11941 → 9328 (-21.9%)0.9755 → 0.97512.4 s → 2.8 s301 MB → 301 MB
transparent-illustration-1.pngsc-balanced-nometa11941 → 9328 (-21.9%)0.9755 → 0.97512.4 s → 2.8 s300 MB → 302 MB
transparent-illustration-1.pngsc-visually-lossless14366 → 15701 (9.3%)0.9902 → 0.99073.7 s → 3.8 s314 MB → 326 MB
transparent-illustration-2.pngsc-balanced14416 → 11976 (-16.9%)0.9774 → 0.97622.4 s → 2.9 s301 MB → 306 MB
transparent-illustration-2.pngsc-balanced-nometa14416 → 11976 (-16.9%)0.9774 → 0.97622.4 s → 2.9 s303 MB → 309 MB
transparent-illustration-2.pngsc-visually-lossless19979 → 21801 (9.1%)0.9910 → 0.99133.9 s → 4.0 s322 MB → 327 MB
transparent-illustration-3.pngsc-balanced10809 → 9623 (-11.0%)0.9761 → 0.97702.5 s → 2.8 s299 MB → 312 MB
transparent-illustration-3.pngsc-balanced-nometa10809 → 9623 (-11.0%)0.9761 → 0.97702.4 s → 2.8 s298 MB → 308 MB
transparent-illustration-3.pngsc-visually-lossless14286 → 16193 (13.3%)0.9910 → 0.99113.9 s → 4.0 s322 MB → 330 MB
gradient-linear.pngsc-balanced1343 → 1413 (5.2%)0.9966 → 0.99654.3 s → 4.7 s470 MB → 491 MB
gradient-linear.pngsc-balanced-nometa1343 → 1413 (5.2%)0.9966 → 0.99654.2 s → 4.7 s476 MB → 487 MB
gradient-linear.pngsc-visually-lossless1257 → 1257 (0.0%)0.9966 → 0.99666.3 s → 6.3 s492 MB → 509 MB
gradient-radial.pngsc-balanced2011 → 1936 (-3.7%)0.9957 → 0.99584.9 s → 7.4 s459 MB → 629 MB
gradient-radial.pngsc-balanced-nometa2011 → 1936 (-3.7%)0.9957 → 0.99585.0 s → 7.5 s464 MB → 628 MB
gradient-radial.pngsc-visually-lossless1825 → 1825 (0.0%)0.9955 → 0.99559.8 s → 9.7 s628 MB → 631 MB
gradient-sky.pngsc-balanced788 → 499 (-36.7%)0.9964 → 0.99652.2 s → 4.0 s405 MB → 519 MB
gradient-sky.pngsc-balanced-nometa788 → 499 (-36.7%)0.9964 → 0.99652.3 s → 4.0 s397 MB → 523 MB
gradient-sky.pngsc-visually-lossless497 → 497 (0.0%)0.9965 → 0.99656.2 s → 6.0 s543 MB → 549 MB

Listed runs: total time 280.7 s → 223.6 s, total output 14.32 MB → 14.15 MB.