Skip to content
runonweb

Background removal

Remover

Remove image backgrounds client-side. Drop a photo and get a PNG with an alpha channel. Private by default, and offline-capable once the model is cached.

Try Remover

Runs in this tab · nothing uploaded

Pick a sample or drop an image. It runs right away
Try with

Drop an image here

or click · PNG JPG WEBP

What it does

Drop a photo, get a transparent PNG.

  • BEN2 (2025) is a general background eraser: hair, fur, products and hard edges, not just portraits.
  • ~219 MB of fp16 weights, cached after the first download.
  • Output is a PNG Blob with alpha, same size as the input.
  • Runs on WASM. WebGPU dies in BEN2’s LayerNorm shader (fp16 activation, fp32 scale and bias) on current onnxruntime-web. The fix is upstream (onnxruntime#32629, 2026-09-22) and not published yet.
  • Sample photos: Messi by Bryan Berlin (CC BY-SA 4.0), alfajores by V!NZ (CC BY-SA 3.0). Both resized.

Specifications

Package
runonweb/remove-bg
License
MIT
Download
~219 MB
Quantization
fp16 on WASM
Backend
WASM only
Input
Image

Get started with runonweb/remove-bg

pnpm add runonweb
runonweb/remove-bgts
import { RemoveBackground } from 'runonweb/remove-bg'

const remover = new RemoveBackground({
  onProgress: (info) => console.log(info.status, info.progress),
})

await remover.load()

// Blob, File, URL, HTMLImageElement, ImageData, or canvas
const png = await remover.remove(imageFile)
// png is a PNG Blob with alpha channel

document.querySelector('img').src = URL.createObjectURL(png)

remover.dispose()

Same shape everywhere: construct, load(), run, dispose(). Pass onProgressto show download progress on first use.

Questions about Remover

Does Remover run on device?

Yes. Weights download once and stay in the browser. Nothing is sent to a server.

What does Remover cost?

Nothing. runonweb is free and MIT-licensed, with no device limits, tokens or sign-in.

Which browsers support Remover?

Any modern browser with WebAssembly. BEN2’s LayerNorm shader fails on the current ONNX Runtime WebGPU build, so runonweb pins this model to WASM.

Can I use a different model with runonweb/remove-bg?

Yes. See each module’s docs for the options it accepts (model, size, language…). Check the license and test both backends before shipping.