Every image format. Zero cloud.
Convert 70+ formats, crop per file, compress in bulk, and remove backgrounds with local AI. UI in 12 languages.
Everything runs inside your container, so your files never leave your server.
Website · Docs · Installation Guide · Docker Hub · Issues
|
|
---
## Per-File Cropping (since v0.7.0)
Every upload gets its own crop overlay before conversion. Pick a ratio preset (Free, 1:1, 16:9, 4:3) or type exact pixel width and height. Selections are saved per file, so one batch can mix square thumbnails with 16:9 covers without re-uploading.
### How to use it
1. Drop your images into the upload area as usual.
2. On any file row, click the crop icon to open the editor.
3. Pick an aspect ratio preset (1:1, 4:3, 16:9, …) or set width and height manually.
4. Zoom and crop to frame the shot exactly the way you want it.
5. Click **Save** to keep the crop, **Discard** to back out, or **Remove** to clear a previously saved crop.
6. Convert as normal. The crop is applied first, then your chosen format, quality, resize, and background-removal settings.
> [!NOTE]
> **Server-rendered formats:** Some formats (e.g. PSD, EPS) are rendered server-side into a crop-friendly bitmap so you can still crop them in the browser.
Full walkthrough and demo video: **[Image Crop Editor docs](https://imgcompress.karimzouine.com/docs/web-ui#image-crop-editor)**.
---
## Quick Start
Pull the image, open `localhost:3001`, start converting. About 60 seconds total.
```bash
docker run -d \
--name imgcompress \
-p 3001:5000 \
karimz1/imgcompress:latest
```
For Docker Compose, environment variables, and deploying without the mascot, see the **[full installation guide](https://imgcompress.karimzouine.com/docs/installation)**.
---
## Why I Built ImgCompress
I was tired of the "software loop." Every time I needed something simple, I had to install another app:
- **PSD files**: Needed specialized software just to convert them to an image file.
- **HEIC files**: Needed another converter for regular photo files.
- **Image to PDF**: Needed another app just to share a screenshot for work, since a PDF is often better for emails and easy for others to print.
- **AI Backgrounds**: I realized I needed one more app for that too.
I thought to myself: "Why can't one tool just do it all?" Plus, uploading personal photos to random online converters never felt right to me.
### One Toolbox for Everything
So I built a single toolbox that can take over **70 different formats** and fix them all in one place. Whether you need to convert PSD or HEIC files to an image, turn a screenshot into a PDF for a work email, or shrink a massive 4K photo, this tool does it automatically.
The community has now pulled the image tens of thousands of times, which shows the pain is real.
### Why Docker?
I chose Docker because it keeps your computer clean. Instead of you having to install 70 different messy libraries on your system, I packed everything into one **Ready-to-go Box** that you can run anywhere called **imgcompress**. It just works.
---
## Privacy by Design
| | |
|---|---|
| **No cloud processing** | Conversions, compression, and AI inference all run locally. Images never leave your machine. |
| **No telemetry** | No analytics, no crash reporting, no feature flags phoning home. Completely silent on the network after startup. |
| **Offline after pull** | Once the image is pulled, no internet connection is ever needed again. No license checks, no expiry. |
| **Open source** | GPL-3.0. Audit the code, fork it, self-host it forever. |
---
## Security-Hardened Architecture
ImgCompress is built with a **Security-Hardened, Minimal Image** architecture, bringing de facto container security standards to your homelab or production environment.
| | |
|---|---|
| **Minimal Surface** | No shell (`bash`, `sh`), no network tools (`curl`, `wget`, etc.), no package manager. The attack surface is drastically reduced. |
| **Minimal Components** | System dependencies are aggressively pruned to maintain a minimal runtime environment. |
| **Non-root User** | Runs as a non-root user `nonroot` by default. |
| **DHI Base Images** | Using Docker Hardened Images from the official [DHI](https://www.docker.com/products/hardened-images/) project for build phases and runtime Image. |
| **SBOM and Provenance** | The Docker Image is built with a full Software Bill of Materials (SBOM) and build provenance attestation. |
---
## Multilingual Support
ImgCompress supports multiple frontend languages and welcomes community improvements to every locale. See the **[translation guide](TRANSLATIONS.md)** to add a new language, improve an existing translation, or get credited for meaningful language updates.
Supported languages:
- English
- Spanish
- Spanish (Mexico)
- Chinese (Simplified)
- Hindi
- Arabic
- French
- Portuguese (Brazil)
- Russian
- Japanese
- German
- Hungarian
---
## Featured On
ImgCompress is recognized by the self-hosted community and is part of curated lists and platforms that self-hosters already rely on:
- **[Awesome Self-Hosted](https://github.com/awesome-selfhosted/awesome-selfhosted#readme)** [](https://github.com/awesome-selfhosted/awesome-selfhosted): community-curated index of self-hosted software, listed alongside the tools self-hosters already run in production. [Jump to the imgcompress entry](https://awesome-selfhosted.net/index.html#imgcompress).
- **[Coolify](https://github.com/coollabsio/coolify)** [](https://github.com/coollabsio/coolify): open-source, self-hostable deployment platform. ImgCompress is available as an **official Coolify service**, so you can add it to your stack straight from the Coolify dashboard. [Jump to the imgcompress entry](https://coolify.io/docs/services/imgcompress?utm_source=github.com).
> Know another platform that features ImgCompress, or want to add it to one? [Get in touch](https://www.karimzouine.com/#contact). Big thanks to the open-source community for getting ImgCompress noticed in the first place.
---
## Documentation
- [Installation & Configuration](https://imgcompress.karimzouine.com/docs/installation): Docker setup, environment variables, reverse proxy examples
- [Developer Guide](https://imgcompress.karimzouine.com/docs/developers): VS Code Dev Containers, architecture overview, local env setup
- [imgcompress-chan (Bot)](https://imgcompress.karimzouine.com/docs/imgcompress-chan): Custom helper bot that repairs Dependabot pnpm lockfiles and auto-merges dependency PRs
- [E2E Testing with Playwright](https://imgcompress.karimzouine.com/docs/e2e): How offline stability is verified across all 70+ formats
- [Credits & Libraries](https://imgcompress.karimzouine.com/docs/credits): The open source projects that power ImgCompress
- [Hall of Fame](https://imgcompress.karimzouine.com/docs/hall-of-fame): Sponsors and contributors
---
## Contributing
Contributions are welcome: bug reports, format requests, or pull requests.
> [!TIP]
> **New contributor?** The project ships a **VS Code Dev Container** with all 70+ image libraries and the AI environment pre-configured. Working local setup in under a minute. See the [Developer Guide](https://imgcompress.karimzouine.com/docs/developers).
- Read the **[Contributing Guide](contributing.md)** before opening a PR
- Browse [`good-first-issue`](https://github.com/karimz1/imgcompress/labels/good-first-issue) labels for a starting point
- Every change is verified by a Playwright E2E suite that covers all supported formats
> [!NOTE]
> **Meet [imgcompress-chan](https://imgcompress.karimzouine.com/docs/imgcompress-chan)**, the repo's custom helper bot. She auto-merges Dependabot PRs once CI passes, and if a frontend dependency update leaves a broken `pnpm-lock.yaml`.
---
## License & Author
**Author**: [Karim Zouine](https://www.karimzouine.com)
**License**: [GPL-3.0](LICENSE)
**Docker Image**: [hub.docker.com/r/karimz1/imgcompress](https://hub.docker.com/r/karimz1/imgcompress)
If ImgCompress saves you time, a GitHub star helps others discover it.