Ferramentas / Minificador de CSS e JavaScript

Minificador de CSS e JavaScript

Reduza o tamanho do seu CSS e JS removendo comentários e espaços desnecessários, com a economia em %.

Minificadores simples e seguros. CSS: remove comentários e espaços desnecessários. JavaScript: remove apenas comentários de linha inteira, linhas em branco e espaços nas bordas das linhas, sem mexer em strings, templates ou regex. Não renomeia variáveis.

Processamento local: nada do que você digita sai do seu navegador.

Como usar

Escolha CSS ou JavaScript, cole o código e veja o resultado na hora, com o tamanho antes e depois e a economia percentual.

O que cada modo faz

  • CSS: remove comentários, colapsa espaços e quebras de linha, tira espaços em volta de { } ; , > e o último ponto e vírgula de cada bloco. Textos entre aspas são preservados.
  • JavaScript: remove apenas comentários de linha inteira (// e /* */ numa única linha), linhas em branco e espaços no início e fim de cada linha. Strings, templates e regex não são alterados, e as quebras de linha ficam, então não há risco com ponto e vírgula automático.

Limitações

Não é um minificador completo: não renomeia variáveis nem remove código morto, então a economia em JS é menor que a de Terser ou esbuild. Use essas ferramentas no build de produção.

Como implementar em código

Exemplos prontos para usar no seu projeto.

// Minificador de CSS simples (não protege textos entre aspas)
function minificarCss(css) {
  return css
    .replace(/\/\*[\s\S]*?\*\//g, '')       // remove comentários
    .replace(/\s+/g, ' ')                    // colapsa espaços
    .replace(/\s*([{};,>])\s*/g, '$1')       // espaços ao redor de símbolos
    .replace(/:\s+/g, ':')
    .replace(/;}/g, '}')                     // último ; é desnecessário
    .trim();
}
console.log(minificarCss('a { color: red; }')); // a{color:red}

Para JS de produção use Terser ou esbuild, que renomeiam variáveis com segurança.

import re

def minificar_css(css: str) -> str:
    css = re.sub(r"/\*.*?\*/", "", css, flags=re.S)  # remove comentários
    css = re.sub(r"\s+", " ", css)                   # colapsa espaços
    css = re.sub(r"\s*([{};,>])\s*", r"\1", css)
    css = re.sub(r":\s+", ":", css)
    return css.replace(";}", "}").strip()

print(minificar_css("a { color: red; }"))  # a{color:red}

Não protege textos entre aspas. Em produção use rcssmin/csscompressor.

package main

import (
	"regexp"
	"strings"
)

var (
	reComentario = regexp.MustCompile(`(?s)/\*.*?\*/`)
	reEspacos    = regexp.MustCompile(`\s+`)
	reSimbolos   = regexp.MustCompile(`\s*([{};,>])\s*`)
	reDoisPontos = regexp.MustCompile(`:\s+`)
)

func minificarCss(css string) string {
	css = reComentario.ReplaceAllString(css, "")
	css = reEspacos.ReplaceAllString(css, " ")
	css = reSimbolos.ReplaceAllString(css, "$1")
	css = reDoisPontos.ReplaceAllString(css, ":")
	return strings.TrimSpace(strings.ReplaceAll(css, ";}", "}"))
}

Não protege textos entre aspas.

String minificarCss(String css) {
  return css
      .replaceAll(RegExp(r'/\*.*?\*/', dotAll: true), '') // comentários
      .replaceAll(RegExp(r'\s+'), ' ')
      .replaceAllMapped(RegExp(r'\s*([{};,>])\s*'), (m) => m[1]!)
      .replaceAll(RegExp(r':\s+'), ':')
      .replaceAll(';}', '}')
      .trim();
}

Não protege textos entre aspas.

public class Minificador {
    static String minificarCss(String css) {
        return css
            .replaceAll("(?s)/\\*.*?\\*/", "")     // remove comentários
            .replaceAll("\\s+", " ")                // colapsa espaços
            .replaceAll("\\s*([{};,>])\\s*", "$1")
            .replaceAll(":\\s+", ":")
            .replace(";}", "}")
            .trim();
    }
}

Não protege textos entre aspas.

<?php
function minificarCss(string $css): string {
    $css = preg_replace('#/\*.*?\*/#s', '', $css);      // remove comentários
    $css = preg_replace('/\s+/', ' ', $css);            // colapsa espaços
    $css = preg_replace('/\s*([{};,>])\s*/', '$1', $css);
    $css = preg_replace('/:\s+/', ':', $css);
    return trim(str_replace(';}', '}', $css));
}

Não protege textos entre aspas.

using System.Text.RegularExpressions;

static string MinificarCss(string css)
{
    css = Regex.Replace(css, @"/\*.*?\*/", "", RegexOptions.Singleline); // comentários
    css = Regex.Replace(css, @"\s+", " ");
    css = Regex.Replace(css, @"\s*([{};,>])\s*", "$1");
    css = Regex.Replace(css, @":\s+", ":");
    return css.Replace(";}", "}").Trim();
}

Não protege textos entre aspas.

Perguntas frequentes

A minificação pode quebrar meu código?

No CSS e no JS o risco é baixo, pois só removemos o que não tem efeito. Mesmo assim, teste o resultado antes de publicar.

Por que a economia em JavaScript é pequena?

Porque este modo é conservador: não renomeia variáveis nem junta linhas. Ferramentas como Terser e esbuild economizam bem mais.

Meu código é enviado para algum servidor?

Não. Tudo roda no seu navegador.

Veja também

Precisa de um sistema ou app sob medida?

A VcInova desenvolve software, aplicativos e integrações para empresas de todo o Brasil.

Fale com a VcInova