Também disponível em: English · Español · Français · العربية
Calcular tamanho gzip: gzip, brotli e deflate
Cole qualquer coisa e veja o tamanho comprimido em todos os formatos que o seu navegador souber produzir, com o número do gzip posto no lugar dele.
O que é tamanho gzip?
Tamanho gzip é em quantos bytes um arquivo fica depois da compressão — o número que de fato atravessa a rede, em oposição ao que o arquivo ocupa em disco. É a unidade em que se escrevem orçamentos de desempenho, porque um bundle de JavaScript de 300 KB que comprime para 80 KB custa 80 KB a quem visita.
A compressão funciona achando repetição. É por isso que o mesmo truque dá resultados tão diferentes conforme o conteúdo: marcação e JSON se repetem o tempo todo e encolhem enormemente, enquanto texto corrido se repete bem menos e encolhe pouco. Uma imagem ou um zip já tiveram a repetição removida e mal vão se mexer.
Esta página comprime o que você der em todos os formatos que o seu navegador suportar e mostra os tamanhos lado a lado. Tudo roda no navegador, então nada do que você colar ou selecionar sai da sua máquina.
Como usar
- Cole um texto ou escolha um arquivo. Qualquer um serve. O arquivo é lido localmente e nunca enviado, então o tamanho dele só é limitado pelo que a sua própria máquina aguentar.
- Leia os tamanhos pelos formatos. Cada linha dá o tamanho comprimido, a razão em relação ao original e os bytes economizados. O menor vem marcado.
- Repare no que o seu navegador recusou. A linha abaixo da tabela nomeia qualquer formato que o seu navegador não quis produzir, porque o padrão permite que uma implementação suporte menos que os quatro.
O número do gzip não é o número que vai pela rede
Quase todo medidor informa o gzip e para por aí. Enquanto isso, a CDN na frente de um site moderno costuma estar servindo brotli, que é outro algoritmo com outro resultado — e consistentemente menor.
Medido nos próprios arquivos-fonte deste site, o brotli saiu entre 16% e 28% menor que o gzip. Isso não é diferença de arredondamento. Se o seu orçamento diz 100 KB comprimidos e a sua CDN serve brotli, você vem medindo algo que não envia, e sendo pessimista quanto a isso em um quinto.
O padrão Compression Streams que os navegadores implementam define exatamente quatro formatos: brotli, deflate, deflate-raw e gzip. Há uma armadilha nos nomes, porque o HTTP não usa essas palavras — num cabeçalho Accept-Encoding o brotli se escreve br, e pedir br em vez de brotli a um navegador lança um erro em vez de comprimir coisa alguma.
Comprimir pode deixar um arquivo maior
Todo formato embrulha a saída num contêiner, e o contêiner tem custo fixo. Comprimir absolutamente nada — uma entrada vazia — ainda produz 20 bytes de gzip, 8 de deflate, 2 de deflate-raw e 1 de brotli. Esse é o piso sob cada medição desta página.
Com entrada que não comprime, o custo é pequeno mas real. Dê à família deflate bytes sem padrão nenhum e a saída sai 23 bytes maior que a entrada, mais outros 5 por bloco de 64 KB depois do primeiro; o brotli faz o mesmo serviço por 4. É por isso que comprimir um arquivo já comprimido é desperdício, e por isso um servidor que aplica gzip a um JPEG está piorando um pouco a resposta em vez de melhorá-la.
A consequência prática está nas respostas pequenas. Uma resposta JSON de 200 bytes é justamente o caso em que o contêiner pode custar mais do que a compressão economiza, e a ferramenta mostra uma economia negativa quando isso acontece, em vez de esconder.
O que esta página não consegue dizer
Ela não consegue dizer os bytes exatos que o seu servidor vai enviar. A compressão tem níveis de esforço e o compressor do navegador não expõe nenhum — você fica com o que a implementação escolher, enquanto uma CDN pode estar ajustada mais forte ou mais fraca. Duas implementações corretas do mesmo formato produzem legitimamente tamanhos diferentes para a mesma entrada.
Ela também mede um arquivo por vez, isolado. Tamanhos reais de transferência dependem de a resposta ser comprimida ou não abaixo de algum limiar, do enquadramento da própria conexão e, com muitos recursos pequenos, de terem sido agrupados antes: vários arquivos comprimidos como um quase sempre ganham dos mesmos arquivos comprimidos separadamente, porque a repetição entre eles passa a estar disponível.
E a lista de formatos é a que o seu navegador suporta hoje. A linha abaixo da tabela informa isso em vez de presumir, porque o padrão permite explicitamente que uma implementação recuse um formato, e os navegadores recusam.
Por que é grátis?
A compressão é feita por uma API que o seu navegador já tem. Nada do que você cola ou seleciona é enviado, nada é registrado e não há conta a criar.
Sem cadastro, sem limites e sem marca d'água em nada que você copiar.