Por que existe
Um limite de tamanho é uma falha de projeto que chega como culpa sua.
Uma foto de celular tem vários megabytes. O formulário que recusa aceita cinco e não diz o que mudar. O Compresso devolve esse problema para o navegador, onde leva menos de um segundo.
- 0 bytes
Enviados, nunca
Abra a aba de rede e veja o silêncio enquanto cem fotos são processadas.
- 3,3 MB para 93,5 KB
Uma medição real
O resultado varia com o conteúdo, então preferimos um dado real a uma média que não medimos.
- 3,6 KB
Núcleo, compactado
Zero dependências. Só APIs do navegador.
O app
Tudo acontece no seu aparelho.
Grátis, instalável e feito para a hora em que você tem quarenta fotos e um formulário que não aceita nenhuma.
Privado por construção
Não existe servidor para onde mandar suas fotos. Não é uma política para acreditar, é uma arquitetura que dá para verificar.
Funciona sem conexão
Instale uma vez e ele roda no avião. A interface, as fontes e o decodificador HEIC ficam no seu aparelho.
Cem de uma vez
As imagens são processadas em paralelo nos núcleos da sua CPU, então a interface continua fluida mesmo em lotes grandes.
Fotos de iPhone inclusas
Lê HEIC, JPEG, PNG, WebP e AVIF. Grava AVIF, WebP, JPEG e PNG, escolhendo o melhor formato que seu navegador sabe gerar.
Sete idiomas
Inglês, espanhol, francês, alemão, italiano, português e chinês, com tamanhos e porcentagens escritos como cada idioma escreve.

Para quem desenvolve
O mesmo motor, como dependência.
Se você prefere que seus usuários nunca vejam um erro de upload, o núcleo de compressão vem como uma biblioteca que entra em qualquer framework.
import { compress } from 'compresso.js';
const { file, savings } = await compress(input, {
quality: 0.8,
format: 'auto',
});3,6 KB compactado
Pequeno a ponto de adotar não precisar de reunião. Zero dependências e nada para auditar.
Compressão em lote paralela, fora da thread principal
O compresso.js/pool roda um pool de Web Workers resiliente — com recuperação de falhas e timeout incluída — para que um lote grande seja comprimido em paralelo sem travar sua interface.
Nunca devolve arquivo maior
A saída com perda é limitada ao menor entre o seu limite e o original, porque um compressor que aumenta arquivo está quebrado.
