This is the story of a small feature we built almost as an afterthought — and how it quietly became one of the most-used background removal models on Replicate.
The problem we were actually trying to solve
At Fotto.ai, our core product is AI photo generation — turning a handful of selfies into polished, professional-looking photos for dating profiles, LinkedIn, and headshots. That model is proprietary and only runs inside our own product.
But almost every photo pipeline, no matter how good the generation model is, eventually runs into the same unglamorous problem: backgrounds. Bad backgrounds ruin good photos. Cropping subjects out cleanly, swapping backgrounds, and blurring backgrounds are things nearly every one of our users needed, regardless of which photo tool they came for.
So we built our own background removal model, wrapped it in a clean API, and shipped it. Somewhat unexpectedly, that side project turned into the most publicly visible thing we've built.
Putting it on Replicate
We published the model publicly as fottoai/remove-bg-2 on Replicate, mostly so other developers could use it without having to talk to us first.
Some numbers, straight from the model page as of today:
- 4.7M+ runs since launch
- ~2 seconds typical prediction time
- Runs on Nvidia A100 (80GB) GPU hardware
- Costs about $0.0016 per run (~625 runs per $1) on Replicate's pay-per-use pricing
- Fully callable over a simple HTTP API, no infrastructure to manage on the caller's side
We didn't run paid ads for it or do any real launch push. It grew mostly through word of mouth in developer communities and people building their own tools who needed a background remover that "just works" without babysitting edge cases like flyaway hair, semi-transparent objects, or busy backgrounds.
Why we built our own instead of using an existing library
There are plenty of open background-removal models out there. The reason we ended up building and training our own is the same reason most teams eventually do: the long tail of real-world images. Product photos, portraits, pets, group shots, and things held in hands all break differently. Getting a general open-source model to handle all of that consistently well takes real iteration — cleaning training data, retraining, and testing against edge cases most demo images never show.
remove-bg-2 is the second iteration of that work internally, and the run count suggests the extra effort paid off. It's also why we chose to make the API public rather than keep it purely internal — if we were already investing in maintaining it for our own product, letting other developers use it costs us relatively little and gives useful signal back.
Where the model actually lives day-to-day
The Replicate deployment is the developer-facing side. Most of its real-world traffic, though, comes through our own consumer product at fotto.ai, where it powers a few dedicated tools:
These sit alongside the rest of our photo editor (object removal, upscaling, restoration) and our main product, which uses a separate, non-public generation model to turn selfies into styled photos for dating apps, LinkedIn, and professional use.
What this taught us
A few things stuck with us from watching a "secondary" model become one of our most-used pieces of infrastructure:
- Unsexy problems scale. Background removal isn't the flashy part of an AI photo product, but it's the part almost every user touches, which is exactly why the volume adds up.
- Publishing an API costs less than it seems. Once a model is solid enough for production inside your own product, exposing it publicly on a platform like Replicate is mostly packaging work, not new engineering.
- Run counts are the best kind of credibility. We could write pages about model quality, but "4.7M+ runs and counting" from real, unaffiliated developers says more than we could.
If you want to try it yourself, the model is live here: replicate.com/fottoai/remove-bg-2. And if you're curious about the rest of what we're building around photos — including the generation side that powers fotto.ai — happy to answer questions in the comments.

Top comments (0)