FreeToGenerate.com

Quatro formatos, medidos no seu próprio navegador — inclusive o que a sua CDN realmente envia.

Algo para comprimir

O arquivo é lido no seu navegador e comprimido lá. Nada é enviado, e é por isso que também não há limite de tamanho além do que a sua própria máquina aguentar.

Tamanhos comprimidos

brotli
O que a maioria das CDNs realmente serve. No HTTP ele se escreve br dentro do Accept-Encoding, mas aqui o nome do formato é brotli — br não é válido e lança erro.
deflate
Dados deflate dentro de um invólucro zlib, que custa 8 bytes mesmo quando não há nada a comprimir.
deflate-raw
Os mesmos dados deflate sem invólucro nenhum: 2 bytes de sobrecarga e nenhuma soma de verificação.
gzip
O que todo medidor informa. O contêiner dele custa 20 bytes, o mais caro dos quatro.

A compressão é feita pelo seu próprio navegador através do padrão Compression Streams, que define exatamente quatro formatos e permite que uma implementação recuse qualquer um deles.

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

  1. 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.
  2. 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.
  3. 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.