How local background removal works
This is the bathroom-diagram version — enough to trust the pipeline, not a paper.
1. Input becomes pixels
You provide a file or bitmap (drop, picker, paste, or page capture). The editor decodes it to an image bitmap. Formats like HEIC need an extra decode step; failure stops early with an error instead of a blank canvas.
2. Model readiness
Inference uses an on-device segmentation model (ISNet-class ONNX) run with a Web Worker and a browser ONNX runtime. If the weights are not cached yet, you see a download splash. Caching avoids repeating that hit every time.
3. Segmentation → mask
The worker returns an alpha mask (what is subject vs background). The UI composites the subject over a checkerboard or over a background you chose (color, gradient, image).
4. Human refine
Add / Erase brushes edit the working mask on the CPU canvas. Softness changes how hard the stroke lands. Export uses the mask you see — not a forgotten automatic-only snapshot.
5. History and export
A short IndexedDB history can store recent original/result pairs. Download and Copy emit PNG with the current transparency or fill.
Performance notes you will notice
- First run: network + init cost for the model.
- Huge images: may process at reduced internal resolution with a warning; export still targets full size.
- UI thread stays usable because heavy inference is in a worker — if the worker crashes, you get a worker error, not a frozen tab forever.
Privacy implications of “local” are covered on Privacy. Day-to-day clicks: Get started.