Pular para o conteúdo

Minificar CSS

Tire comentários e espaços em branco e encurte valores. E, se o minificador não conseguir lidar com algo no seu arquivo, ele avisa — em vez de devolver discretamente uma folha de estilos sem algumas regras.

  • Nunca armazenado
  • Sem fila, sem espera
  • Sem cadastro, sem marca d'água
Minificado

O CSS minificado aparece aqui.

Como funciona

1

Cole seu CSS

Ou solte o arquivo aqui. Nada fica armazenado.

2

Confira o resultado

Você recebe a folha de estilos minificada e quanto ela ficou menor — ou uma explicação do que não pôde ser processado.

3

Copie ou baixe

Pronto para colocar no seu build.

Para onde os bytes realmente vão

A maior parte do ganho vem de espaços em branco e comentários, o que, em uma folha de estilos escrita à mão, é muita coisa — recuo, linhas em branco entre regras e os títulos de seção que tornam um arquivo grande navegável são puro excesso depois que ele vai para o ar. Além disso, os valores são encurtados de formas que não mudam o significado: uma cor escrita como #ffffff vira #fff, 0px vira 0 porque zero não precisa de unidade, o zero inicial de 0.5em some e margin: 10px 10px 10px 10px vira margin: 10px.

O que deliberadamente não é feito é a categoria arriscada. Juntar regras com declarações idênticas, ou reordená-las, muda a cascata — e a cascata é a parte do CSS em que duas regras de mesma especificidade são decididas por qual veio por último. Um minificador que reordena de forma agressiva gera um arquivo menor e, em uma folha de estilos grande, uma página sutilmente diferente. Declarações duplicadas também costumam ser intencionais, deixadas como alternativa para navegadores antigos que ignoram a segunda.

Regras aninhadas e a sintaxe moderna de intervalos em media queries são recusadas, não minificadas, e vale explicar o motivo, porque é o contrário do que a maioria das ferramentas faz. O parser por trás disto é anterior aos dois recursos e, quando encontra algo que não entende, não gera erro — apaga sem avisar, então um bloco aninhado simplesmente some do resultado e a página perde estilos sem que nada seja informado. Recusar o arquivo é a resposta honesta. Se a sua folha de estilos usa aninhamento nativo ou @media (400px <= width <= 700px), use uma das ferramentas abaixo.

Assim como na marcação, avalie o resultado depois da compressão. As folhas de estilos são enviadas comprimidas com gzip ou brotli, e esses algoritmos já lidam muito bem com espaços em branco repetidos — então um arquivo que fica 30% menor ao ser minificado pode encolher só 5% na transferência. O ganho é real e menor do que o número em destaque.

Quando você precisa de outra coisa

O Lightning CSS é a ferramenta certa para folhas de estilos modernas: ele entende aninhamento, intervalos em media queries, funções de cor e tudo o mais que foi adicionado nos últimos anos, minifica mais do que qualquer coisa mais antiga e ainda converte a sintaxe nova para navegadores antigos no caminho. O esbuild --minify style.css é quase tão bom e extremamente rápido. Os dois devem ficar em uma etapa de build, não em uma aba do navegador.

O ganho muito maior costuma ser remover as regras que você não usa. Um site feito com um framework utilitário ou uma biblioteca de componentes costuma enviar folhas de estilos em que a maior parte do arquivo nunca corresponde a nada na página — e o PurgeCSS, ou o build do próprio framework, reduz isso em uma ordem de grandeza. Minificar CSS não usado deixa o CSS não usado menor; apagá-lo é a solução de verdade.

Perguntas frequentes

Meu CSS fica armazenado em algum lugar?

Não, e para código-fonte esse é o ponto. Nada fica armazenado e nenhum servidor o vê. Colar código proprietário em um minificador online que o envia para algum lugar é uma divulgação, diga o site o que disser sobre retenção — e é exatamente o tipo de coisa que se faz com pressa, sem pensar.

Por que ele recusou meu arquivo?

Porque minificá-lo faria perder regras. O minificador por trás desta página é de 2022 e não conhece duas coisas que hoje são CSS comum. Com aninhamento nativo — uma regra escrita dentro de outra, com ou sem "&" —, ele devolve a regra externa e DESCARTA SEM AVISAR a aninhada. Com uma media query moderna de intervalo, como @media (width >= 400px), ele devolve uma folha de estilos vazia. Nenhum dos dois gera erro. Medimos os dois casos exatamente na versão que usamos e concluímos que entregar a alguém uma folha de estilos sem estilos é pior do que recusar, então esses dois casos são detectados e recusados. As regras também são contadas antes e depois como verificação geral, caso exista um terceiro caso que ninguém descobriu ainda.

Então como minifico CSS aninhado?

Compile o aninhamento antes. Toda ferramenta de build que suporta aninhamento — Sass, PostCSS, Lightning CSS ou o seu bundler — o achata durante o build, e o resultado achatado é minificado aqui sem problema. Se você escreve aninhamento à mão e o serve diretamente, está contando com um recurso que os navegadores atuais suportam, mas que o ecossistema de minificadores ainda não acompanhou totalmente.

O que ele faz, exatamente?

Remove comentários e espaços em branco, encurta cores (#ffffff vira #fff, #ff0000 vira red), elimina unidades e pontos e vírgulas desnecessários e junta o que pode ser juntado com segurança. Ele não remove regras que acha que não são usadas — isso exigiria conhecer o seu HTML, e um palpite errado apaga estilos de que você precisa.

Quanto menor vai ficar?

Para CSS escrito à mão, geralmente de 15 a 30%. Um resultado já compilado por uma ferramenta de build costuma estar quase no mínimo e mal vai mudar. O gzip do seu servidor faz mais do que a minificação; os dois ganhos se somam.

É seguro minificar aqui uma folha de estilos de produção?

Sim. Nada fica armazenado, e os dois casos que ele não consegue processar são recusados em vez de quebrados sem aviso, então o que volta é ou um resultado correto ou uma explicação do motivo da recusa.

Bom saber: Regras aninhadas e a sintaxe moderna de intervalos em media queries são recusadas, não minificadas. O minificador se baseia em um parser anterior a esses dois recursos e, em vez de dar erro, apaga sem avisar o que não entende — um bloco aninhado simplesmente some do resultado. Recusar o arquivo é a resposta honesta até esse parser se atualizar.

Coloque esta ferramenta no seu site

Grátis para qualquer blog, página de turma ou artigo de ajuda. Cole um único trecho de código e seus visitantes podem usá-la direto na sua página.