Unminify JS: Restaurar a Legibilidade de JavaScript Minificado
JavaScript minificado - o tipo entregue por todo bundler moderno sob nomes como bundle.min.js ou main.[hash].js - e uma unica linha densa com nomes de variavel de uma letra, sem espacos em branco e sem quebras de linha. Este guia percorre a viagem de tres minutos dessa forma compacta de volta para codigo indentado e quebrado em linhas que seus olhos conseguem ler. A ferramenta companheira em https://freetoolonline.com/developer-tools/js-unminifier.html roda o unminify inteiramente dentro do navegador, entao o codigo-fonte nunca sai da aba.
Ultima revisao: 2026-05-20
| Propriedade | Valor |
|---|---|
| Formato | Ferramenta online, sem instalar |
| Velocidade | No navegador; saida legivel em segundos |
| Privacidade | Codigo-fonte fica no dispositivo; nada sobe |
| Renomear variavel | Nao realizado - nomes de uma letra continuam de uma letra |
| Ferramenta implementadora | https://freetoolonline.com/developer-tools/js-unminifier.html |
O que o unminify de fato faz (e o que nao consegue fazer)
Unminify reverte a metade barata da minificacao: ele re-insere espaco em branco, quebras de linha e indentacao consistente, entao um bundle de uma linha vira codigo formatado e legivel. Ele NAO reverte a metade cara - o renomeador. Variaveis chamadas a, b, t no bundle minificado continuam chamadas a, b, t depois do unminify, porque os nomes originais foram descartados em tempo de build e nenhum source map foi preservado. Se um source map (arquivo .map ou comentario inline //# sourceMappingURL=) estiver disponivel, esse arquivo aponta para os simbolos originais e e o artefato certo a carregar - nao uma passada de unminify. O enquadramento para o leitor: unminify e a ferramenta certa para "tenho um bundle de terceiros e quero ler o que ele faz"; um source map e a ferramenta certa para "tenho meu proprio build e quero depurar simbolos originais".
Passo a passo de tres minutos
- Copie o bundle minificado. Abra o arquivo
.min.jsno seu editor ou na aba network do navegador (Response body), selecione tudo, copie. - Cole no editor. Abra https://freetoolonline.com/developer-tools/js-unminifier.html e cole no painel de entrada. Bundles longos - centenas de KB ou mais - funcionam, mas espere a passada de formatacao levar um ou dois segundos enquanto o parser caminha pela AST.
- Clique em Unminify. O painel da direita mostra a saida indentada. Copie o resultado de volta para seu editor ou salve como arquivo
.jslocal para leitura estilo grep.
Onde a saida desminificada ajuda e onde nao ajuda
Ler codigo de terceiros desminificado e util em tres situacoes concretas. Primeiro, triagem de vulnerabilidade - quando um CVE nomeia uma funcao dentro de um bundle de fornecedor, o unminify deixa voce localizar os pontos de chamada e ler o fluxo ao redor sem precisar montar o repo original. Segundo, confirmacao de comportamento - quando o comportamento de uma biblioteca muda entre versoes, comparar as versoes desminificadas mostra a diferenca muito mais rapido do que ler a forma densa de uma linha. Terceiro, verificacao de saida de build - quando seu proprio pipeline gera um bundle que misteriosamente carrega um polyfill duas vezes, a forma desminificada mostra os blocos IIFE duplicados num relance. Unminify nao ajudara quando o objetivo for os nomes semanticos originais; para isso, entregue o source map junto com o bundle e carregue-o no seu debugger.
O que e preservado, o que e perdido
Espaco em branco, quebras de linha e indentacao sao restaurados deterministicamente a partir da AST. Comentarios nao sao restaurados - o minificador os remove em tempo de build e nenhuma informacao fica no bundle para reconstrui-los. Estrutura de modulo (chamadas CommonJS require, declaracoes ESM import) e preservada como aparece na forma empacotada, que frequentemente e um wrapper gerado em vez do limite original do modulo. Otimizacoes em nivel de fonte como constant folding (5*60*60*1000 colapsado para 18000000) nao sao revertidas - unminify nao entende semantica, apenas sintaxe. Se um numero parece criptico na saida desminificada, procure-o no repositorio original ou adivinhe a unidade (milissegundos, bytes, indices).
Indo no sentido contrario?
Se voce chegou aqui buscando encolher JS para producao em vez de expandi-lo, a ferramenta companheira em https://freetoolonline.com/developer-tools/js-minifier.html faz a direcao direta (remocao de espaco em branco, encurtamento de identificador) e o guia de comparacao CSS Minifier vs Uglifier vs Tree-Shaking cobre como as tres transformacoes se empilham em um pipeline de build tipico. Para equivalentes do lado CSS, veja CSS Unminifier vs Prettier: Quando Usar Cada - a decisao do lado JS e similar: unminify ao ler saida de terceiros, source map ao depurar a sua propria.
Perguntas frequentes
O unminify recupera os nomes originais das variaveis?
Nao. Minificadores substituem identificadores por nomes sinteticos curtos em tempo de build e descartam os originais; a saida desminificada mantem os nomes sinteticos. Carregue o source map correspondente no debugger do seu navegador para ver os simbolos originais.
O codigo-fonte e enviado para algum lugar?
Nao. A passada de unminify roda inteiramente no seu navegador; o texto minificado nunca e enviado a um servidor. Feche a aba e a entrada se vai.
O unminify vai quebrar o JavaScript?
Nao. A transformacao e puramente cosmetica - espaco em branco, quebras de linha e indentacao. A AST nao muda, entao o codigo desminificado roda identicamente ao minificado original. Passe por um verificador de sintaxe se quiser uma confirmacao com cinto e suspensorio.
Qual e o limite de tamanho do arquivo?
Bundles de ate varios megabytes funcionam em navegadores modernos; o tempo da passada de formatacao cresce aproximadamente linear com o comprimento da entrada. Bundles muito grandes (10 MB+) podem travar a aba; nesse caso, divida o bundle por limite de closure e desminifique cada chunk separadamente.
Qual a diferenca entre unminify e prettier?
Unminify restaura formatacao legivel para codigo que foi deliberadamente compactado. Prettier (ou um formatador similar) impoe um guia de estilo escolhido sobre codigo ja legivel. Para um bundle de terceiros minificado, unminify primeiro; se voce entao quiser uma largura de indent ou estilo de aspas especifico, rode o prettier sobre a saida.