Credits & Licenses
TrimImage runs in your browser. The one exception is background removal, which offers an optional server mode — see Privacy below. The tools are built with open-source software, and this page credits every third-party component, its authors and its license.
What each tool uses
✂️ Trim image
No third-party code. Plain HTML canvas pixel analysis written for this app.
⛶ Crop
No third-party code. Canvas selection, rotation and flipping written for this app.
✨ Enhance
No third-party code. Lookup-table tone curves, grey-world auto levels and unsharp masking written for this app.
🔍 Upscale
Uses the AI super-resolution stack credited below — the model runs locally on your device.
🧽 Erase color
No third-party code. Color-distance matching, flood fill and brush compositing written for this app.
🔄 Convert
No third-party code. Canvas re-encoding between PNG, JPG and WEBP.
🗜️ Compress
No third-party code. Canvas re-encoding with a quality search to hit a target file size.
🪄 Remove background
Uses the AI segmentation stack credited below — the model runs locally on your device.
Open-source components
Used by the two AI tools — Remove background and Upscale. Every other tool is dependency-free.
| Component | Author | Purpose | License |
|---|---|---|---|
| @imgly/background-removal v1.7.0 | IMG.LY GmbH | Runs the segmentation model in the browser | AGPL-3.0 |
| IS-Net (DIS) segmentation model | Xuebin Qin, Hang Dai, Xiaobin Hu, Deng-Ping Fan, Ling Shao, Luc Van Gool | Neural network that separates subject from background | MIT (upstream code Apache-2.0) |
| ONNX Runtime Web v1.21.0 | Microsoft | Executes the model on WebGPU / WebAssembly | MIT |
| UpscalerJS v1.0.0 · Upscale | Kevin Scott | Runs the super-resolution model patch by patch | MIT |
| ESRGAN “medium” model @upscalerjs/esrgan-medium v1.0.0 | Kevin Scott · UpscalerJS | RDN neural network that enlarges images 2×/3×/4× | MIT |
| TensorFlow.js v4.11 · Upscale | Google & contributors | Executes the upscaling model on WebGL | Apache-2.0 |
| ndarray | Mikola Lysenko | Tensor views over pixel buffers | MIT |
| lodash-es | OpenJS Foundation & contributors | Utility helpers | MIT |
| zod | Colin McDonnell | Configuration validation | MIT |
License texts: AGPL-3.0 · MIT · Apache-2.0
Model & asset delivery
The background-removal library is loaded from jsDelivr,
and the neural-network weights plus the WebAssembly runtime are downloaded from
IMG.LY's asset CDN (staticimgly.com) the first time you use that tool.
The Upscale tool likewise fetches TensorFlow.js and a ~3 MB ESRGAN model from jsDelivr on first use.
They are then cached by your browser. Your photo is never part of that traffic —
only the model travels, and it travels to you.
Research citation
The segmentation model comes from this paper. If you use it in academic work, please cite:
@InProceedings{qin2022,
author={Xuebin Qin and Hang Dai and Xiaobin Hu and Deng-Ping Fan and Ling Shao and Luc Van Gool},
title={Highly Accurate Dichotomous Image Segmentation},
booktitle={ECCV},
year={2022}
}
Source code
The Remove background tool builds on @imgly/background-removal, which is licensed
under the AGPL-3.0. That license asks anyone running the software over a network to
offer its users the complete corresponding source. TrimImage's source is available here:
IMG.LY also offers commercial licensing for projects that cannot publish their source — [email protected]. This page is attribution, not legal advice.
Privacy
Trim, Crop, Enhance, Upscale, Erase color, Convert and Compress never upload anything. They process pixels locally with the HTML canvas API, and the Upscale model runs on your own device. Convert and Compress re-encode through the canvas, which also strips EXIF metadata — including GPS coordinates — from whatever you download.
Remove background gives you the choice, in the tool itself:
- On our server (the default) — your photo is uploaded over HTTPS, the cutout is
computed, and the image is discarded as soon as the response is sent. It is never written
to disk, never logged, and the response carries
Cache-Control: no-storeso nothing in between retains a copy. This exists so people on mobile data don't have to download a 44–176 MB model. - In my browser — nothing is uploaded at all. The model is downloaded once (with the size shown up front, so you can decline) and everything runs on your device.
No accounts, no analytics, no tracking cookies, in either mode.