Skip to content
The xtandard-image app icon

xtandard-image

A self-hosted image and video processing server in Go and libvips. imgproxy-compatible URLs, plus the URL dialects of imgix, Cloudinary, ImageKit, Cloudflare, Thumbor and more. MIT licensed.
The built-in playground: an imgproxy URL with smart crop and a duotone in the brand colours, source and result side by sideThe built-in playground: an imgproxy URL with smart crop and a duotone in the brand colours, source and result side by side
The built-in playground: build a URL in any dialect and compare the source with the result.

Start a server that may fetch only from images.unsplash.com, with the Cloudflare Images URL format enabled next to the imgproxy one:

Terminal window
docker run -d --name xtandard-image -p 8080:8080 \
-e XI_SOURCES=web -e XI_SOURCES_WEB_TYPE=http -e XI_SOURCES_WEB_ALLOW=images.unsplash.com \
-e XI_DIALECTS_CLOUDFLARE_ENABLED=true \
ghcr.io/xantiagoma/xtandard-image:0.1.1
# imgproxy URL: fit into 640 px wide, as WebP
curl -fsS -o thumb.webp \
'http://localhost:8080/insecure/rs:fit:640:0/plain/https://images.unsplash.com/photo-1506744038136-46273834b3fb@webp'
# Cloudflare Images URL: a 640x384 crop, as AVIF
curl -fsS -o crop.avif \
'http://localhost:8080/cdn-cgi/image/width=640,height=384,fit=cover,format=avif/https://images.unsplash.com/photo-1506744038136-46273834b3fb'

Without signing keys, unsigned URLs are accepted only with common widths, heights and qualities. For production, Getting started walks through signed URLs, /info and a Compose service for Dokploy or Coolify.

imgproxy URLs work unchanged

Signing, enc/ encrypted sources, presets, chained pipelines, /info and every processing option, including the ones imgproxy offers only in its Pro edition.

Many URL dialects

imgix, Cloudinary, ImageKit, Cloudflare Images, Bunny, Thumbor, wsrv/weserv, AWS Serverless Image Handler, a query form with imaginary’s endpoints, and the unpic providers.

A long list of formats

Reads JPEG, PNG, GIF, WebP, AVIF, HEIC, JPEG XL, TIFF, SVG, camera RAW, PDF, PSD and dozens more; writes JPEG, PNG, GIF, WebP, AVIF, JPEG XL, TIFF, BMP and ICO.

Video and audio

Thumbnails, sprites, GIF to video, transcoding with trim, resize, overlays and audio processing, and HLS/DASH streams (full and gpl images).

Secure by default

Refuses to start without a source allowlist; protects against SSRF and DNS rebinding, enforces decompression-bomb and pixel limits, and sanitises SVG.

Easy to operate

CDN-friendly headers, an optional result cache, Prometheus metrics, OpenTelemetry tracing, admission control, a read-only multi-arch image and a Helm chart.