Benchmark de Brotli & Gzip

Benchmark de Compressão Brotli & Gzip e Estimador de Largura de Banda

Analise payloads de texto, CSS e JS usando a API nativa CompressionStream, estimando taxas de compressão Brotli/Gzip e tempos de carregamento em redes móveis 3G/4G.

Presets:
Perfil de Conexão:
Requisições Mensais:
Ready14.6 KB initcwndCSS
Payload de Entrada (Código / Texto)2.39 KB
Algoritmo & Nível de CompressãoTaxa Alvo & Status TCP
Uncompressed (Raw)Baseline
2.39 KB1x
Fastest (0 ms)
Cabe no 1º burst TCP (≤ 14.6 KB)
Deflate (RFC 1951)Standard
839 B(-66%)2.92x
Native Stream
Cabe no 1º burst TCP (≤ 14.6 KB)
Gzip (RFC 1952, Level 6)Universal
856 B(-65%)2.86x
Native Stream
Cabe no 1º burst TCP (≤ 14.6 KB)
Brotli Dynamic (Level 5-6)Web Standard
668 B(-73%)3.66x
+18% vs Gzip(1.5ms)
Cabe no 1º burst TCP (≤ 14.6 KB)
Brotli Static Pre-comp (Level 11)Maximum Density
608 B(-75%)4.02x
+26% vs Gzip
Cabe no 1º burst TCP (≤ 14.6 KB)
Zstandard (Zstd Level 3)High Throughput
702 B(-71%)3.49x
Fastest Decompress(0.8ms)
Cabe no 1º burst TCP (≤ 14.6 KB)
Vantagem do Brotli vs Gzip
+8%Compressão mais densa

O dicionário estático do Brotli codifica tokens HTML e CSS em 1-2 bytes em vez de strings ASCII completas.

Ganho de Tempo em Rede 3G
36 msEconomizado emSlow 3G

Reduz viagens de ida e volta do slow-start TCP inicial, acelerando o First Contentful Paint (FCP).

Economia de Transferência Cloud
$0.18 / yr (AWS CDN)

Calculado na escala de 1M req na taxa padrão de saída de $0.085/GB.

Motor 100% Nativo no Navegador

Zero transferências para servidores. Execução local via API Web Streams (CompressionStream) garantindo privacidade total.

Modelos Estatísticos para Brotli e Zstandard

Compara redundâncias com o dicionário estático de 122KB do Brotli, prevendo taxas nos níveis 5 (dinâmico) e 11 (estático).

Simulação de TCP Slow-Start e Física de Redes

Calcula a janela inicial de pacotes (initcwnd = 14,6 KB) e o número de voltas RTT em redes celulares 3G, 4G e banda larga.

Referência técnica e guia de arquitetura

Guia do Desenvolvedor: Benchmark de Compressão Brotli & Gzip e Estimador de Economia de Banda — Guia de referência

Analise payloads de texto, CSS e JS usando a API nativa CompressionStream, estimando taxas de compressão Brotli/Gzip e tempos de carregamento em redes móveis 3G/4G.

Parâmetros principais e controles

Entrada do Payload (Payload Input)String | File Buffer

Código-fonte em texto puro, pacotes JavaScript, folhas de estilo CSS, JSON ou HTML a serem comprimidos e avaliados.

Padrão: Bundle JavaScript / CSS de amostra
Algoritmo de Compressão AlvoEnum (Brotli | Gzip | Both)

Algoritmo avaliado no benchmark. O Brotli (RFC 7932) contém dicionários estáticos integrados voltados para a web, enquanto o Gzip (RFC 1952 DEFLATE) oferece máxima compatibilidade legada.

Padrão: Both (Comparativo)
Nível de Qualidade de CompressãoInteger (Gzip: 1-9 | Brotli: 0-11)

Ajuste entre o consumo de ciclos de CPU e a taxa de redução de bytes. Níveis moderados atendem a respostas dinâmicas; níveis máximos (Brotli 11, Gzip 9) são ideais para artefatos estáticos de build distribuídos em CDN.

Padrão: Brotli 6 / Gzip 6 (dinâmico) | Brotli 11 (estático)
Perfil de Simulação de RedeEnum (Slow 3G | Fast 3G | 4G LTE | Broadband)

Condição de limitação de rede simulada com parâmetros de latência RTT e largura de banda para projetar o TTFB e o tempo total de download.

Padrão: Fast 3G (1.6 Mbps, 150ms RTT)

Dicas profissionais e melhores práticas

Faça a pré-compressão dos arquivos JS

Faça a pré-compressão dos arquivos JS, CSS e SVG no build da sua pipeline de CI/CD utilizando Brotli nível 11 e Gzip nível 9 (ou Zopfli). Servindo com Nginx via brotli_static on;, você obtém máxima redução de banda com zero sobrecarga de CPU em tempo de execução.

Arquivos com menos de 1 KB podem ter

Arquivos com menos de 1 KB podem ter seu tamanho final aumentado após a compressão devido ao overhead dos cabeçalhos e metadados do Brotli/Gzip. Defina sempre no servidor gzip_min_length 1024; e brotli_min_length 1024;.

Garanta que CDNs e proxies reversos

Garanta que CDNs e proxies reversos incluam e respeitem o cabeçalho Vary: Accept-Encoding. Isso impede que clientes sem suporte ao Brotli recebam payloads com Content-Encoding: br em cache por engano.

Desative a compressão HTTP em

Desative a compressão HTTP em respostas dinâmicas que reflitam entradas de usuários ao lado de segredos (como tokens CSRF), ou isole esses tokens em cookies não comprimidos e requisições separadas.

Problemas comuns e solução de problemas

O tamanho do arquivo comprimido ficou maior que o arquivo original

Arquivos menores que 1 KB ou já compactados (como imagens JPEG, PNG, WebP ou fontes WOFF2) não possuem redundância de texto. Os metadados de cabeçalho superam o ganho obtido. Defina um limite mínimo de tamanho (ex.: 1024 bytes) e ignore tipos binários.

O navegador baixa um arquivo binário ou exibe caracteres corrompidos em vez de executar o código

O servidor enviou o conteúdo comprimido sem o respectivo cabeçalho de resposta Content-Encoding: br ou Content-Encoding: gzip. Verifique o repasse de cabeçalhos no seu proxy reverso ou CDN.

Uso elevado de CPU do servidor e picos de latência sob tráfego intenso

Comprimir em tempo real nos níveis mais agressivos (Brotli 10-11 ou Gzip 9) sobrecarrega os núcleos do processador. Limite a compressão dinâmica ao Brotli 4-5 ou Gzip 5-6 e transfira o processamento de arquivos estáticos para o build de CI/CD.

Perguntas frequentes (FAQ)

Por que o Brotli comprime arquivos web com muito mais eficiência do que o Gzip?▼

O Brotli utiliza uma janela deslizante de até 16 MB (contra 32 KB do DEFLATE no Gzip) e conta com um dicionário estático nativo de mais de 120.000 palavras, tags HTML e padrões frequentes de JavaScript. Isso proporciona entre 15% e 25% mais densidade de compressão em ativos web de texto.

É possível usar Brotli sem HTTPS nos navegadores modernos?▼

Não. Os navegadores modernos (Chrome, Firefox, Safari, Edge) exigem obrigatoriamente conexões HTTPS para habilitar o Brotli (Content-Encoding: br), evitando problemas causados por proxies legados que corrompem fluxos binários na porta 80.

Qual nível de compressão deve ser adotado para dados dinâmicos vs. estáticos?▼

Para arquivos estáticos gerados no CI/CD, utilize Brotli nível 11 (--best) ou Gzip 9/Zopfli, já que o processamento ocorre uma única vez. Para respostas dinâmicas de APIs geradas em tempo real, use Brotli nível 4 ou Gzip nível 5 para conciliar velocidade de resposta com baixo consumo de CPU.

Como a compressão de payload influencia diretamente o Core Web Vitals (CWV)?▼

Ao encolher os pacotes de CSS e JavaScript essenciais para renderização, diminuem-se os ciclos de ida e volta (RTT) provocados pela fase de slow-start do TCP em redes móveis, adiantando sensivelmente as métricas First Contentful Paint (FCP) e Largest Contentful Paint (LCP).

Formatos de mídia como WebP, AVIF ou MP4 devem ser comprimidos com Brotli ou Gzip?▼

Não. Arquivos como WebP, AVIF e vídeos MP4 já possuem codificação entrópica dedicada e compactação avançada. Tentar comprimi-los novamente com Gzip ou Brotli consome CPU inutilmente, aumenta a latência e frequentemente expande o tamanho final do arquivo.

Ferramentas e utilitários relacionados

Todas as ferramentas →
Guia do Desenvolvedor do Conversor de Protobuf .proto para Interfaces e Enums TypeScriptDesenvolvimento

Analise definições de mensagens Protocol Buffers (proto2 e proto3), enums e campos aninhados em interfaces TypeScript limpas.

Abrir ferramenta→
Guia do Desenvolvedor: Gerador de Documentação OpenAPI e Swagger para MarkdownDesenvolvimento

Converta especificações OpenAPI 3.0 e Swagger 2.0 JSON/YAML em documentação de referência de API em GitHub Flavored Markdown limpa e estruturada.

Abrir ferramenta→
Conversor de GraphQL SDL para Esquema Prisma (Modelos e Relações)Desenvolvimento

Traduza tipos de objetos, enums e diretivas da linguagem de definição de esquema GraphQL (SDL) em modelos e relações limpas do Prisma ORM.

Abrir ferramenta→
Guia do Desenvolvedor: Gerador de Entidades TypeORM a partir de SQL DDL (Entidades TypeScript)Desenvolvimento

Converta instruções SQL CREATE TABLE DDL em classes de entidade TypeORM em TypeScript com decoradores @Column, @PrimaryGeneratedColumn, relações e índices.

Abrir ferramenta→
Guia do Desenvolvedor do Conversor de SQL CREATE TABLE DDL para Esquema ZodDesenvolvimento

Converta esquemas de tabelas SQL, tipos de dados, restrições e colunas anuláveis em esquemas de objetos Zod estritamente tipados em TypeScript.

Abrir ferramenta→
Conversor de Docker Compose para Manifestos Kubernetes (Compose para K8s)Desenvolvimento

Converta serviços, variáveis de ambiente, portas e volumes de docker-compose.yml em manifestos YAML de Deployment e Service prontos para Kubernetes.

Abrir ferramenta→