# immich-upload-optimizer

> Self-hosted proxy for Immich that intercepts uploads and compresses images/videos using JPEG-XL, Caesium, and HandBrake to save storage space.

- **Category:** Photo Management
- **Licence:** MIT
- **Latest version:** v0.5.5
- **Open source:** oss
- **Languages:** Go
- **Platforms:** Docker Compose
- **Tags:** Proxy, Backup, Archiving, Video Transcoding, Handbrake, Photos, Immich, Docker, Image compression, Self Hosted, Videos, Jpeg Xl, Photo Optimization, Caesium, Storage Optimization

## Description

Immich Upload Optimizer is a transparent proxy that sits in front of an Immich server and optimizes uploaded media files to save storage space. It intercepts uploads at the /api/assets endpoint and processes them through configurable external CLI tools — by default JPEG-XL (cjxl) for lossless image compression, Caesium for additional image optimization, and HandBrake for video transcoding. The proxy is configured via a YAML tasks file that defines which commands run for each file extension, allowing lossless or lossy workflows. It runs as a Docker container (ghcr.io/miguelangel-nubla/immich-upload-optimizer) and integrates into existing Immich Docker Compose setups by routing traffic through port 2283. The project is a rewrite of the original multipart-upload-proxy idea, designed for seamless integration without Cloudflare or complex reverse proxy rules. No user authentication is built in; it relies on Immich's own auth. Minimum requirements are not explicitly documented beyond needing a working Immich instance.

## Links

- [Homepage](https://github.com/miguelangel-nubla/immich-upload-optimizer)
- [Docker](ghcr.io/miguelangel-nubla/immich-upload-optimizer)
- [GitHub Repository](https://github.com/miguelangel-nubla/immich-upload-optimizer)

---
Source: https://selfhost.directory/project/immich-upload-optimizer