Self-hosted Open source · AGPL-3.0 AI background removal built in

Your images, your server, your bill.

Fottly is a self-hosted image transformation service with AI background removal built in. Resize, convert, crop and watermark through plain URL parameters — running on your own infrastructure, storing into your own S3 bucket, with no per-credit metering in the middle.

Prefer to run it yourself? It's free and open-source — see the docs on GitHub, or try the interactive demo first.

https://media.yoursite.com/t/w_800,c_fit,bg_remove,wm_logo.png,f_webp/product.jpg
your server transformations file in your bucket

The problem

Closed image CDNs bill you for traffic you don't control.

Hosted services meter credits against bandwidth, storage and transformations. A campaign that goes well, a bot that crawls your catalogue, or simply growing traffic all move the invoice — and the pipeline your product depends on lives in someone else's account.

Hosted image CDN

  • · Usage-based credits that move with your traffic
  • · Your originals live in a third-party account
  • · Pricing and limits can change under you
  • · Migrating away means rewriting every image URL
  • · Background removal is usually a paid add-on

Fottly, self-hosted

  • · Runs on hardware you already pay for
  • · Originals and cache stay in your own S3 bucket
  • · AGPL-3.0 — the source can't be taken away from you
  • · You own the URL scheme and the domain serving it
  • · AI background removal included, not an add-on

Features

Everything happens through the URL.

No SDK to install and no build step. Point an <img> tag at your server and the transformation is described right there in the path.

Resize & crop

Set width and height with w_ and h_. Choose c_fill to crop to an exact box, or c_fit to keep the whole image inside it.

Modern formats

Convert on the fly with f_webp, f_avif, f_jpeg or f_png, and tune compression with q_80.

AI background removal

Add bg_remove to cut the main subject out onto a transparent background, powered by Rembg running as an internal service.

Configurable watermarks

Overlay any image from your bucket with wm_, and control corner, size and opacity with wg_, ws_ and wo_.

Automatic caching

Every result is cached in your bucket, so the same request is never processed twice. Deleting or renaming a file clears its derived cache.

S3-compatible storage

Works with AWS S3, Cloudflare R2 or a local MinIO. Point it at a bucket with environment variables — no proprietary storage layer.

File management

Upload, rename and delete through a small authenticated API. Cache invalidation is handled for you on every change.

Safe passthrough

Files that aren't transformable images — PDFs, audio, animated GIFs — are served untouched instead of erroring out.

URL API

Composable parameters, comma separated.

Stack transformations in a single path segment. Delivery URLs are public, so they drop straight into an <img src> with no headers or signing.

Transformation examples
# Resize to 400x300 and convert to WebP
/t/w_400,h_300,f_webp/photo.jpg

# Fit inside a 300x300 box without cropping
/t/w_300,h_300,c_fit,f_webp/photo.jpg

# Cut out the subject, keep transparency with PNG
/t/bg_remove,f_png/product.jpg

# Watermark, centered, 35% wide at 90% opacity
/t/w_600,wm_logo.png,wg_center,ws_35,wo_90/photo.jpg

# Everything at once
/t/w_800,c_fit,bg_remove,wm_logo.png,f_webp,q_75/product.jpg
w_ width in pixels
h_ height in pixels
f_ webp · avif · jpeg · png
q_ quality, 0–100
c_ fill (crop) · fit (contain)
bg_remove AI cutout
wm_ watermark file
wg_ watermark corner
ws_ watermark size %
wo_ watermark opacity %

Self-hosted & AGPL-3.0

Infrastructure you control, licensed so it stays that way.

What self-hosting gets you

Fottly runs as a small set of containers next to your own services. Source images and every cached result are written to your S3-compatible bucket — AWS S3, Cloudflare R2, or MinIO on your own box.

Nothing is metered by a third party and nothing leaves your network unless you put it there. Background removal runs locally too: the AI service is internal to the compose stack and isn't exposed to the host.

Management endpoints sit behind an API key, with per-IP rate limiting and an upload size cap you configure.

What AGPL-3.0 means for you

Fottly is released under the GNU Affero General Public License v3.0. You can run it, study it, modify it and deploy it — including inside a company, for commercial work — at no cost.

The one obligation: if you modify Fottly and offer that modified version to others over a network, you must make your modified source available to those users under the same license.

Running it unmodified for your own product triggers no publishing obligation. It's the clause that keeps the project from being closed up and resold as a black box.

Fottly Cloud

Don't want to run the server yourself?

Same API, same URL syntax, zero infrastructure to maintain. We host Fottly for you — point your app at your own subdomain and go.

Founding customer pricing — 40% off, locked in forever, for our first 20 customers on any plan.

Starter

€29 €17,40/month

Up to 10,000 images/month.

  • Up to 10,000 images/month
  • AI background removal included
  • Your own API key and subdomain
  • Email support
Start free trial

Card required to start the trial — you're not charged for 7 days.

Business

€200 €120/month

Up to 100,000 images/month.

  • Up to 100,000 images/month
  • AI background removal included
  • Your own API key and subdomain, sized for volume
  • Priority support
Start free trial

Card required to start the trial — you're not charged for 7 days.

Prefer to run it yourself? It's free and open-source — see the docs on GitHub.

What happens after the trial?

Your card is charged automatically once the 7 days end, at the plan and rate shown at signup — locked in forever for founding customers. Cancel anytime before that from your billing portal and you won't be charged at all.

Can I move to self-hosting later?

Yes. Cloud runs the same open-source engine, so the same URL syntax works against your own server whenever you're ready — no rewrite, no lock-in.

Where does my data live?

On Fottly Cloud's storage, on EU infrastructure (Hetzner, Germany), reachable only over HTTPS via your own API key and subdomain.

Get started

Three steps to your first transformed image.

No bucket and no account to set up first — clone it, bring up the stack, and post an image straight to the API. Under 5 minutes end to end.

1
Clone and start the stack. One command brings up the transformation service on :3000 together with the AI background-removal worker, running privately inside the compose network. No S3 bucket required yet.
Terminal
git clone https://github.com/Noah-1919/Fottly.git
cd Fottly
docker compose up --build
2
Send your first image. Direct upload needs no storage config at all — post a file, get the transformed result straight back in the response.
Terminal
curl -X POST \
  -H "Authorization: Bearer dev-secret-key" \
  -F "file=@product.jpg" \
  "http://localhost:3000/transform/bg_remove,f_png" \
  -o cutout.png
3
Go to production when you're ready. Point the S3_* environment variables at your own bucket (AWS S3, Cloudflare R2, or MinIO) to switch on cached, public <img src="..."> delivery URLs behind your own domain.