Como minificar HTML, CSS e JavaScript

Para minificar HTML, CSS ou JavaScript, você remove tudo o que o navegador ignora (comentários, indentação, quebras de linha e espaços extras) mantendo o comportamento do código exatamente igual. Para um único arquivo, cole o código em um minificador como o desta página; para um site inteiro, deixe a ferramenta de build fazer isso a cada versão. Guarde o original legível e publique só a cópia minificada.

6 min de leitura

A resposta curta

Minificar é uma limpeza de espaços e comentários. Uma folha de estilos escrita com uma propriedade por linha, comentários e indentação de quatro espaços vira uma única linha compacta que o navegador interpreta do mesmo jeito. Nada muda no que aparece na tela; só diminui a quantidade de bytes enviada pela rede.

A ferramenta abaixo trabalha com HTML, CSS e JavaScript. Escolha a Linguagem, coloque a Ação em Minificar, cole o código ou abra um arquivo, e o resultado aparece à direita com o tamanho antes e depois e quanto ficou menor. Copie ou baixe como arquivo. O seu código é processado no navegador e não é enviado para nenhum servidor.

Experimente aqui: Minificador de CSS

Abrir a página completa da ferramenta

O que a minificação remove e o que ela precisa manter

Um minificador só é seguro se entende a linguagem bem o bastante para saber quais caracteres têm significado. Remover o espaço errado quebra o código sem aviso, por isso as regras mudam de uma linguagem para outra.

Algumas ferramentas vão além dos espaços. Bundlers de JavaScript como Terser ou esbuild também renomeiam variáveis locais para uma letra só e eliminam código inalcançável; ferramentas de CSS como cssnano ou Lightning CSS encurtam cores (#ffffff para #fff) e juntam regras. Isso economiza mais, mas é uma transformação do seu código, não só uma limpeza, e deve ficar em um processo de build testado. O minificador desta página para de propósito nos comentários e espaços, e é por isso que dá para usá-lo com segurança em qualquer trecho, mesmo sem testes automatizados.

  • CSS: comentários e quebras de linha saem, mas o espaço em um seletor descendente como .menu a precisa ficar, e calc(1px + 2px) exige os espaços em volta do + e do sinal de menos. Comentários de licença que começam com /*! costumam ser mantidos.
  • JavaScript: comentários e indentação saem, mas strings, template literals e expressões regulares não podem ser alterados. Em código sem ponto e vírgula, uma quebra de linha pode encerrar um comando, então algumas quebras de linha precisam ficar.
  • HTML: os espaços entre elementos de bloco saem e sequências de espaços viram um só, mas o espaço único entre dois links dentro de uma frase é visível e precisa ficar. O conteúdo de pre e textarea é mantido exatamente como está.

Quanto a minificação economiza?

A economia depende de como o arquivo foi escrito. Arquivos com muitos comentários e indentação generosa são os que mais encolhem. Estas são faixas típicas para código escrito à mão, antes da compressão do servidor:

Tipo de arquivoEconomia típica ao minificarO que faz a diferença
CSS15 a 30 por centoComentários, indentação, uma propriedade por linha
JavaScript (só espaços)20 a 40 por centoComentários e indentação; nomes longos continuam
JavaScript (com renomeação)40 a 70 por centoVariáveis locais encurtadas por um bundler
HTML10 a 25 por centoIndentação e comentários entre elementos

Minificar ou usar gzip? Faça os dois

Servidores e CDNs normalmente comprimem arquivos de texto com gzip ou Brotli antes de enviá-los, o que já reduz CSS e JavaScript em algo entre 60 e 80 por cento. A compressão é muito boa em espremer espaços repetidos, então o ganho extra da minificação é menor depois da compressão do que antes, muitas vezes na faixa de 5 a 20 por cento do tamanho comprimido.

Ainda assim vale a pena. Arquivos minificados são interpretados um pouco mais rápido, comentários com anotações internas nunca chegam ao público e a economia se soma a cada visualização de página. Ferramentas como Lighthouse e PageSpeed Insights apontam há muito tempo CSS e JavaScript não minificados justamente por isso. Confira também se a compressão está mesmo ligada: nas ferramentas de desenvolvedor do navegador, abra o painel Rede (Network), clique em um arquivo CSS e procure o cabeçalho de resposta content-encoding com gzip ou br.

Formas de minificar, de um arquivo a um site inteiro

O método certo depende de com que frequência o código muda.

  • Um arquivo ou um trecho: cole na ferramenta acima. Serve para scripts inline em um CMS, uma folha de estilos de template de e-mail, um widget que você entrega a um cliente ou para ver quanto um arquivo ganharia.
  • Um site com etapa de build: deixe o bundler cuidar disso. Vite, webpack, Parcel e esbuild minificam os builds de produção por padrão, então normalmente não é preciso nenhuma configuração extra além de rodar o comando de build de produção.
  • Um site sem etapa de build: muitas plataformas de CMS e plugins de cache, como os do WordPress, têm uma opção de minificar, e algumas CDNs oferecem minificação automática. Teste as páginas depois de ativar, porque uma minificação agressiva de HTML ou JavaScript é a causa mais comum de layout ou script quebrado depois de ligar essa opção.
  • Frameworks do lado do servidor: ASP.NET, Django e Rails têm pipelines de assets ou pacotes que minificam na hora da publicação.

Quando o código minificado quebra, e como resolver

A maior parte dos problemas vem de um código original que depende de algo que o minificador altera, ou de um minificador agressivo demais. Estes são os suspeitos de sempre:

  • Falta de ponto e vírgula junto com um minificador de JavaScript agressivo: uma linha que começa com ( ou [ acaba grudada na linha anterior. Mantenha as quebras de linha (como esta ferramenta faz) ou acrescente os pontos e vírgulas.
  • Dois arquivos concatenados depois de minificados: se o primeiro não termina com ponto e vírgula, o segundo pode ser lido como uma chamada de função. Termine cada arquivo direito ou deixe um bundler juntá-los.
  • Hacks de CSS e sintaxe incomum: hacks antigos para navegadores que dependem de espaçamento exato podem parar de funcionar. Remova os hacks de que você não precisa mais.
  • Código que lê o próprio texto ou os nomes de funções: minificadores que renomeiam quebram esse código, os que só tiram espaços não.
  • Erros de sintaxe no código fonte: um minificador não consegue corrigi-los. A ferramenta desta página aponta strings, comentários e tags não fechados com linha e coluna, então corrija o original primeiro.

Boas práticas

Nunca edite arquivos minificados diretamente. Mantenha o código fonte legível no controle de versão e trate a cópia minificada como um resultado do build, que pode ser gerado de novo a qualquer momento. Se precisar ler o arquivo minificado de outra pessoa, mude a Ação para Formatar na mesma ferramenta para recuperar uma indentação legível.

Se você usa uma ferramenta de build, gere source maps para produção. Eles permitem que as ferramentas de desenvolvedor do navegador mostrem as linhas originais na hora de depurar, enquanto os usuários continuam baixando o arquivo pequeno.

Passo a passo

  1. Escolha a linguagemSelecione CSS, JavaScript ou HTML em Linguagem e coloque a Ação em Minificar.
  2. Cole ou abra o códigoCole o código, digite ou use Abrir arquivo. Exemplo carrega um código de amostra se você só quer ver como funciona.
  3. Confira o resultadoO código minificado aparece à direita com o tamanho antes e depois. Erros aparecem com linha e coluna.
  4. Copie ou baixeUse Copiar para mandar o resultado para a área de transferência ou Baixar para salvar como arquivo, e guarde o original legível.

Perguntas frequentes

Minificar muda o funcionamento do meu código?

A minificação de espaços não muda. Só saem comentários, indentação e espaços que o navegador ignora. Minificadores que renomeiam, usados em ferramentas de build, também mudam nomes, o que é seguro quando feito corretamente, mas deve ser testado.

Minificar é a mesma coisa que comprimir com gzip?

Não. Minificar reescreve o arquivo sem os caracteres desnecessários; gzip e Brotli comprimem os bytes durante a transferência e o navegador os descompacta. Os dois funcionam bem juntos, então use ambos.

Dá para desfazer a minificação?

Em parte. Um formatador devolve quebras de linha e indentação, mas os comentários removidos se perdem, e nomes encurtados por um bundler não podem ser recuperados. Por isso você guarda o código fonte original.

Meu código é enviado para algum servidor quando uso esta ferramenta?

Não. A minificação roda no seu navegador, então scripts com chaves de API ou marcação interna nunca saem do seu computador. É grátis e também funciona offline depois que a página carregou.

Devo minificar CSS e JavaScript inline dentro do HTML?

Sim, se a página for grande. O minificador de HTML desta ferramenta também minifica os blocos style e script dentro da página, então uma passada só resolve as três linguagens.

Por que ainda há quebras de linha no meu JavaScript minificado?

Em JavaScript, uma quebra de linha pode encerrar um comando quando faltam pontos e vírgulas. Removê-la poderia mudar o que o código faz, então a ferramenta mantém essas quebras de linha.