I built a background remover that never sees your photo (and it does GIFs and videos too)!
Description and use
Fizzdoc is a browser‑only background remover that handles photos, GIFs, videos, and stickers without uploading images, delivering high‑quality full‑resolution outputs while preserving privacy.
Problem
Family members needed transparent PNGs or quick cutouts but free online background removers required uploading photos to unknown servers, limited resolution, or paid credits.
Outcome
Fizzdoc delivers a privacy‑first background remover that handles photos, GIFs, videos, and stickers entirely in the browser, achieving high‑quality full‑resolution outputs without uploading data.
Workflow
- 1. User selects image, GIF, or video on Fizzdoc.
- 2. The page loads a 512×512 BiRefNet‑lite ONNX model (≈100 MB) or a 4.6 MB U²‑Net for phones.
- 3. ONNX Runtime Web runs the model in a Web Worker, using WebGPU if available, otherwise WebAssembly CPU, and falls back to U²‑Net on memory failure.
- 4. The model outputs a soft mask; guided filter and blur‑fusion refine edges to full resolution.
- 5. User can touch‑up with erase/restore, tap‑remove/keep, shadow, outline, crop, or compare original.
- 6. For GIFs, gifuct‑js decodes frames, each frame is processed, and gifenc re‑encodes preserving delays and loop.
- 7. For videos, mediabunny reads frames, processes each with the model, and WebCodecs writes a new video with original audio.
Evidence
The photo never leaves your device. Not "we delete it after an hour". It just never goes anywhere.
I went with BiRefNet (MIT licence), the lite variant, using the 512 × 512 ONNX export by studioludens.
The model runs with ONNX Runtime Web inside a Web Worker, so the page never freezes.
gifuct-js (MIT) decodes the frames, and Fizzdoc composes each one into a full picture the way a browser would show it.
mediabunny (MPL-2.0) reads the file and the browser's own WebCodecs encoder writes the new one.
- Record date: 2026-10-18T15:41:24.636Z