Guides · How it works
Our test results: speed, edge accuracy, and file sizes on six real photos
Measured data behind our guides: how long the ormbg model takes at 8, 16, and 32-bit precision, how much the masks differ, which subjects produce the most soft edges, and how large PNG, WEBP, and JPG cutouts really are.
By the developer of ImgCutout · Published · 6 min read
Tested: 6 Pexels photos × 3 model precisions × 3 timed runs each, on Apple M1 Pro, 10 cores, 32GB RAM.
Several guides on this site make claims such as "the 8-bit model is nearly identical to full precision" or "WEBP is much smaller than PNG". This page shows the measurements behind those claims, how they were made, and their limits, so you can judge them for yourself. The script that produces these numbers is part of the site's source code and is re-run whenever the model changes.
What we tested
We used the same six photos shown in the example galleries on this site, downloaded from Pexels at 1600 pixels wide: portrait with curly hair (photo by Vlada Karpovich), product photo (photo by MART PRODUCTION), pet photo (photo by Nikola Vu), home decor (photo by cottonbro studio), profile picture (photo by Ron Lach), pet sticker (photo by Feyzullah Kilincarslan). Each photo was processed with all three versions of the ormbg model that the tool offers: 8-bit quantized (the default), 16-bit, and 32-bit full precision.
Test setup: Node.js v22.12.0, ONNX Runtime (native CPU) via Transformers.js, on Apple M1 Pro, 10 cores, 32GB RAM. Model onnx-community/ormbg-ONNX@034e2d8. Each time is the median of 3 runs after one warm-up run. Measured 2026-10-02.
Two honest caveats apply to everything below. First, these runs used ONNX Runtime's native CPU engine in Node.js, not a browser. The browser version of the tool runs the same model through WebAssembly, which is slower in absolute terms, so expect longer times on your device; the comparisons between precisions are what carry over. Second, six photos are a small sample. They were chosen to cover the common hard cases (curly hair, pet fur, a glass bottle, leaves), but your own photos may behave differently.
Speed: how long the model takes
| Photo | Size (px) | 8-bit | 16-bit | 32-bit |
|---|---|---|---|---|
| Portrait with curly hair | 1600 × 2400 | 736 ms | 1142 ms | 1123 ms |
| Product photo | 1600 × 1067 | 692 ms | 1115 ms | 1105 ms |
| Pet photo | 1600 × 2400 | 713 ms | 1131 ms | 1124 ms |
| Home decor | 1600 × 2400 | 716 ms | 1135 ms | 1124 ms |
| Profile picture | 1600 × 2400 | 711 ms | 1134 ms | 1124 ms |
| Pet sticker | 1600 × 2400 | 710 ms | 1135 ms | 1123 ms |
The 8-bit model averaged 713 ms per photo against 1121 ms for full precision, about 36% faster. Time barely depends on the photo, because the model always works on a 1024 × 1024 copy of the image; the steps before and after (resizing and applying the mask at full size) are fast by comparison.
The 16-bit model was no faster than the 32-bit one in this test. That is expected on a CPU, which computes 16-bit weights by converting them to 32-bit; the benefit of 16-bit is the smaller download (about 78MB instead of 156MB) and faster processing on GPUs with WebGPU. The 8-bit model is genuinely cheaper to compute on a CPU, which is one reason it is the default.
Accuracy: how much the masks differ
We compared each mask with the full-precision (32-bit) mask, pixel by pixel. Alpha runs from 0 (transparent) to 255 (opaque). "Mean difference" is the average absolute difference across all pixels; "pixels off by more than 32" counts pixels whose transparency differs by more than about 12%, which is roughly where a difference becomes visible on a contrasting background.
| Photo | 8-bit mean difference | 8-bit pixels off by more than 32 | 16-bit mean difference | 16-bit pixels off by more than 32 |
|---|---|---|---|---|
| Portrait with curly hair | 0.53 | 0.606% | 0.01 | 0% |
| Product photo | 1.84 | 0.073% | 0.01 | 0% |
| Pet photo | 0.13 | 0.004% | 0 | 0% |
| Home decor | 0.09 | 0.004% | 0 | 0% |
| Profile picture | 0.42 | 0% | 0 | 0% |
| Pet sticker | 0.29 | 0% | 0.01 | 0% |
The 16-bit mask was practically identical to full precision on every photo. The 8-bit mask differed by less than one alpha level on average for five of six photos, and by more than 32 levels on at most 0.606% of pixels. The largest average difference was on the glass perfume bottle, where much of the object is semi-transparent and small numerical differences change how see-through the glass looks. The most pixels off by a visible amount were in the curly hair portrait, concentrated in the fine strands at the edge.
What this means in practice: for products with solid outlines, the 8-bit default is indistinguishable from full precision. For glass and very fine hair, switching to 16-bit in Settings can make a small difference at the edges. See 8-bit vs 16-bit vs 32-bit.
Soft edges: which subjects are hardest
A good cutout of hair or fur needs partially transparent pixels at the edge. We counted pixels between 5% and 95% opacity in the full-precision mask, relative to the size of the subject (pixels at least 50% opaque).
| Photo | Subject's share of the photo | Soft-edge pixels relative to subject |
|---|---|---|
| Product photo | 11.2% | 111.8% |
| Pet sticker | 25.6% | 20.5% |
| Home decor | 9.1% | 15.8% |
| Profile picture | 71% | 12.5% |
| Pet photo | 17.7% | 9.8% |
| Portrait with curly hair | 62.5% | 7.9% |
Two patterns stand out. The glass bottle has more semi-transparent pixels than solid ones: the model renders the glass body as partly see-through, while the metal cap and collar stay opaque. That is realistic on a similar background but means a new background shows through the bottle, which surprises many people. The cat and the plant come next: fur and many small leaves create long, soft outlines. Portraits score lower here because a face and body are large solid areas, even though the hair edge itself is the hardest part to get right. Why hair, fur, and glass are hard explains how to work with this.
File sizes: PNG vs WEBP vs JPG
We encoded each full-size cutout three ways, at the tool's default quality of 92 for the lossy formats: PNG with transparency, WEBP with transparency, and JPG on a white background.
| Photo | Size | PNG | WEBP | JPG |
|---|---|---|---|---|
| Portrait with curly hair | 3.8 MP | 4,760 KB | 473 KB (−90%) | 414 KB (−91%) |
| Product photo | 1.7 MP | 634 KB | 97 KB (−85%) | 43 KB (−93%) |
| Pet photo | 3.8 MP | 1,913 KB | 247 KB (−87%) | 194 KB (−90%) |
| Home decor | 3.8 MP | 1,408 KB | 186 KB (−87%) | 119 KB (−92%) |
| Profile picture | 3.8 MP | 7,924 KB | 787 KB (−90%) | 582 KB (−93%) |
| Pet sticker | 3.8 MP | 2,785 KB | 261 KB (−91%) | 212 KB (−92%) |
WEBP kept the transparency at a fraction of PNG's size in every case, between 85% and 91% smaller. JPG was smaller still but has no transparency. PNG sizes vary most, because lossless compression struggles with detailed, noisy areas such as hair and fur: the red-hair portrait, with the largest subject and the most fine detail, produced the largest PNG.
These files were encoded with the libvips library rather than in a browser, so the tool's own downloads will differ somewhat in size, but the proportions are similar. PNG vs WEBP vs JPG explains when to use each.
How to reproduce these results
The measurements come from the script scripts/benchmark.mjs in the site's source code, which downloads the same Pexels photos, runs each model version, and writes the numbers shown on this page. If you want to test the browser version on your own device instead, process a photo once to load the model, then time a second photo; the WebGPU vs WebAssembly guide describes a simple procedure. If your results differ a lot from ours, we would like to hear about it through the contact page.
Summary
On six real photos, the default 8-bit model was about 36% faster than full precision on a CPU and differed visibly on well under 1% of pixels, mostly in curly hair and glass. The 16-bit model matched full precision almost exactly. Glass came out partly transparent, fur and foliage produced the most soft edges, and WEBP cutouts were consistently a small fraction of the size of PNG while keeping transparency.
Try it on your own photo
Free, no sign-up, and processed on your device. Nothing is uploaded.
Open the background removerRelated guides
- 8-bit vs 16-bit vs 32-bit models: which quality setting to chooseComparisons
- PNG vs WEBP vs JPG for cutouts: which format keeps transparencyDesign & file formats
- Why hair, fur, and glass are hard to cut out (and how to get better results)How it works
- Glass, jewelry, and reflective products: what to expect from a cutoutOnline selling