How I built on-device background removal in a Windows app — and why nothing leaves your machine.
Every “remove the background” tool I tried uploads your image to a server first. For a screenshot tool that's backwards — your screenshots are the most private thing on your screen. So I built mine to run 100% on your machine. Here's how — and the honest part: the AI isn't the hard bit.
The thing nobody says about “AI background removal”
Most tools that cut out a background send your image to their server, run the model there, and send the result back. Fine for a stock photo. Not fine for a screenshot — which is usually a half-finished feature, a customer's data, an API key you forgot to blur, or a DM you only meant one person to see. I didn't want any of that leaving the machine. So in ShotsGlow the cutout runs locally, on your own GPU. Nothing is uploaded. There's no server to send it to in the first place.
The honest part: the model isn't mine
Let me kill the “proprietary AI” thing right away. The model is BiRefNet — an open background-removal model anyone can download. LocalBG, MadPeel and a handful of others use the exact same one. If I told you the AI was my secret sauce, you'd be right to close the tab.
The actual work was the unglamorous part: getting that model to run natively inside a Windows app, in the capture flow, with nothing leaving the machine — and to keep working on a normal person's PC, not just on my dev box.
How it actually runs
- ONNX Runtime, model bundled with the app (~928 MB). The tradeoff is a chunky one-time download instead of a server dependency forever. I'll take the download every time.
- GPU via DirectML, CPU fallback. It runs on the GPU where there is one, and falls back to the CPU where there isn't — slower, but it still works. “Works on every Windows machine” beats “fast on mine.”
- No NPU claims. I scaffolded support for the Copilot+ neural chips and then left it switched off, because it isn't shipping yet. What ships is GPU→CPU. I'd rather under-claim than put a spec on the box that isn't real.
And because there's no server in the loop, it keeps working with the Wi-Fi off. Here it is with airplane mode on — same one-click cutout, nothing uploaded, because there's nowhere to upload it to:
Why “local” is also why it's $9 once
Here's the part I didn't see coming. Going on-device didn't just solve privacy — it's the whole reason I can sell this once instead of renting it to you forever.
Cloud AI means GPU servers. GPU servers mean a bill every month, for as long as anyone uses the feature. The only way to cover that bill is a subscription — which is why every cloud tool eventually starts renting itself to you.
On-device, your hardware does the work. No server, so no monthly bill, so I don't have to charge you monthly. The privacy decision and the pricing decision turned out to be the same decision: keep it on your machine, and “$9 once, no subscription” stops being a marketing line and just becomes the math.
If you're building the same thing
- Bundle the model; be honest about the size rather than hiding a 900 MB first-run download.
- DirectML + CPU fallback is the pragmatic Windows path. Don't chase the NPU until it's real for enough users.
- The model is a commodity. The product is everything around it — the native capture, the editor, redaction that survives a crop, the export sizes. That's where the work, and the actual moat, lives.
I built this into ShotsGlow — a native Windows screenshot tool that captures, polishes, annotates, redacts and cuts out backgrounds on-device, then exports to 30 social and App-Store sizes. $9 once, no subscription, nothing uploaded. I'm building it in public as a solo Windows dev — if you want the rest of the story, the homepage has it.