Hafen

13 kilobytes: quanto um tema WordPress precisa pesar de verdade

Quase todo tema promete ser rápido. Raramente dá para conferir, porque quase ninguém informa números que você mesmo possa medir. Então aqui estão os números do Hafen, em bytes, com versão e data da medição ao lado. E a parte honesta: onde um tema leve ajuda de verdade e onde ele não salva absolutamente nada.

Diante de promessas de tempo de carregamento, vale perguntar o que exatamente foi medido. “Menos de um segundo” depende do servidor e do local da medição. Uma pontuação do Lighthouse depende do conteúdo da página de teste. Já o que pertence de forma fixa ao tema e não dá para relativizar é a quantidade de CSS e JavaScript que ele coloca em cada página. Foi exatamente isso que medimos.

Os números

Medido em 6 de setembro de 2026 no pacote publicado do Hafen 1.0.0, ou seja, na versão que ficou no diretório oficial de temas de 4 a 22 de setembro. O navegador precisa de exatamente dois arquivos para exibir a página, ambos do seu próprio servidor:

ArquivoNo pacotegzipBrotli
style.css28.873 bytes8.671 bytes7.642 bytes
assets/js/hafen.js1.948 bytes862 bytes786 bytes
Soma, duas requisições30.821 bytes9.533 bytes8.428 bytes
inter-variable.woff2, só no look padrão48.256 byteswoff2 já vem comprimido

Pela rede passam, portanto, 9.533 bytes em duas requisições. O gzip é aqui o número conservador, porque qualquer hospedagem o entrega; o valor Brotli ao lado foi medido com o nível máximo de compressão, e servidores que comprimem dinamicamente ficam, no dia a dia, um pouco acima dele. Para você chegar aos mesmos números: medido no pacote hafen-1.0.0.zip com node:zlib, gzip no nível padrão 6, Brotli no nível 11. Outras ferramentas variam alguns bytes; no mesmo arquivo medimos de 9.522 a 9.555 bytes, conforme o programa. Isso não muda a conclusão, mas muda uma comparação de números, e por isso a ferramenta está indicada aqui. Um terceiro arquivo fica de fora da tabela de propósito: a partir do theme.json, o WordPress gera os estilos globais e os grava no cabeçalho da página. Eles entram então no peso transferido do documento HTML e não custam uma requisição própria.

Nota de 25 de setembro de 2026: Desde 22 de setembro, o Hafen 1.1.0 está no diretório de temas, a versão do menu, com nova navegação móvel, cabeçalho que acompanha a rolagem e estilos de tabela. Continuam sendo dois arquivos mais a fonte no look padrão, mas os dois cresceram: o style.css agora tem 38.191 bytes (gzip 11.496, Brotli 10.241), o assets/js/hafen.js 3.344 bytes (gzip 1.491, Brotli 1.302). Pela rede passam assim 12.987 bytes em duas requisições, medidos com o mesmo método nos arquivos da versão 1.1.0 do diretório de temas. A fonte continua com 48.256 bytes. A tabela acima mostra o estado da 1.0.0, para o qual este artigo foi escrito.
Nota de 7 de setembro de 2026: Quando este artigo foi publicado em agosto, aqui estavam os números do Hafen 0.8.1, ou seja, 20.534 bytes de CSS e 1.948 bytes de JavaScript. Esses números brutos estavam certos, a soma logo abaixo não: como peso transferido o artigo informava 7.149 bytes, embora na mesma seção indicasse 6.461 bytes gzip para o style.css e 870 bytes para o hafen.js, ou seja, 7.331 bytes juntos. Essa soma já estava errada na época; nós a corrigimos aqui de forma visível, em vez de deixá-la sumir em silêncio. Desde então o tema ganhou 33 looks adicionais e o reforço de uma migração real, por isso hoje vale a tabela acima.

O que entrou desde a 0.8.1

Até a 1.0.0, pouco mais de dois kilobytes a mais pela rede; com a 1.1.0, quase três e meio a mais: quem tem o número antigo na cabeça pode perguntar para quê. A mesma medição ao longo das versões, sempre style.css e hafen.js juntos, a partir dos pacotes publicados:

VersãoNo pacotegzipVariações de estilo
0.8.022.227 bytes7.341 bytes5
0.9.126.866 bytes8.614 bytes5
0.10.028.084 bytes8.787 bytes37
1.0.030.821 bytes9.533 bytes38
1.1.041.535 bytes12.987 bytes38

Até a 1.0.0, o maior salto ficou entre a 0.8.0 e a 0.9.1, e ali não há um pacote de novos recursos, e sim o retorno de uma migração real: grade de revista para a listagem do blog, um substituto visual pensado para posts sem imagem, alvos fáceis de tocar na paginação. Já o salto de cinco para 37 looks custou só 1.218 bytes de CSS, porque um look é um arquivo JSON, e não uma linha a mais de folha de estilo.

E um número passou muito tempo sem se mexer: o hafen.js ficou inalterado em 1.948 bytes da 0.8.0 até a 1.0.0, em todos os looks e em todas as versões. Não é acaso, e sim o limite que nós nos impusemos. O que o CSS consegue fazer não ganha JavaScript. Com a 1.1.0 o arquivo cresceu pela primeira vez, para 3.344 bytes: o cabeçalho agora acompanha a rolagem, e o script mede a altura dele para que um salto até um título não termine escondido embaixo dele. Isso o CSS sozinho não consegue.

A fonte é a exceção, não a regra

O look padrão, ou seja, a predefinição do theme.json, traz a Inter como um único arquivo de fonte variável, 48.256 bytes para todos os pesos de 100 a 900. Com o Hafen 1.1.0, a parte total do tema em uma página fica, nesse único caso, em 61.243 bytes. Esse é o valor completo, nada vem de fora: nada de Google Fonts, fonte de ícones ou CDN.

Assim que você escolhe um dos 38 looks no editor do site em Estilos, o arquivo de fonte sai de cena. Cada uma das 38 variações substitui a Inter predefinida por uma pilha de fontes do sistema, sem fontFace próprio, e o tema percebe isso sozinho: a indicação de pré-carregamento no cabeçalho da página se desliga nesse caso, em vez de pedir 48 kilobytes por uma fonte que não é usada em lugar nenhum. Com o Hafen 1.1.0 sobram os 12.987 bytes de CSS e JavaScript. Quais são esses 38 looks e como eles se diferenciam em cor, tipografia, forma e densidade está em Hafen 1.0: um tema, 38 looks, zero arquivos de fonte.

Quem quer manter as cores do padrão e se livrar só da fonte escolhe a variação Launch. Ela não muda nada além da tipografia: Segoe UI no Windows, San Francisco nos aparelhos Apple, Roboto no Android. Os outros 37 looks trazem, além disso, uma paleta de cores e raios de canto próprios, mas também não carregam nenhum arquivo de fonte.

De onde costuma vir o peso

Para comparar, vale olhar o que um tema comum traz consigo sem que ninguém tenha feito nada de errado. Um tema de page builder carrega o próprio framework, mais um conjunto de ícones, muitas vezes jQuery e uma biblioteca de slider, geralmente em todas as páginas, tenha a página um slider ou não. A parte cara nem é o tamanho, e sim o tempo que o navegador gasta executando tudo isso.

Um número medido sobre isso nós temos, mas não de um page builder, e sim do Neve, um tema considerado com razão um dos clássicos mais rápidos. Na migração de um site de produção já crescido para o Hafen, mesmo dia, mesmo método, plugins inalterados, o JavaScript da página inicial no celular caiu de 621 para 382 kilobytes e o First Contentful Paint de 3,9 para 1,3 segundo. A diferença de 239 kilobytes vem só da camada do tema, nos plugins ninguém mexeu. A série completa de medições em quatro tipos de página está no nosso caso real de troca de tema. Para um tema de page builder não temos uma série de medições própria, por isso também não há um número para ele aqui.

O Hafen vem de outra direção. Layout, cores, espaçamentos e tipografia estão inteiramente no theme.json, e o próprio WordPress gera a partir dele o CSS necessário. Não há framework, porque não existe nenhum que o editor de blocos já não traga. E não há JavaScript para coisas que o CSS resolve; os 3.344 bytes do pacote do Hafen 1.1.0 cuidam do cabeçalho fixo, incluindo a medição da altura dele para links de âncora, e do fade suave ao rolar a página, nada mais. Além disso, dois filtros do tema garantem que o WordPress carregue só o CSS dos blocos que de fato aparecem na página, em vez da biblioteca de blocos inteira.

Tudo o que não é apresentação fica, de propósito, fora do tema, no plugin complementar Hafen Core: dados estruturados, llms.txt, blocos de resposta. Não é mania, e sim uma regra do diretório, porque funcionalidades precisam sobreviver a uma troca de tema. Tudo sobre o tema, os looks e o plugin complementar está na página do Hafen.

E agora a parte honesta

Um tema leve não deixa rápido um site lento. Ele só remove uma entre várias causas, e quase nunca a maior.

Na prática, dominam três outros itens. Imagens, quando são enviadas na resolução total da câmera e reduzidas via CSS; uma única imagem dessas pesa mais que o tema inteiro. Plugins que carregam seus scripts em todas as páginas, em vez de só onde são necessários. E a hospedagem, porque nenhuma otimização no front-end ajuda contra uma resposta do servidor que demora um segundo para chegar.

Quem quer acelerar um site existente, portanto, não começa pelo tema. O caminho está no nosso artigo Como deixar o WordPress mais rápido: guia completo 2026, e ele vale seja qual for o tema instalado. Este artigo responde à outra pergunta: o que um tema contribui quando você começa do zero ou troca de tema.

Meça você mesmo

O Hafen está no diretório oficial de temas do WordPress desde 4 de setembro de 2026, e desde 22 de setembro na versão 1.1.0. Instale, abra a análise de rede do navegador e conte quantas requisições vêm do tema. São duas.

Hafen no WordPress.org

Perguntas frequentes

Como posso conferir os números por conta própria?

Baixe o tema e veja o tamanho dos arquivos. No servidor, você mede o peso real transferido nas ferramentas de desenvolvedor do navegador, em Rede, coluna Transferido. Ali você também vê quantas requisições vêm de fato do tema. Os números deste artigo vêm do pacote da versão 1.0.0, medido em 6 de setembro de 2026, e dos arquivos da versão 1.1.0, medidos em 25 de setembro de 2026.

Por que o Hafen entrega a fonte por conta própria em vez de usar o Google Fonts?

Por dois motivos. Primeiro, com o Google Fonts dados de conexão vão para um terceiro, o que na Alemanha já foi parar várias vezes na Justiça. Segundo, uma conexão com um servidor de fora também é tecnicamente mais cara que um arquivo do seu próprio. A questão, porém, só se coloca no look padrão: cada uma das 38 variações de estilo substitui a Inter por uma pilha de fontes do sistema e aí não carrega arquivo de fonte nenhum.

Outro look muda o tempo de carregamento?

Só em uma direção, para baixo. Todas as 38 variações de estilo são arquivos JSON a partir dos quais o WordPress gera os estilos globais; o navegador não carrega nenhum arquivo adicional para isso, seja qual for o look que você escolher. A única diferença mensurável é a fonte: no look padrão somam-se 48.256 bytes da Inter, em cada um dos 38 looks não.

Preciso do Hafen Core para o tema ser rápido?

Não. O Hafen Core é o plugin complementar para tudo o que não é apresentação, ou seja, dados estruturados, llms.txt e blocos de resposta. Para a velocidade ele não é necessário, o tema funciona por completo sem o plugin. A separação é uma regra do diretório do WordPress: funcionalidades precisam sobreviver a uma troca de tema e por isso não pertencem ao tema.

Um tema enxuto ajuda nas Core Web Vitals?

Ajuda, mas não decide. Menos CSS e JavaScript encurtam sobretudo o tempo até a página responder. Já o Largest Contentful Paint e a estabilidade do layout dependem das suas imagens e de haver elementos que pulam depois do carregamento.

Mudar para um tema de blocos custa conteúdo?

Conteúdo não, ele fica no banco de dados e continua lá. O que precisa ser refeito são os layouts que, no tema antigo, dependiam das configurações próprias dele. Por isso um teste em uma cópia não é excesso de cautela, e sim o caminho normal.

Voltar ao blog Um artigo da hafenstudios