Add a miniature page preview in the settings panel that shows how the image will look in the PDF. The preview updates in real-time as the user changes page size, orientation, or margin. Uses the same scaling logic as the backend to accurately represent image placement. Preview tracks the currently selected image when multiple files are uploaded.
Stirling Image
The Open-Source Image Processing Platform
Self-hosted image processing with 37+ tools in a single Docker container. Resize, compress, convert, watermark, remove backgrounds, run OCR, and more. Nothing leaves your server.
Inspired by Stirling-PDF, built for images.
Quick start
docker run -d -p 1349:1349 -v ./data:/data ghcr.io/siddharthksah/stirling-image:latest
Open http://localhost:1349. Default login is admin / admin.
What it does
-
37+ image tools in one place — resize, crop, rotate, compress, convert, watermark, color adjustments, and the rest.
-
AI tools that run locally — background removal (rembg), upscaling (Real-ESRGAN), OCR (PaddleOCR), face blurring (MediaPipe), object erasing (LaMa). No external API calls.
-
Your hardware, your data — no telemetry, no tracking, no cloud. Files stay on your machine.
-
Batch processing — drop up to 200 images, apply any tool, get a ZIP back. Configurable concurrency.
-
Pipelines — chain tools into reusable workflows (resize, then compress, then convert to WebP, then strip metadata). Save them and rerun later.
-
REST API — every tool is exposed at
/api/v1/tools/:toolId. Swagger docs at/api/docs. -
Persistent file storage — save processed images server-side with version tracking. Pick up where you left off.
-
Teams and admin settings — manage users, toggle tool visibility, configure cleanup, upload a custom logo.
-
Single container — runs on Intel, AMD, and Apple Silicon (
linux/amd64+linux/arm64).
Tools
| Category | Tools |
|---|---|
| Essentials | Resize, Crop, Rotate & Flip, Convert, Compress |
| Optimization | Strip Metadata, Bulk Rename, Image to PDF, Favicon Generator |
| Adjustments | Brightness/Contrast, Saturation, Color Channels, Color Effects, Replace Color |
| AI Tools | Background Removal, Upscaling, Object Eraser, OCR, Face Blur, Smart Crop |
| Watermark | Text Watermark, Image Watermark, Text Overlay, Image Composition |
| Utilities | Image Info, Compare, Find Duplicates, Color Palette, QR Generator, Barcode Reader |
| Layout | Collage/Grid, Image Splitting, Border & Frame |
| Format | SVG to Raster, Image to SVG, GIF Tools |
| Automation | Pipeline Builder, Batch Processing |
Supported formats
In: JPG, PNG, WebP, AVIF, TIFF, BMP, GIF (animated), SVG, HEIC/HEIF, JPEG XL, ICO, RAW (CR2, NEF, ARW, DNG)
Out: JPG, PNG, WebP, AVIF, TIFF, GIF, JPEG XL, SVG, ICO, PDF
Configuration
| Variable | Default | Description |
|---|---|---|
PORT |
1349 |
Server port |
AUTH_ENABLED |
true |
Require login (admin / admin by default) |
MAX_UPLOAD_SIZE_MB |
100 |
Max file upload size |
MAX_BATCH_SIZE |
200 |
Max files per batch |
CONCURRENT_JOBS |
3 |
Parallel processing limit |
FILE_MAX_AGE_HOURS |
24 |
Auto-delete temp files after this many hours |
FILES_STORAGE_PATH |
./data/files |
Where persistent user files are stored |
STORAGE_MODE |
local |
Storage backend (local or s3) |
See .env.example for the full list.
Docker Compose example
services:
stirling-image:
image: ghcr.io/siddharthksah/stirling-image:latest
container_name: stirling-image
ports:
- "1349:1349"
volumes:
- stirling-data:/data
restart: unless-stopped
volumes:
stirling-data:
Development
git clone https://github.com/siddharthksah/Stirling-Image.git
cd Stirling-Image
pnpm install
pnpm dev
# UI: http://localhost:1349
Requires Node.js 22+ and pnpm 9+.
Tech stack
React 19 + Vite frontend, Fastify + Sharp backend, SQLite via Drizzle ORM, Python sidecar for AI/ML models. Monorepo with pnpm workspaces. Multi-arch Docker builds.
Support this project
If you find this useful, consider supporting development:
Contributing
Contributions welcome. Open an issue first so we can talk about what you have in mind.