Minificador de JS
Minifique JavaScript usando o Terser — o mesmo motor que as principais ferramentas de build usam. Remove espaços em branco e comentários, e opcionalmente ofusca nomes de variáveis, para produzir uma saída menor e ainda válida, inteiramente no seu navegador.
- Os arquivos nunca saem do seu dispositivo
- Grátis, sem cadastro
- Sem marcas d'água
- Funciona offline depois de carregado
Como minificador de js
- 1
Cole seu código
Solte qualquer arquivo ou trecho de JavaScript válido.
- 2
Escolha suas opções
Mantenha a ofuscação de variáveis ligada para a menor saída possível, ou desligue se precisar ler o resultado.
- 3
Copie o resultado
Copie o código minificado, junto com o tamanho economizado.
O que a minificação realmente faz por baixo dos panos
Remover espaços em branco e comentários é a parte fácil e óbvia da minificação — e sozinha ela quase não move o ponteiro em código bem escrito. A verdadeira redução de tamanho vem de duas transformações mais profundas: a ofuscação (mangling), que renomeia cada variável local e argumento de função para o identificador mais curto possível (`acumulador` vira `a`, `resultadoTemporario` vira `t`), e a eliminação de código morto, que remove ramificações e expressões que uma análise estática do código consegue provar que nunca vão executar ou nunca afetam a saída. As duas exigem realmente entender a estrutura do código — seus escopos, quais nomes são locais versus exportados, quais ramificações são comprovadamente inalcançáveis — que é por isso que uma ferramenta real baseada em analisador como o Terser produz uma saída significativamente menor do que um simples buscar-e-substituir em espaços em branco jamais conseguiria.
Por que a maioria dos desenvolvedores raramente mexe em um minificador avulso hoje em dia
Bundlers como Webpack, esbuild, Rollup e Vite minificam sua saída automaticamente como parte de um build de produção, quase sempre usando o Terser ou um motor compatível com o Terser por baixo dos panos — então, para qualquer pessoa trabalhando dentro de um projeto JavaScript moderno, a minificação já acontece de forma invisível toda vez que roda um comando de build. Uma ferramenta avulsa como esta cobre os casos que ficam fora desse pipeline: uma única tag de script sem processo de build, uma verificação rápida de quanto um trecho encolheria, ou um arquivo avulso que precisa ser comprimido sem trazer uma configuração inteira de bundler só para isso.
O inverso da formatação, não um substituto para ela
Minificar e formatar são operações opostas sobre o mesmo código: esta ferramenta remove os espaços em branco, a estrutura e a legibilidade que um formatador como o Prettier adiciona propositalmente de volta. Sua ferramenta irmã, o Formatador de JavaScript, desfaz exatamente o que esta faz — útil para a direção reversa, pegando um arquivo minificado que alguém te passou e transformando-o de volta em algo legível o suficiente para realmente depurar.
Um pipeline de build real normalmente combina minificação com um source map — um arquivo separado que mapeia cada posição na saída minificada de volta para sua linha original no código-fonte, especificamente para que um depurador ainda consiga mostrar código legível e números de linha corretos em produção, apesar do arquivo que realmente roda ser ilegível. Esta ferramenta avulsa intencionalmente não gera um, já que é feita para uma redução rápida e pontual em vez de uma implantação de produção; qualquer coisa que for para um pipeline de build real deveria passar por um bundler que emite um source map correspondente junto.
Perguntas frequentes
Meu código é enviado para um servidor?
Não. O Terser é baixado para o seu navegador e roda ali — a minificação acontece inteiramente no seu dispositivo. Código proprietário ou interno nunca sai da sua máquina, o que não é verdade para todo minificador online.
A minificação pode quebrar meu código?
Não quando feita corretamente — o Terser analisa seu código em uma árvore de sintaxe real em vez de comparar padrões de texto, então a saída transformada se comporta de forma idêntica ao original na grande maioria dos casos. O único caso extremo genuíno: código que inspeciona seu próprio código-fonte em tempo de execução, por exemplo chamando `Function.prototype.toString()` em uma função e analisando o resultado, ou dependendo do nome de uma variável ou função como string (alguns padrões de injeção de dependência fazem isso). A ofuscação renomeia coisas, então esse tipo de introspecção pode ver nomes diferentes depois da minificação. É raro, mas vale saber se o seu código faz algo incomum com reflexão.
A saída minificada ainda é JavaScript válido e executável?
Sim. A saída é JavaScript comum — só mais curto. Você pode colocá-la direto em uma tag `<script>` ou em uma saída de build exatamente como faria com o arquivo original.
Quando eu realmente deveria usar isso?
Para pacotes de produção, um script embutido em algum lugar com restrição de tamanho (uma extensão de navegador, um snippet de rastreamento, um widget com limite de tamanho), ou um arquivo avulso que você precisa reduzir rapidamente sem configurar um processo de build. Você não minificaria seu código-fonte ou arquivos de desenvolvimento — mantenha-os legíveis, e minifique só a saída final do build, da mesma forma que um bundler faria.
Por que a saída parece ilegível?
Esse é o objetivo. Espaços em branco, comentários e nomes de variáveis longos existem para humanos lendo o código-fonte, não para o motor JavaScript que o executa. Removê-los (e encurtar nomes, se a ofuscação estiver ativada) reduz o número de bytes enviados pela rede sem mudar o que o código faz.
Você também pode precisar
Formatador de JavaScript
Formate JS e TypeScript com um analisador real
Minificador de CSS
Reduza folhas de estilo com um minificador de verdade, consciente de CSS
Formatador de JSON
Formate, valide e minifique JSON instantaneamente
Codificador e decodificador Base64
Codifique e decodifique Base64 e Base64URL
Formatador de CSS
Embeleze ou minifique folhas de estilo
Gerador de hash
MD5, SHA-1, SHA-256, SHA-384 e SHA-512
Formatador de HTML
Embeleze e indente HTML corretamente
Decodificador de JWT
Decodifique e inspecione JSON Web Tokens