Crunch
Batch image processing pipeline, 11+ formats
A job queue manager that batch-processes images — converts, resizes, compresses, watermarks, applies effects, then stores results back to S3.
- Docker container
- Kubernetes Helm chart
- 6 queue backends
- 4 object-store backends
- 7 notification drivers
- 1 cache engine
- REST API + OpenAPI 3.0.3
- Realtime WebSocket channels
- MCP server for AI agents
- Single Go binary — zero external deps
Crunch orchestrates complex image workflows. Queue jobs, distribute to workers, and compose pipelines in YAML without code. Convert PNG to WebP and AVIF in one job. Resize, optimize, watermark in parallel. Strip or extract metadata. Perfect for photo galleries, e-commerce catalogs, content distribution, and anything processing images at scale.
Key features
Format conversion across PNG, JPG, WebP, AVIF, GIF, TIFF, BMP, JPEG XL, HEIF, and more
Multi-pass optimization: pngquant + optipng, mozjpeg, cwebp, avifenc, gifsicle
Resize by dimensions, percentage, width-only, or height-only with aspect-ratio preservation
Fast thumbnails via vipsthumbnail
Watermark compositing with position and opacity control
Grayscale, sepia, rotate, flip, crop, auto-orient, and metadata extraction
EXIF-aware rotation and optional stripping
YAML-composed task pipelines — no code to build workflows
Redis job queue with completion webhooks
Where it goes beyond the obvious
YAML task composition lets non-developers build image workflows
Coverage across 11+ formats and specialist tools in one pipeline
Watermark + metadata extraction via ImageMagick integration
Tech highlights
- Tools: ImageMagick, libvips, pngquant, mozjpeg, cwebp, avifenc, gifsicle, libjxl, libheif, dcraw, librsvg, Ghostscript
- Input: PNG, JPG, GIF, WebP, AVIF, BMP, TIFF, HEIF, JXL, SVG, PSD, EPS, RAW
- Storage: S3/MinIO with signed URLs
- Queue: Redis with webhooks
Built on
REST API surface
- POST /push Queue an image-processing job
- GET /results Paginated results with status
- GET /results/{id} One result with output URLs
- GET /tasks 30+ tasks with availability flags
- GET /workers Live worker state + log tail
- WS /ws Real-time worker updates
Full spec at GET /openapi — Swagger UI at /swagger/
Backends you can actually pick from.
This service speaks the backends below natively. Swap with a single environment variable.
Queues
- Redis
- Kafka
- RabbitMQ
- STOMP
- SQS
- SNS
Cache
- Redis
Object storage
- S3
- MinIO
- Azure Blob
- Local
Notifications
- Slack
- Discord
- Teams
- FCM
- APNs
- WebPush
- Webhooks
Use cases
E-commerce photo pipelines converting catalog images for web and mobile
Content distribution optimizing images for multiple devices and CDNs
Photo hosting generating thumbnails and responsive image sets
Social platforms bulk-resizing and compressing user uploads
Print-on-demand pipelines converting and optimizing artwork for production
Crunch vs Cloudinary, imgix, AWS Lambda + ImageMagick
Image processing that scales on your cluster, not on your invoice
Architecture patterns featuring this service
More in media
Gofer
Media
A job queue manager converting Office documents (PPTX, ODP) to PDF and image packages using Gotenberg plus image optimizers.
Greenlight
Media
A job queue manager converting screenwriting formats (FDX, Fountain, FadeIn, PDF) to and from ScreenJSON with validation and AES-256 encryption.
Mixtape
Media
A job queue manager processing audio — converting formats, resampling, normalising, and applying effects — then storing results to S3.
Deploy Crunch. Today.
One Docker image. One compose stack. One afternoon to production. Crunch is waiting.