← Todos os posts

Como construímos um compressor de vídeo que nunca envia seu arquivo

2026-05-20

Busque "comprimir vídeo online" e você encontrará dezenas de serviços que parecem gratuitos, limpos e convenientes. Solte o arquivo, espere 30 segundos, baixe a versão menor. Fácil.

O que quase nenhum deles te conta: seu vídeo está no servidor deles. Talvez apaguem depois de algumas horas. Talvez os funcionários não vejam. Talvez os backups não guardem cópia. Talvez.

Construímos o Compressor de Vídeo ToolKoala para tirar esse "talvez" da equação. Seu arquivo de vídeo nunca sai do seu notebook. Nem para o nosso servidor. Nem para o de ninguém. A compressão roda inteiramente no seu navegador, na sua CPU. Este artigo explica como funciona, quais os trade-offs e como você verifica.

O truque: FFmpeg compilado para WebAssembly

FFmpeg é o codificador de vídeo open source que move a maioria das ferramentas profissionais — do pipeline de ingestão do YouTube ao seu app favorito de Mac. Tem mais de 20 anos e lida com qualquer codec, container e espaço de cor que você consiga imaginar.

Alguns anos atrás, o time do FFmpeg compilou o projeto inteiro para WebAssembly — um formato binário portátil que roda em qualquer navegador moderno em velocidade quase nativa. O resultado é @ffmpeg/ffmpeg, um pacote JavaScript que carrega um módulo WebAssembly de ~30 MB e expõe a interface de linha de comando do FFmpeg para páginas web.

Quando você abre nosso compressor de vídeo e arrasta um MP4, isto acontece:

  1. Seu navegador baixa o módulo WebAssembly do FFmpeg (~30 MB) uma vez. Fica em cache e as próximas visitas pulam isso.
  2. O módulo carrega em um Web Worker — uma thread de fundo que não pode tocar o DOM.
  3. Passamos seu vídeo para o worker via writeFile(). É uma cópia em memória. Sem rede.
  4. O worker roda ffmpeg -i input.mp4 -c:v libx264 -crf 28 output.mp4 — recodifica o vídeo na sua CPU.
  5. O worker devolve os bytes comprimidos. Embrulhamos em um Blob, geramos um link de download e pronto.

Em nenhum momento seu vídeo é enviado pela rede. O único tráfego é a própria engine FFmpeg sendo carregada de um CDN público.

Verifique você mesmo — 10 segundos

Não confie na gente. Confie no DevTools do seu navegador.

  1. Abra https://www.toolkoala.com/pt-BR/video-compress/ no Chrome ou Firefox.
  2. Abra o DevTools (F12 ou clique direito → Inspecionar).
  3. Vá para a aba Network. Clique no ícone de lixeira para limpar requisições antigas.
  4. Arraste um arquivo de vídeo para a página.

Você vai ver requisições de rede disparando — mas apenas para os arquivos da engine FFmpeg (ffmpeg-core.js e ffmpeg-core.wasm vindos do unpkg.com). Seu arquivo de vídeo faz zero requisições de saída. Zero. Você pode deixar a aba Network aberta durante toda a compressão para observar — fica em silêncio.

Esse é o único tipo de declaração de privacidade que importa: uma que você consegue verificar em 10 segundos sem precisar confiar no publisher.

Por que nem todo compressor online faz isso?

Três motivos.

Velocidade. Compressão server-side usa hardware dedicado — geralmente GPUs ou encoders ASIC de H.264 especializados. Eles comprimem um clipe de 1 minuto em menos de 10 segundos. WebAssembly roda na CPU do seu notebook, single-threaded. O mesmo trabalho leva de 1 a 3 minutos pra gente. Para a maioria dos usos pessoais isso é OK. Para processar 100 vídeos em lote, não.

Tamanho de arquivo. Memória de navegador é finita. Limitamos uploads a 1 GB. Ferramentas server-side lidam com centenas de gigabytes. Se você está comprimindo um arquivo 4K, use o HandBrake no desktop.

Custo de engenharia. Server-side é a arquitetura padrão que todo framework ensina. Browser-side exige entender Web Workers, modelos de memória do WebAssembly, blob URLs, e as diferenças sutis entre workers type: "module" e type: "classic" (caímos nesse bug — module workers não suportam importScripts, então você precisa carregar a build ESM do ffmpeg-core, não a UMD). É um caminho mais chato que poucos times escolhem a menos que privacidade seja um requisito real do produto.

Do que abrimos mão

Honestidade importa mais do que marketing aqui. Coisas que não conseguimos fazer e os compressores server-side conseguem:

  • Aceleração de GPU. Sem -hwaccel cuda ou -c:v h264_nvenc. CPU pura.
  • H.265/AV1 com aceleração por hardware. WebAssembly de navegador suporta H.264 por software. Codecs mais novos funcionam, mas mais lentos.
  • Arquivos acima de ~1 GB. Limites de memória de navegador são 2–4 GB dependendo da plataforma. Acima de ~1 GB de entrada, alocações começam a falhar.
  • Experiência mobile confiável. Celulares ficam sem memória e desaceleram drasticamente em vídeos longos. Recomendamos desktop.

Se alguma dessas coisas importa pra você, use o HandBrake (desktop, gratuito, open source).

Por que construímos mesmo assim

Dois casos reais nos convenceram:

  1. Anexos de email. As pessoas batem o tempo todo no limite de 25 MB de anexo do Gmail. Precisam diminuir um vídeo de 60 MB antes de enviar. Não querem ficar pensando se o serviço de compressão está vendendo thumbnails.

  2. Material sensível. Pedidos de seguro, gravações médicas, momentos de família, esboços de trabalho. Qualquer coisa que você ficaria desconfortável de enviar para um domínio aleatório. O imposto mental de "esse site é seguro?" desaparece quando a resposta é demonstravelmente "seu arquivo não vai a lugar nenhum".

Se você se encaixa em algum desses casos, experimente: Compressor de Vídeo ToolKoala. Solte o arquivo, escolha a qualidade, espere um minuto, baixe. Sem cadastro, sem marca d'água, sem email, sem upload.

Agradecimentos

Isso só é possível por causa das duas décadas de trabalho da equipe do FFmpeg, dos mantenedores do @ffmpeg/ffmpeg que empacotam tudo para navegadores, e dos autores da spec do WebAssembly que tornaram a portabilidade em nível de byte chata o suficiente para ser entregue em produção.

Somos um projeto pequeno construindo uma pilha de ferramentas de privacidade baseadas no navegador. PDFs, imagens, texto, vídeo — mesmo princípio toda vez: seus arquivos não precisam sair do seu dispositivo para você usar software.