Como funciona

Da sua foto a um PNG transparente, sem sair do seu dispositivo

O Backgrounds Remover roda um modelo de segmentação dentro da aba do navegador. Veja cada etapa, o que é baixado e quanto tempo leva.

Três etapas, todas dentro do navegador

1. O navegador abre a imagem

O arquivo é lido pela File API e decodificado pelo próprio decodificador de imagens do navegador, dentro de um Web Worker. A imagem nunca é enviada.

2. O modelo de IA encontra o objeto

Os pixels vão para um motor WebAssembly que roda o modelo IS-Net, que dá a cada pixel uma nota de primeiro plano ou fundo.

3. Você recebe um PNG transparente

Essa nota vira o canal alfa dos pixels originais. O PNG transparente no tamanho da sua imagem é codificado no worker; para branco, uma cor ou um tamanho quadrado, o próprio script da página, na sua aba, monta e codifica o arquivo antes de você salvar.

O modelo: IS-Net

O recorte vem do IS-Net, um modelo publicado pelos autores do projeto de pesquisa DIS (Dichotomous Image Segmentation) na ECCV 2022. Ele analisa uma versão de 1024 x 1024 da sua imagem e prevê, para cada pixel, a probabilidade de ele pertencer ao objeto principal. Essa previsão é redimensionada de volta para o tamanho da imagem e usada como transparência, então bordas suaves, como cabelo, mantêm transparência parcial em vez de um contorno duro.

O motor: ONNX Runtime compilado para WebAssembly

O modelo roda no ONNX Runtime, o motor de inferência de código aberto da Microsoft, que nós compilamos a partir do código-fonte para WebAssembly junto com o nosso próprio pré-processamento e pós-processamento em C++. Não há nenhum runtime pronto de terceiros. Existem quatro versões, e a página escolhe uma quando você começa:

  • WebGPU quando o navegador expõe um adaptador gráfico. Esta versão também é WebAssembly, e a matemática pesada do modelo roda na GPU.
  • CPU com várias threads quando o WebGPU não está disponível. A página envia os cabeçalhos de isolamento entre origens que as threads do WebAssembly exigem e usa uma thread por núcleo lógico (thread de hardware).
  • Versões com uma única thread das duas anteriores, usadas automaticamente se o navegador não consegue rodar threads. A versão para CPU com uma única thread é mais lenta (29,9 s no benchmark abaixo, contra 13,8 a 16,0 s com quatro threads; a versão WebGPU com uma única thread não foi cronometrada); nos nossos testes, o recorte da versão para CPU com uma única thread fica a no máximo 3 níveis de 255 do resultado esperado, o mesmo limite que a versão para CPU com várias threads cumpre.

Se a placa de vídeo não conseguir iniciar o modelo, a página muda sozinha para a versão de CPU.

Por que sua imagem nunca é enviada

A decodificação, o modelo e o PNG transparente no tamanho da sua imagem rodam em um Web Worker na sua aba; colocar o objeto sobre branco, uma cor ou um tamanho quadrado é feito pelo próprio script da página, na mesma aba. O servidor não tem nenhum endpoint que aceite imagens. Veja o que o site recebe, o que fica no seu navegador e como conferir você mesmo.

Diagrama de para onde vai sua imagem: ela é aberta na aba do seu navegador, decodificada em um Web Worker e recortada pelo modelo IS-Net, que roda em WebAssembly e usa a GPU por meio do WebGPU quando o navegador oferece um adaptador gráfico; sua aba mostra o recorte e você o salva em PNG ou JPG. A imagem nunca é enviada. Do servidor do site vêm a página, o motor WebAssembly e o modelo de 176 MB, que chega na primeira vez e depois é guardado em cache enquanto o navegador o mantiver (a página de segurança lista cada requisição); a única coisa que pode voltar é um relatório de erro sem dados da imagem, se algo falhar.
Sua imagem fica na aba do navegador: entram a página, o motor e o modelo, e só um relatório de erro pode sair. A página de segurança lista cada requisição.

A primeira execução baixa o modelo

O arquivo do modelo tem 176 MB. Ele é servido em partes menores que 25 MB, e cada parte é conferida com uma impressão digital SHA-256 antes do uso, então um download corrompido é rejeitado em vez de gerar um resultado quebrado. As partes verificadas ficam no Cache Storage do navegador, e as próximas imagens, e as próximas visitas enquanto o navegador as mantiver, não precisam baixá-las de novo.

Quanto tempo leva

Estes números vêm do benchmark do próprio motor em um servidor na nuvem com 4 CPUs virtuais (quatro threads) e 15 GB de memória, no Chrome headless, com as versões para CPU. São uma referência, não uma promessa: o seu tempo depende do processador, e os tempos com WebGPU em placas de vídeo reais ainda não foram medidos. A linha de memória foi medida no mesmo tipo de servidor, no Chromium para desktop, com uma aba nova para cada foto.

Medições em um servidor na nuvem com 4 CPUs virtuais (versões para CPU)
O queMedido
Download do modelo de IA (primeiro uso)176 MB
Download do motor WebAssembly (versão para CPU)11,3 MB
Execução completa no Chrome, 4 threads, imagem 512 x 51213,8 s
Execução completa no Chrome, 4 threads, imagem 451 x 30016,0 s
Execução completa no Chrome, versão para CPU com uma única thread, imagem 640 x 42729,9 s
Pico de memória da aba do navegador, foto comum (Chromium para desktop, 4 threads)cerca de 1,2 GB
Pico de memória da aba do navegador, foto de 16 megapixels (Chromium para desktop, 4 threads)cerca de 1,6 GB

Limites que vale conhecer

  • Imagens com mais de 16 megapixels são reduzidas antes, então a imagem baixada tem no máximo 16 megapixels. As opções quadradas de Tamanho recortam em volta do objeto; 1080 x 1080 e 2048 x 2048 ampliam um recorte menor, o que pode deixá-lo sem nitidez.
  • Na nossa medição no Chromium para desktop, em um computador com 4 CPUs virtuais, a aba do navegador usou cerca de 1,2 GB de memória com uma foto comum e até cerca de 1,6 GB com uma foto de 16 megapixels. Processar muitas fotos grandes na mesma visita pode levar a aba a cerca de 2 GB. Celulares e tablets com pouca memória livre podem falhar; a página avisa quando consegue detectar isso, e em alguns celulares o que acontece é que o navegador recarrega a aba.
  • O modelo mantém o objeto mais proeminente. Cabelo fino, pelos, vidro e fumaça podem sair imperfeitos, e cenas cheias com vários objetos podem manter ou descartar partes que você não esperava.
  • O resultado é um PNG com fundo transparente, branco ou de uma cor personalizada, ou um JPG quando o fundo é branco ou colorido (um JPG não pode ser transparente). Colocar o objeto sobre outra foto é trabalho para o seu editor de imagens, assim como o acabamento das bordas: veja como limpar halos e bordas serrilhadas.

Em que testamos

Além das fotos de teste usadas para conferir a precisão do motor, passamos três imagens de teste típicas pelo motor do site (a versão para CPU) em 17 de setembro de 2026 e olhamos cada borda sobre um fundo quadriculado:

  • Um logo chapado sobre branco: bordas limpas, e o vão fechado dentro do sinal de visto também ficou transparente. Veja logo com fundo transparente.
  • Uma assinatura em tinta azul sobre papel texturizado: o traço principal, mais grosso, saiu limpo, mas um sublinhado fino e claro quase sumiu. Use uma caneta de traço grosso; veja assinatura com fundo transparente.
  • Um retrato de estúdio: as bordas do cabelo mantiveram a transparência parcial, com um pouco de fundo sobrando ao lado de um objeto grande e escuro na borda da imagem. Veja fundo para foto de perfil.

Os componentes de código aberto e suas licenças estão na página de créditos de código aberto.

Teste com a sua própria foto

Roda no seu navegador. Sua imagem nunca sai do seu dispositivo.

Remover um fundo