Koutuxia
← Back home

Browser-side background removal benchmarks

Koutuxia's free background removal downloads the model into the visitor's browser and runs it there, so images are not uploaded to our server: BiRefNet_lite by default, or the full BiRefNet with a Swin-Large backbone when “Maximum quality” is ticked — both use a fixed 1024² input and both run on WASM only. The trade-off is that speed is decided entirely by that machine: whether WASM can use several threads, how fast the CPU is, and how large the image is all change the result. So this page gives a distribution rather than a single number — measured on devices in actual use and split by execution backend and device class, not a marketing figure from one fast machine.

Telemetry from real devices

Last 90 days, 476 samples, most recent 2026-10-03.

Combinations with fewer than 30 samples are still listed, greyed out — hiding them would leave readers unable to tell "no data here" from "we dropped this one".

PhaseBackendDeviceCPU coresSamplesp50p95of which inference p50
Model first downloadwasmDesktop1-31(too few samples)17.93 s17.93 s—
Model first downloadwasmDesktop12+24(too few samples)18.29 s330.48 s—
Model first downloadwasmDesktop12+2(too few samples)46.65 s82.13 s—
Model first downloadwasmDesktop4-74(too few samples)14.87 s76.48 s—
Model first downloadwasmDesktop8-11344.83 s7.71 s—
Model first downloadwasmDesktop8-111(too few samples)5.76 s5.76 s—
Model first downloadwasmMobile8-113(too few samples)5.92 s113.87 s—
Model first downloadwasm-stDesktop8-111(too few samples)14.44 s14.44 s—
Model first downloadwasm-stMobile8-111(too few samples)68.15 s68.15 s—
Model first downloadwebgpuDesktop12+1(too few samples)27.18 s27.18 s—
Model first downloadwebgpuDesktop4-71(too few samples)23.15 s23.15 s—
Model first downloadwebgpuDesktop8-111(too few samples)5.57 s5.57 s—
Model first downloadwebgpuMobile4-71(too few samples)14.59 s14.59 s—
Model first downloadwebgpuMobile8-113(too few samples)6.14 s14.69 s—
Model cache hitwasmDesktop1-310(too few samples)56 ms147 ms—
Model cache hitwasmDesktop12+23(too few samples)59 ms234 ms—
Model cache hitwasmDesktop4-77(too few samples)160 ms1.76 s—
Model cache hitwasmDesktop8-114123 ms136 ms—
Model cache hitwasmMobile8-117(too few samples)84 ms365 ms—
Model cache hitwasm-stMobile4-71(too few samples)30 ms30 ms—
Model cache hitwasm-stMobile8-111(too few samples)294 ms294 ms—
Model cache hitwebgpuDesktop12+1(too few samples)101 ms101 ms—
Model cache hitwebgpuDesktop4-72(too few samples)366 ms378 ms—
Model cache hitwebgpuMobile8-111(too few samples)198 ms198 ms—
Runtime loadwasmDesktop1-311(too few samples)2.29 s4.19 s—
Runtime loadwasmDesktop12+472.27 s5.33 s—
Runtime loadwasmDesktop12+2(too few samples)4.37 s5.35 s—
Runtime loadwasmDesktop4-711(too few samples)6.54 s10.38 s—
Runtime loadwasmDesktop8-11752.36 s6.55 s—
Runtime loadwasmDesktop8-111(too few samples)1.57 s1.57 s—
Runtime loadwasmMobile8-1110(too few samples)1.86 s40.45 s—
Runtime loadwasm-stDesktop8-111(too few samples)7.44 s7.44 s—
Runtime loadwasm-stMobile4-71(too few samples)4.44 s4.44 s—
Runtime loadwasm-stMobile8-112(too few samples)5.75 s5.85 s—
Runtime loadwebgpuDesktop12+2(too few samples)6.90 s9.03 s—
Runtime loadwebgpuDesktop4-73(too few samples)8.54 s9.56 s—
Runtime loadwebgpuDesktop8-111(too few samples)9.27 s9.27 s—
Runtime loadwebgpuMobile4-71(too few samples)11.30 s11.30 s—
Runtime loadwebgpuMobile8-114(too few samples)13.83 s31.89 s—
First cutoutwasmDesktop1-36(too few samples)5.17 s6.39 s4.55 s
First cutoutwasmDesktop12+323.35 s7.44 s2.27 s
First cutoutwasmDesktop12+1(too few samples)6.11 s6.11 s5.65 s
First cutoutwasmDesktop4-72(too few samples)12.85 s14.80 s12.17 s
First cutoutwasmDesktop8-11712.12 s10.30 s1.74 s
First cutoutwasmMobile8-115(too few samples)4.12 s5.41 s2.75 s
First cutoutwasm-stMobile8-112(too few samples)44.06 s44.86 s43.32 s
First cutoutwebgpuDesktop12+2(too few samples)4.67 s7.37 s4.47 s
First cutoutwebgpuDesktop4-73(too few samples)14.27 s17.21 s12.87 s
First cutoutwebgpuDesktop8-111(too few samples)4.76 s4.76 s3.47 s
First cutoutwebgpuMobile8-112(too few samples)12.16 s12.30 s11.41 s
Later cutoutswasmDesktop8-111(too few samples)3.96 s3.96 s1.78 s
Later cutoutswebgpuDesktop4-71(too few samples)11.58 s11.58 s9.74 s
Later cutoutswebgpuDesktop8-113(too few samples)1.63 s2.00 s1.29 s

Baseline (fixed sample set, measured)

Baseline measurement pending: this column has to come from a real run on a named machine, so until that run happens it stays empty rather than holding an estimate.

Sample set

模型固定 768²/512² 输入,耗时随解码与前处理的像素量走、与画面内容无关;合成图把分辨率这一个变量固定住,且任何人都能用仓内脚本生成同样的字节。

自制合成图(CC0)。不含人像,不含任何第三方素材。 · scripts/benchmarks/make-samples.mjs

Method and limits

How this page's data is collected

Telemetry sends timing numbers and coarse device buckets only: desktop or mobile, a CPU-core bucket, a memory bucket, an input-resolution bucket, the execution backend, and the model version. It does not send images, any feature derived from an image, filenames, the raw User-Agent, the referrer, or an IP address, and it carries no cookies — there is no field in a sample that points at a person. The privacy policy has the full description.

Privacy policy →Reading telemetry setting…

Download the raw summary

Both formats carry the same content, including the greyed-out rows. Licensed CC BY 4.0; please cite the source and the date you pulled it.

JSONCSV

Try it yourself →