Remove Background from Image

Remove the background from a photo using an on-device AI model, right in your browser. Free, batch support, no upload, no watermark.

🌐 Español

Drop your files here (.jpg, .jpeg, .png, .webp)

🔒 Private by design: your files are processed locally in your browser and never uploaded to any server.

One model, one decision, and a deliberately soft edge

Behind the button is MODNet, an open-source image matting network, converted to run inside the browser through the transformers.js library and its ONNX runtime. It is that library’s own default model for background removal rather than an improvised substitute. Everything happens on your device: the model file is fetched over the network the first time you use the tool, but the photo itself is never sent anywhere.

Matting is a narrower job than the name “background removal” suggests. The model estimates, for every pixel, how much of that pixel belongs to the foreground subject, and the estimate is written into the alpha channel of a PNG. Because it is a continuous value rather than a yes or no, edges come back soft and anti-aliased instead of jagged, which is what makes a cutout look believable once it sits on a new background. It also means the model has no notion of what your subject is. It has learned what foreground subjects tend to look like, which is why one clear subject works well and a crowd scene is a coin toss.

The first run pays for a model download

Nothing is bundled into the page. The first time you click the button, the runtime and a quantized copy of the model weights, a little over six megabytes, are fetched from the library’s own CDN. That download is the reason the first photo feels slow and the rest do not, because the pipeline is built once and then reused for every later photo in the same visit. A slow connection makes the first run noticeably worse, and the tool does need network access for that initial fetch even though your photo never travels.

Feeding it photos and taking PNGs back

  1. Drop JPG, PNG or WebP photos into the box, or click Choose files. A whole batch is fine, and anything with another extension is refused with a message listing what is accepted.
  2. Click Remove Background from Image. On a first visit the model downloads before any pixels are analysed.
  3. Watch the progress bar, which tracks the batch as a whole rather than each photo separately.
  4. Download each result. Files are named after the original with -no-bg.png on the end, one link per photo.

There is no options panel on this page at all, because there is nothing to tune: no threshold, no edge feathering, no choice of output format.

Photos it handles well, and the ones it does not

One subject, reasonably separated from whatever is behind it, is the case this kind of model is trained for. Portraits, a product on a table, a pet, an object on a plain surface: those come back clean.

The failures are predictable rather than random. Fine flyaway hair and fur produce a soft and sometimes patchy edge. Glass, smoke and anything semi-transparent confuse a model that must commit to an alpha value. A subject the same colour and brightness as the wall behind it loses its boundary. Several overlapping people leave the model guessing which one counts as the subject. Motion blur smears the very edge it is looking for.

There is no brush or eraser here to repair a bad edge, so the practical move when a cutout comes back wrong is a different photo of the same thing, ideally one with more separation between subject and background, rather than another run of the same file.

The transparent PNG is bigger than the JPG you started with

Transparency is why the output format is fixed. PNG is what this page writes, and a JPG cannot carry an alpha channel at all, so it would have to fill the removed area with a flat colour, which defeats the exercise entirely.

PNG is also lossless, so a photographic subject that arrived as a heavily compressed JPG usually leaves as a considerably larger file. The finished panel spells this out, printing the input size, the output size and a percentage, and on this tool that percentage normally reads as larger. That is expected rather than a fault.

Where a cutout usually goes next

If the destination is a chat sticker, the sticker maker runs this same background-removal model and then fits the cutout onto the 512 by 512 canvas WhatsApp and Telegram expect, with an optional die-cut outline, which saves the sizing work. For a round avatar, circle crop always writes PNG, so the transparency of a cutout survives the crop instead of being flattened onto white. The rest of the image tools handle the ordinary edits around those.

Frequently asked questions

Can I click the part of the photo I want kept, or paint over the background?

No. There is no selection step, no click-to-keep and no brush anywhere on this page. The model looks at the whole photo and decides for itself which pixels are foreground, and the only input it receives is the image. That is what makes it fast on ordinary photos and helpless on ambiguous ones, where two overlapping people or a subject the same colour as the wall can go either way.

Why did a whole batch fail when only one photo was a problem?

The batch is a plain loop with no per-file recovery. Photos are processed in turn, and a failure on any one of them ends the run, so nothing is left to download, including the photos that had already finished. Take out the file you suspect and run the rest again. Cancelling behaves the same way, clearing the panel and keeping nothing.

Can I drop the subject onto a new background here?

No. This page produces the cutout only, as a PNG with a transparent area where the background used to be. Placing it on a colour, a gradient or another photo is a separate step in whatever tool you are assembling the final image in, which is also why the removed area is left transparent rather than filled with white.

Does the model need a GPU, and will it run on a phone?

It runs through a WebAssembly runtime and does not require a GPU. It also runs without the cross-origin isolation headers that some browser AI demos depend on, falling back to a single thread instead, which was a deliberate constraint when the tool was built because those headers break other parts of the site. On a phone, expect both the first-visit model download and each analysis to take longer than on a laptop, and expect a very large photo to be harder on memory.

Is the model downloaded again for every photo in a batch?

No. The pipeline is built once and reused for every later photo in the same visit, so the download happens on the first click and the rest of the batch goes straight to analysis. Reloading the page starts a fresh session, and whether the model files are fetched again at that point is decided by the cache the machine-learning library keeps in your browser, not by anything this page controls.

What will the finished files be called?

The original name with the old extension replaced by -no-bg.png, so portrait.jpg arrives as portrait-no-bg.png. Every photo in a batch gets its own download link with its own name, and the extension is always .png because the transparency has to live somewhere.

Related tools