Minificar JavaScript com Terser
Minifique seu JavaScript com Terser para reduzir o tamanho do arquivo e acelerar seu site.
Seu fonte fica no seu aparelho
Nada para apagar depois
Feito para código proprietário
Funciona em todo navegador moderno
Como funciona
- 1
Cole seu JavaScript
Um módulo, um script ou um trecho que você quer menor antes de publicar.
- 2
Confira o resultado
Compare tamanhos e leia os avisos antes de substituir qualquer coisa.
- 3
Copie a saída
Leve para uma saída de build, um template ou uma tag de script em linha.
Por que usar esta ferramenta
Renomeação local segura
Só são encurtados os vínculos cujas referências a ferramenta consegue ver todas, e é isso que mantém a saída funcionando.
Tamanhos antes e depois
A economia bruta ao lado do que ela vira depois da compressão, que é o número que importa.
Erros de sintaxe reportados
Entrada inválida diz onde falhou em vez de produzir saída que quebra no carregamento.
Comentários fora, diretivas dentro
Cabeçalhos de licença e `"use strict"` sobrevivem, porque tirá-los muda o comportamento ou viola uma licença.
Nada é enviado
O código é processado no seu navegador, então fonte proprietário nunca chega a um servidor.
Grátis e sem conta
Sem cadastro, sem marca d’água e sem limite de quanto você minifica.
A economia vem da renomeação, não de apagar espaços
Tirar espaços e comentários é a parte visível e a menor. A maior parte da redução num arquivo real vem do encurtamento: cada variável local, parâmetro e nome de função é substituído por um ou dois caracteres, então `calculateTotalPrice` vira `t` e uma base de código descritiva desaba. É aí também que vive todo o risco. Um minificador só consegue renomear um vínculo com segurança quando vê todos os lugares onde aquele vínculo é referenciado, o que acontece com tudo que tem escopo dentro de uma função. Ele não vê uma referência feita a partir de uma string, e são exatamente essas referências que quebram. Entender essa única distinção explica qualquer bug de minificação que você tenha chance de encontrar e diz onde olhar quando o código minificado falha e o original funciona.
O que não deve ser renomeado e por que a ferramenta não consegue saber
Os casos perigosos compartilham um formato: um nome escrito como texto num lugar que o minificador não lê como código. Acessar uma propriedade como `obj["someKey"]` enquanto a escreve `obj.someKey` em outro lugar significa que uma forma é renomeada e a outra não. Chaves de objeto que precisam casar com um payload JSON de uma API são o mesmo problema — renomeie a chave e a requisição para de casar com o servidor. Frameworks antigos de injeção de dependência leem nomes de parâmetro para decidir o que injetar, e é por isso que minificar uma aplicação AngularJS sem o passo de anotação foi um jeito famoso de quebrá-la por inteiro. Tudo que inspeciona `Function.name` ou o nome de uma classe em tempo de execução, incluindo certa lógica de serialização e log, tem a mesma exposição. A regra prática: nomes que cruzam uma fronteira — um payload de rede, um template, uma busca por string — precisam ser citados e deixados em paz.
Source maps tornam a saída depurável e podem vazar o seu código
Código minificado produz um stack trace apontando para a linha 1, coluna 48.000, o que é inútil. Um source map é a solução padrão: um arquivo separado mapeando posições da saída de volta ao original, para o navegador mostrar o código que você escreveu. Gere-os — a alternativa é depurar produção às cegas. O que vale planejar é onde o map fica. Um source map contém o seu código original, normalmente com os comentários que você removeu, e se ele estiver num caminho publicamente acessível referenciado por um comentário no fim do bundle, qualquer um pode baixá-lo e ler o seu código não minificado. Isso é aceitável em código aberto e é uma divulgação de fato em qualquer outro caso. A resposta usual é subir os maps para o seu serviço de rastreamento de erros e não servi-los publicamente, ou restringi-los a requisições autenticadas.
Minificação não é obfuscação e não protege nada
Vale dizer sem rodeios porque a crença é comum: encurtar nomes não esconde lógica. Código minificado é reindentado por qualquer formatador num passo e, mesmo sem os nomes, a estrutura, as strings, os endpoints de API e o algoritmo continuam intactos e legíveis. Quem quiser entender o seu código de cliente vai entender, e em minutos. Isso importa porque leva a erros reais — uma chave de API comitada num bundle supondo que a minificação a esconde, ou uma flag de funcionalidade verificada no cliente e tratada como controle de acesso. Se um código ou valor precisa ficar secreto, ele não pode chegar a um navegador de jeito nenhum; a única fronteira confiável é o seu servidor. Obfuscadores deliberados existem, aumentam um pouco o esforço com custo sério em tamanho e velocidade, e não mudam essa conclusão.
A compressão no fio faz quase tudo que se atribui à minificação
Enquadrar minificação como economia de banda está uma década atrasado, porque hoje tudo é servido com gzip ou brotli, e esses algoritmos são excelentes justamente no que a minificação remove. Espaços repetidos e identificadores longos repetidos comprimem a quase nada, então um arquivo minificado e um formatado muitas vezes diferem bem menos depois da compressão do que antes — por isso o tamanho que importa é o comprimido, e por isso esta ferramenta mostra os dois. A minificação ainda ganha o seu lugar por duas outras razões: menos fonte é menos para o navegador analisar e compilar antes de qualquer coisa rodar, o que é mensurável no celular, e os bytes também são menores antes da compressão. Mas se você está escolhendo onde investir esforço em tamanho de bundle, remover código não usado ganha do encurtamento de nomes com folga.
Por que minificar localmente importa neste tipo de texto
A entrada de um minificador é código-fonte, e código-fonte é o que uma empresa menos pretende publicar. Ele carrega os endereços dos seus endpoints, os nomes internos de funções e módulos, os comentários explicando para que serve uma gambiarra, de vez em quando uma chave que não deveria estar ali, e a estrutura de um sistema que custou esforço real para projetar. Colar um arquivo proprietário num minificador hospedado envia tudo isso a um terceiro em troca de uma redução de tamanho que você poderia ter localmente. Esta ferramenta processa o código na página e não transmite nada, o que você confere na aba Rede das ferramentas de desenvolvedor — e para o único tipo de texto que é literalmente propriedade intelectual do seu empregador, esse é o padrão sensato.
Erros comuns que vale evitar
- Misturar `obj.someKey` e `obj["someKey"]` para a mesma propriedade. Uma forma é renomeada e a outra não, então as duas param de se referir à mesma coisa após a minificação.
- Renomear chaves que precisam casar com um payload de rede. Chaves de objeto enviadas a uma API ou recebidas dela são casadas como strings pelo servidor — cite-as para o encurtador não tocar.
- Depender de nomes de parâmetro ou função em tempo de execução. Injeção por nome de parâmetro e lógica que lê `Function.name` quebram, porque esses nomes são exatamente o que o encurtamento substitui.
- Publicar source maps num caminho público. Um source map contém o seu código original, comentários removidos incluídos — suba para o seu rastreador de erros em vez de servi-lo ao lado do bundle.
- Tratar minificação como proteção. Código minificado reindenta num passo e strings, endpoints e o algoritmo continuam legíveis, então nada secreto pode ir para um navegador.
Comparação
| Item | Esta ferramenta | Minificadores online | Um pipeline de build |
|---|---|---|---|
| Fonte enviado a um servidor | Nunca | Geralmente sim | Não |
| Tamanho comprimido mostrado | Sim | Raramente | Com um plugin |
| Precisa de configuração | Nenhuma | Nenhuma | Configuração |
| Remove código não usado | Não | Não | Sim |
| Conta ou cadastro | Não precisa | Às vezes exigido | Não precisa |
| Preço | Grátis | Grátis / planos pagos | Grátis |
Recursos
Encurtamento de identificadores
Nomes de variáveis e funções locais encurtados, de onde vem a maior parte da redução.
Remoção de espaços e comentários
Tudo que o parser ignora é descartado, incluindo as quebras que tornam o arquivo legível.
Medição ciente da compressão
O tamanho minificado e o comprimido, já que só o segundo chega ao usuário.
Sintaxe moderna suportada
Classes, arrow functions, template literals, encadeamento opcional e sintaxe de módulos são entendidos.
Aguenta arquivos grandes
Bundles inteiros minificam sem upload nem teto de tamanho.
Formatação reversa
Também um modo de embelezar, porque ler código minificado de terceiros é uma necessidade comum.
Nada para instalar
Sem ferramenta de build, sem runtime, sem dependências — funciona na página web.
Compatível com árabe e RTL
Interface completa em oito idiomas, incluindo árabe da direita para a esquerda.
Seguro por padrão
Servido por HTTPS, sem rastreio de conteúdo e sem envio a terceiros.
Quem usa
Desenvolvedores front-end
Reduzir um script isolado que não passa por um passo de build.
Engenheiros de performance web
Comparar tamanhos minificado e comprimido para ver onde a economia está de fato.
Quem lê código de terceiros
Usar o sentido de embelezar para deixar uma biblioteca minificada legível o bastante para acompanhar.
Quem embute um script
Baixar um trecho pequeno a um tamanho razoável para colocar numa página.
Perguntas Frequentes
Não. Tudo roda localmente no seu navegador — seu texto nunca é enviado, armazenado ou compartilhado.
Sim — totalmente grátis, sem conta e sem limites.