Imagor 1.9.1 Benchmark Summary

cshum1 pts0 comments

Benchmarks | imagor documentation

Skip to main content

On this page

imagor is one of the fastest image processing servers available today.

That result comes from the combination of libvips, Go binding vipsgen, and imagor's streamed processing path. imagor keeps the request path close to libvips, avoids unnecessary buffering and copies for common streamed inputs, and exposes a libvips-friendly source path that works well for resize and thumbnail workloads.

Why imagor is fast​

imagor uses libvips for image processing and vipsgen for low-level libvips integration from Go. vipsgen provides generated, type-safe libvips bindings with streaming support, which helps keep the integration robust while staying close to libvips. For streamed sources, imagor keeps the data path efficient before the image even reaches the processing stage.

In practice, the main speed advantages come from a few places:

imagor prepares streamed inputs in a way that libvips can consume efficiently

blob reuse reduces avoidable reader churn after content sniffing and source preparation

fanout and shared-reader handling reduce duplicated work around streamed sources

the seekable libvips source path lets libvips load and process common inputs more efficiently

libvips itself is highly optimized for resize, thumbnail, and transcode workloads

Benchmark summary​

The benchmark summary on this page is based on the committed AWS EC2 c7i.large rerun documented in the benchmark results. On this benchmark set, imagor 1.9.1 is consistently faster than thumbor overall and competitive with imgproxy.

Quick comparison:

JPEG<br>PNG<br>WebP<br>AVIF

Benchmark shape:

AWS EC2 c7i.large

2 VUs, 5m, 10s warmup

resize to 512x512

compared runtimes:

imagor: ghcr.io/cshum/imagor:1.9.1

imgproxy: benchmark harness used darthsim/imgproxy:latest, corresponding to imgproxy v4.0.3

thumbor: local benchmark-thumbor:latest, resolved from thumbor/Dockerfile to thumbor 7.7.7

Representative throughput from the committed summaries:

FormatimagorimgproxythumborJPEG74.35 req/s82.01 req/s59.45 req/sPNG18.56 req/s17.35 req/s10.23 req/sWebP21.23 req/s24.27 req/s15.80 req/sAVIF17.77 req/s17.15 req/s14.85 req/s<br>The exact ranking still depends on image format, output settings, source shape, and deployment environment. The measured result from the current benchmark set is that imagor is one of the fastest image processing servers, clearly ahead of thumbor overall and competitive with imgproxy across common formats.

Notes​

imagor and imgproxy are both libvips-based, so the gap is often determined by request-path overhead, source handling, and encoder settings rather than by the core image library alone

thumbor remains a strong compatibility reference, but its Pillow-based pipeline is generally slower on this workload

for AVIF, encoder settings matter a lot; benchmark conclusions should always be read together with the exact runtime configuration

Why imagor is fastBenchmark summaryNotes

imagor libvips benchmark thumbor image from

Related Articles