Notes from building in-browser AI tools
What we measured, what broke and how we fixed it while shipping open models to WebGPU and WebAssembly. Every number comes from our own test runs.
Background removal in the browser: 4 open models tested on WebGPU and WebAssembly
BiRefNet-lite, ISNet, BEN2 and MODNet on the same photos: speed on WebGPU and CPU, download size, licence, and where each one breaks.
It ran without errors and returned garbage: silent failures shipping ONNX models to WebGPU
A black image at 384×384, a DequantizeLinear miscomputed from the first conv, an int8 NER that swapped labels: how we found them and what we check now.
Porting UVR's MDX-Net vocal remover to the browser: the model was easy, the STFT wasn't
The ONNX model has no STFT inside. A 7680-point mixed-radix FFT in JavaScript, matching torch.stft to −132 dB, and why the DSP ended up at 43% of GPU time.