[WP] Compressão Gzip vs Brotli: a diferença entre os dois algoritmos de compressão

Ambiente de teste Família RHELAlmaLinux 9.8Nginx + ApacheVerificado em 2026-10-18

Para deixar sites mais rápidos, incluindo os feitos com o CMS WordPress, vale configurar a compressão de dados no servidor. Assim, os dados trocados entre o servidor web e o navegador carregam mais rápido e o site todo fica mais veloz. É um dos fatores que os administradores de sites mais consideram. A compressão gzip é muito usada, e em muitos servidores web há uma migração crescente do gzip para a compressão Brotli .

1️⃣ O que é compressão?

Site URL: ao abri-la, começa uma conversa entre navegador e servidor. Nesse momento o navegador informa ao servidor se consegue desfazer a compressão do conteúdo (Compression) e quais algoritmos de compressão usa. Isso ajuda o navegador a descomprimir os dados corretamente quando o servidor os envia comprimidos. Então, com servidor e navegador que suportam algoritmos de compressão, seu site carrega ainda mais rápido.

Compressão de dados

Quando um navegador se conecta a um servidor, ele envia cabeçalhos como compressão gzip ou Brotli. Os dados comprimidos com um dos dois chegam ao navegador, e dados comprimidos carregam mais rápido que dados sem compressão.

Content-encoding: gzip
Content-encoding: br
Os arquivos comprimidos são principalmente texto:
· HTML
· CSS
· JavaScript

2️⃣ O que é a compressão Gzip?

Os algoritmos de compressão mais usados pelas hospedagens são Gzip e Brotli. O beta do Gzip saiu em 1992, e a versão 1.0 foi lançada em 1993. Em geral, o Gzip é um dos métodos padrão para comprimir dados enviados pela internet. Ele se baseia no DEFLATE, um dos primeiros algoritmos de compressão, e herdou o nome do gzip, programa de compressão de arquivos criado antes para Unix.

Arquivo Gzip

O DEFLATE combina o algoritmo LZ77 (Lempel-Ziv 1977) com a codificação de Huffman. O LZ77 procura dados repetidos, encontra sequências iguais e as substitui por códigos. A codificação de Huffman usa a frequência de cada caractere para atribuir os códigos de bits mais curtos.

O Gzip comprime dados com DEFLATE e, usando o cabeçalho ‘Accept-Encoding: gzip’ em requisições e respostas HTTP, só comprime quando o cliente suporta Gzip. Essa compressão ajuda os sites a carregar mais rápido.

3️⃣ O que é a compressão Brotli?

O Brotli foi desenvolvido em 2013 pelos engenheiros do Google Jyrki Alakuijala e Zoltán Szabadka.

Compressão Brotli

O Gzip foi pensado originalmente para comprimir arquivos, mas foi adaptado para uso na web. Já o Brotli foi desenvolvido desde o início para a web. Assim, com o Brotli o servidor web pode comprimir o conteúdo antes de enviá-lo ao navegador. Como é comprimido antes de ser transmitido ao navegador, é uma abordagem melhor e mais avançada.

O Brotli usa as mesmas duas técnicas centrais da compressão GZIP: LZ77 e codificação de Huffman.

4️⃣ Compressão Gzip vs compressão Brotli

🧭 Fluxo de compressão por Accept-Encoding
Diagrama explicativo
📨 Cabeçalho da requisição
🌐 Requisição
gzip
br
Sem cabeçalho
gzip, deflate, br, zstdEdge 155
→Solicitação
🖥️ Nginx
📄 Arquivos CSS · JS entregues diretamente
🗜️ Sem módulo Brotli
✅ CSS · JS gzip
⚠️ Sem compressão de CSS · JS
Sem compressão de CSS · JS
✅ CSS · JS gzip
→HTML
⚙️ Apache
📝 HTML (WordPress)
🗜️ Módulos Brotli · mod_deflate
✅ HTML gzip
✅ HTML br
Sem compressão de HTML
✅ HTML gzip
Quando só gzip foi pedido, o Apache comprimiu o HTML e o Nginx comprimiu CSS e JS, ambos com gzip.
Quando só br foi pedido, o Apache comprimiu o HTML com br, mas CSS e JS, que o Nginx entrega diretamente, voltaram como originais sem compressão.
Sem o cabeçalho Accept-Encoding, HTML, CSS e JS voltaram todos como originais sem compressão.
Enviando gzip e br juntos, como faz um navegador, o Apache também comprimiu o HTML com gzip, e os três arquivos voltaram em gzip.

O Gzip comprime (e descomprime) dados com o método DEFLATE, enquanto o Brotli usa um formato próprio, que acrescenta modelagem de contexto ao LZ77 e à codificação de Huffman.

Comparando a compressão Gzip e Brotli
  • O Gzip comprime mais rápido que o Brotli.
  • O Brotli foi projetado especificamente para a web.
  • O Brotli oferece uma taxa de compressão melhor (ou seja, arquivos comprimidos menores) em todos os níveis.
  • Comparado ao Gzip, o Brotli comprime melhor estes três tipos de arquivo: 21% no HTML, 17% no CSS e 14% no JavaScript.

Cada vez mais servidores web preferem o Brotli ao Gzip. Como o Brotli foi feito para comprimir fluxos na hora, a descompressão no front-end seria até 64% mais rápida que a do Gzip.

A RFC 1952, publicada em maio de 1996, explica que o formato Gzip usa o método de compressão DEFLATE e inclui um valor CRC para detectar dados corrompidos. O valor CRC-32 e o tamanho dos dados originais ficam no fim dos dados comprimidos.

A RFC 7932, publicada em julho de 2016, diz que o Brotli comprime combinando o algoritmo LZ77 com a codificação de Huffman. Além disso, usa os dois bytes anteriores dos dados sem compressão como contexto para escolher os códigos de Huffman e, em vez de sequências repetidas, pode se referir a palavras de um dicionário estático de 122.784 bytes.

Os dois formatos aparecem no cabeçalho de resposta como [Content-Encoding: gzip] e [Content-Encoding: br]. O valor [br] foi registrado como codificação de conteúdo HTTP na RFC 7932.

ItemGzipBrotli
EspecificaçãoRFC 1952 · maio de 1996RFC 7932 · julho de 2016
Método de compressãoDEFLATE (LZ77 e codificação de Huffman)LZ77 e codificação de Huffman · contexto dos dois bytes anteriores · dicionário estático de 122.784 bytes
Cabeçalho de respostaContent-Encoding: gzipContent-Encoding: br

5️⃣ Compressão Gzip e Brotli medida: um servidor Nginx + Apache

Num servidor WordPress com Nginx e Apache juntos, comparei as respostas de um post, do arquivo CSS padrão de blocos do WordPress e do arquivo jQuery, mudando só o cabeçalho da requisição. Requisições com só gzip em [Accept-Encoding], só br e sem cabeçalho foram enviadas com curl do mesmo servidor.

for ae in gzip br ''; do echo == ${ae:-none}; curl -s -o /dev/null -D - -w 'size: %{size_download}\n' -H Accept-Encoding:$ae https://example.com/hello-world/ | grep -i -E '^(content-encoding|size)'; done
== gzip
content-encoding: gzip
size: 21390
== br
content-encoding: br
size: 20190
== none
size: 90833

O HTML de um post foi comprimido para 21.390 bytes na requisição gzip e para 20.190 bytes na br, e a requisição sem cabeçalho recebeu os 90.833 bytes sem compressão. A resposta br foi 1.200 bytes (5,6%) menor que a gzip.

for f in wp-includes/css/dist/block-library/style.min.css wp-includes/js/jquery/jquery.min.js; do for ae in gzip br ''; do echo == ${f##*/} ${ae:-none}; curl -s -o /dev/null -D - -w 'size: %{size_download}\n' -H Accept-Encoding:$ae https://example.com/$f | grep -i -E '^(content-encoding|size)'; done; done
== style.min.css gzip
content-encoding: gzip
size: 19655
== style.min.css br
size: 140829
== style.min.css none
size: 140829
== jquery.min.js gzip
content-encoding: gzip
size: 30633
== jquery.min.js br
size: 87553
== jquery.min.js none
size: 87553

Na requisição gzip, o arquivo CSS foi comprimido para 19.655 bytes e o jQuery para 30.633 bytes. Com só br ou sem cabeçalho, o servidor devolveu os originais de 140.829 e 87.553 bytes como estavam, sem cabeçalho [Content-Encoding].

nginx -V 2>&1 | grep -c brotli
0
httpd -M 2>/dev/null | grep -E 'brotli|deflate'
 deflate_module (shared)
 brotli_module (shared)

Arquivos estáticos como CSS e JS são entregues e comprimidos diretamente pelo Nginx, e como o Nginx desta configuração não tem módulo Brotli, ele só comprime com gzip.

No HTML, o WordPress responde à requisição que o Nginx repassa ao Apache, e o Apache comprime. O Apache tem tanto o módulo Brotli quanto o módulo [mod_deflate], que cuida da compressão Gzip.

for f in hello-world/ wp-includes/css/dist/block-library/style.min.css wp-includes/js/jquery/jquery.min.js; do echo == $f; curl -s -o /dev/null -D - -w 'size: %{size_download}\n' -H 'Accept-Encoding: gzip, deflate, br, zstd' https://example.com/$f | grep -i -E '^(content-encoding|size)'; done
== hello-world/
content-encoding: gzip
size: 21390
== wp-includes/css/dist/block-library/style.min.css
content-encoding: gzip
size: 19655
== wp-includes/js/jquery/jquery.min.js
content-encoding: gzip
size: 30633

Ter um módulo Brotli no servidor não significa que o navegador receba respostas comprimidas com Brotli. Com a requisição [gzip, deflate, br, zstd], o mesmo valor que o Edge 155 envia, o Apache também comprimiu o HTML com gzip, e os três arquivos voltaram em gzip.

Mesmo colocando br antes de gzip ou marcando-o como preferido, como em [br;q=1.0, gzip;q=0.5], o HTML voltou em gzip. Abrindo o mesmo post e os dois arquivos no Edge, todos também vieram em gzip.

📊Tamanho da resposta e tempo até o primeiro byteBytes · mediana de 40 medições
Sem compressãogzipbr
Um post (HTML)
Resposta do WordPress comprimida pelo Apache
022,70845,41668,12590,833
Nenhum90,833Sem compressão · 22.7ms
gzip21,390gzip · 26.3ms
br20,190br · 26.5ms
Navegador21,390gzip · 25.0ms
Arquivo CSS de blocos
Arquivo estático entregue diretamente pelo Nginx
035,20770,414105,622140,829
Nenhum140,829Sem compressão · 19.3ms
gzip19,655gzip · 21.0ms
br140,829Sem compressão · 19.8ms
Navegador19,655gzip · 21.1ms
Arquivo jQuery
Arquivo estático entregue diretamente pelo Nginx
021,88843,77665,66587,553
Nenhum87,553Sem compressão · 18.6ms
gzip30,633gzip · 18.4ms
br87,553Sem compressão · 19.0ms
Navegador30,633gzip · 18.7ms
Os números foram medidos em 18 de outubro de 2026, num servidor com Nginx e Apache juntos.

O tempo até o primeiro byte é a mediana dos valores [time_starttransfer] do curl, medidos 40 vezes cada com a ordem embaralhada; cada requisição abriu uma conexão nova, então o tempo de conexão TLS está incluído. No HTML, a resposta sem compressão levou 22,7 ms, gzip 26,3 ms, br 26,5 ms e a requisição tipo navegador 25,0 ms. CSS e JS levaram 18–21 ms, com ou sem compressão.

A velocidade de compressão do Gzip e do Brotli não foi medida aqui, mas comparada com fontes públicas. A RFC 7932 diz que o Brotli comprime com taxa bem maior que o programa gzip e descomprime muito mais rápido que as implementações atuais de LZMA. No repositório do Brotli, o Google explica que ele tem velocidade parecida com o deflate, mas comprime de forma mais densa.

Em 2015, a Cloudflare testou os dois métodos em 10.655 arquivos HTML, CSS e JavaScript. O Brotli na qualidade máxima gerou resultados em média 1,19 vez menores que o zlib na qualidade máxima, mas comprimiu a 0,5 MB por segundo, bem mais lento que os 41,9 MB do zlib nível 9. O Brotli nível 4 teve taxa parecida com a do zlib nível 8 e foi um pouco mais rápido na média geral, mas 1,48 vez mais lento olhando só arquivos menores que 64 KB.

⏱️ Velocidade de compressão do Gzip e do Brotli (fontes públicas)
Diagrama explicativo
📏 Comparar por
🗜️ Gzip(zlib)
Tamanho comprimidozlib qualidade máxima
Velocidade nível 4 · nível 8zlib nível 8
Velocidade no nível máximozlib nível 9 · 41,9 MB por segundo
vs
🗜️ Brotli
Tamanho comprimidoEm média 1,19 vez menor
Velocidade nível 4 · nível 8Nível 4 · taxa parecida · 1,48 vez mais lento abaixo de 64 KB
Velocidade no nível máximoQualidade máxima · 0,5 MB por segundo
No teste da Cloudflare, o Brotli na qualidade máxima gerou resultados em média 1,19 vez menores que o zlib na qualidade máxima. A RFC 7932 também diz que o Brotli comprime com taxa bem maior que o programa gzip.
O Brotli nível 4 teve taxa parecida com a do zlib nível 8 e foi um pouco mais rápido na média geral, mas 1,48 vez mais lento só com arquivos menores que 64 KB.
Na qualidade máxima, o Brotli comprimiu 0,5 MB por segundo e o zlib nível 9, 41,9 MB por segundo, então o Brotli foi bem mais lento.
Fontes: blog da Cloudflare (outubro de 2015) · RFC 7932 · repositório Brotli do Google (fontes públicas, não medido diretamente)

Vimos como otimizar um site comprimindo arquivos como HTML, CSS e JavaScript. Para acelerar um site, a compressão de arquivos e a Otimizar Imagens são essenciais.

🔢 FAQ & conteúdo recomendado

Nesta configuração, o Nginx e o Apache excluem da compressão imagens como PNG, JPEG e WebP. Mesmo pedindo um arquivo PNG com [gzip, deflate, br, zstd], o mesmo valor que um navegador envia, o servidor devolveu o original de 216.683 bytes sem cabeçalho [Content-Encoding].

Com --compressed, o curl 7.76.1 envia [Accept-Encoding: deflate, gzip, br] e descomprime a resposta recebida antes de exibi-la. Pedindo o mesmo post com essa opção, o servidor respondeu em gzip, e o HTML descomprimido tinha 90.833 bytes, igual à resposta sem compressão.

O navegador descomprime a resposta conforme o valor de [Content-Encoding] e depois a usa. No Edge, o mesmo arquivo CSS chegou com 19.655 bytes e foi descomprimido para 140.829 bytes, e o arquivo jQuery chegou com 30.633 bytes e foi descomprimido para 87.553 bytes.

ℹ️ Aviso de afiliados
O conteúdo deste site contém links de afiliados. Quando um visitante compra um produto ou serviço por meio de um desses links, o site recebe uma comissão do vendedor. O valor que o comprador paga (em promoções, ele diminui ↓) não aumenta por causa disso. Preços, descontos e informações de estoque valem para o momento em que o texto foi escrito e podem ter mudado, por isso confirme com o vendedor antes de comprar. Os produtos são escolhidos e avaliados por critérios próprios, e o recebimento de comissão não influencia a ordem de apresentação nem o conteúdo das avaliações.