Background Remover
Full-size transparent PNG in this tab. The first run downloads a 98 MB model from Hugging Face. The photo stays here.
Drop a JPEG, PNG, WebP or HEIC
One photo. It stays in this tab.
Edge softness 1
The photo stays in this tab
Most background removers are a form in front of a server. You drop a product shot. They keep a copy. They run a model you never see. Then they meter the PNG. This page keeps the pixels here. The only extra download is the model itself, from Hugging Face, the first time you cut.
Mixpanel and Google Analytics load with the rest of Softery.io. They see that someone opened the tool. Those events carry a size bucket and a device name. The file name and the bytes stay in the tab.
Full size, not 0.25 megapixels
remove.bg's own help page, read on 2026-09-16, says the free website plan supports previews of up to 0.25 megapixels. A square at that cap is 500 by 500. That is the complaint that keeps showing up: people want a listing PNG, they get a stamp. This page writes a PNG at the size of the photo you dropped, then stops at the canvas limit the browser already has. Safari will not allocate more than 16,777,216 pixels. A weak device is capped at 8 megapixels so the tab does not die.
Download is a PNG named from the stem you already had, with -no-bg.png on the end. The preview sits on a checkerboard so you can see the holes. Change the edge slider and hit Cut again.
The first run downloads a model
The weights are studioludens/birefnet-lite-512, MIT, in fp16. Hugging Face lists that file at 98,484,532 bytes. I am not baking 98 MB into the Docker image. The first click pulls it into this browser. A progress line says so, because a silent 98 MB fetch looks like a hung page. A 1024 export of this model runs out of memory in the browser. This export runs at 512, then the PNG is written at the photo's size.
The library is @huggingface/transformers 4.3.0, Apache-2.0, with onnxruntime-web. I did not ship @imgly/background-removal. That package is AGPL-3.0. Hosting it would force source disclosure. I also skipped BRIA RMBG. Its Hugging Face licence is not a commercial grant.
Hair is the bit people complain about
A hard mask looks fine on a mug. It looks cheap on hair. The cut upsamples the 512 mask back to the photo, then a small box blur on the alpha so a strand is not a staircase. Edge softness is a slider from 0 to 4. 1 is the default. Turn it up if the fringe is crunchy.
This is still a model. A busy shelf behind the subject can leak. A subject that is the same colour as the wall can lose an edge. If the mask comes out inverted, the page checks the border against the centre and flips it. That catches the usual case where the background scored high and the subject scored low.
Common questions
Does this page upload my photo?
No. The file stays in this tab. The cut runs here, after a model file loads from Hugging Face the first time. Mixpanel and Google Analytics load with Softery.io. They see that someone opened the tool. The photo stays in the tab.
Why is the first run slow?
The first cut downloads BiRefNet-lite in fp16, 98 MB, from Hugging Face. After that, the browser can keep the file in its cache. Later photos reuse it. A phone with under 4 GB of RAM gets a slower wasm path and an 8 megapixel cap.
Is the PNG the same size as the photo I dropped?
Yes, up to the canvas cap. Safari tops out at 16,777,216 pixels. A weak device is capped at 8 megapixels so the tab does not die. remove.bg's free website plan, read on 2026-09-16, is 0.25 megapixels. A square at that cap is 500 by 500. This page writes the PNG at the photo's size.
What files does it take?
JPEG, PNG, WebP, and iPhone HEIC, up to 40 MB. GIF and PDF stay out. One photo at a time. Drop another and the last one is replaced.
Nearby tools
iPhone shots that will not open elsewhere go through HEIC to JPG. A stack of photos that needs to be one file is Images to PDF. Merge PDF stays in the tab the same way. I wrote up why the credit meters exist in Five Hundred Pixels Was the Free Cutout.