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