Beautifier JavaScript

Formate JS minificado ou desorganizado com indentação legível direto no navegador.

Descrição

Receber um arquivo JavaScript minificado sem o source map correspondente é um dos momentos mais frustrantes na vida de um desenvolvedor. Uma linha de oitenta mil caracteres onde vivem trezentas funções diferentes não é código — é uma sequência de caracteres que o interpretador da máquina entende mas o ser humano não consegue ler. Isso acontece com bibliotecas de terceiros, scripts de tracking e, não raramente, com o próprio código de um projeto quando o source map foi deletado ou nunca foi gerado.

O beautifier inverte esse processo: adiciona indentação, quebra expressões longas em múltiplas linhas e restaura a estrutura visual que o minificador descartou. Ele não recupera os nomes originais das variáveis — isso é impossível sem o source map — mas transforma `function a(b,c){if(b>c){return b}return c}` em algo com indentação de dois espaços e quebras de linha que o olho humano consegue escanear. Não é tão elegante quanto o original, mas é funcional para debugging.

Source maps são arquivos .map que estabelecem a correspondência entre o código minificado e o código original. Quando o browser encontra um source map (referenciado por um comentário `//# sourceMappingURL=` no fim do arquivo), as devtools mostram o código original durante o debug. A maioria dos bundlers modernos — Vite, webpack, Rollup — gera source maps automaticamente no modo de desenvolvimento. Em produção, porém, source maps costumam ser omitidos por segurança (para não expor a lógica original ao público) ou por desempenho (são arquivos grandes). É exatamente nesses casos que um beautifier online faz diferença.

Detalhamento técnico

Source maps: o elo perdido entre código minificado e original

  • Um arquivo source map (.map) é um JSON que mapeia cada posição no código minificado de volta ao arquivo e linha correspondente no código original. Sem ele, um stack trace que aponta para `bundle.min.js:1:38492` não diz absolutamente nada útil.
  • O comentário `//# sourceMappingURL=bundle.min.js.map` no final do arquivo minificado instrui o browser a carregar o source map. As devtools então exibem o código original, com os nomes reais de variáveis e funções, durante a sessão de debug.
  • Em desenvolvimento, os bundlers geram source maps automaticamente. Vite, webpack e Rollup têm opções dedicadas: `devtool: 'source-map'` no webpack, `build.sourcemap: true` no Vite.
  • Em produção, os source maps costumam ser omitidos por dois motivos: segurança (expõe a lógica interna ao público) e tamanho (um source map pode ser maior que o próprio bundle). A alternativa é subir source maps apenas para um servidor de monitoramento de erros como Sentry.
  • Quando o source map não existe e o código está minificado, o beautifier é o único recurso disponível. Ele não restaura os nomes originais, mas pelo menos torna o código estruturalmente legível.

Quando um beautifier é realmente indispensável

  • Bibliotecas de terceiros distribuídas sem source map: jQuery, scripts de analytics, widgets de chat, pixels de rastreamento. Esses arquivos chegam minificados e sem qualquer documentação de estrutura interna.
  • Debug de problemas em produção quando os source maps foram removidos do deploy por política de segurança da empresa. O erro aparece no log, mas o código minificado é ilegível.
  • Auditoria de segurança: quando você precisa entender o que um script de terceiro realmente faz antes de incluí-lo no seu site. O beautifier torna possível uma leitura rápida da lógica.
  • Código legado sem histórico de versionamento: arquivos .js antigos onde o source original foi perdido e só resta a versão minificada no servidor de produção.
  • Comparação de versões: quando você precisa entender o que mudou entre duas versões minificadas de uma biblioteca, um diff entre os arquivos beautificados é muito mais legível do que um diff entre as versões minificadas.

Guia da ferramenta

  • O que faz Recebe JavaScript minificado ou desorganizado e aplica quebras de linha/indentação para leitura.

  • Quando usar Debug rápido, inspeção de snippet e revisão antes de refatorar.

Exemplo de Código

Gerar source map com esbuild (CLI)
# Bundlar e minificar com source map externo
esbuild src/app.js \
  --bundle \
  --minify \
  --sourcemap \
  --outfile=dist/app.min.js

# Resultado:
# dist/app.min.js         (bundle minificado)
# dist/app.min.js.map     (source map externo)

# O arquivo minificado terá no final:
# //# sourceMappingURL=app.min.js.map

# Para source map inline (não recomendado em produção):
esbuild src/app.js --bundle --minify --sourcemap=inline --outfile=dist/app.min.js
Gerar source map com webpack (configuração)
// webpack.config.js
module.exports = {
  mode: 'production',
  entry: './src/app.js',
  output: {
    filename: 'bundle.min.js',
    path: __dirname + '/dist',
  },

  // 'source-map': arquivo .map separado (recomendado para produção)
  // 'eval-source-map': inline, apenas desenvolvimento
  // 'hidden-source-map': gera o .map mas não adiciona o comentário
  //   (útil para Sentry sem expor ao público)
  devtool: 'source-map',
};

// Para Vite, no vite.config.js:
// export default { build: { sourcemap: true } }

Entrada comum

function hello(){const x=1;if(x){console.log('ok');}}

Perguntas frequentes

Para que serve esta ferramenta?

Ela roda 100% no seu navegador: útil para validar, formatar ou converter dados no dia a dia de desenvolvimento.

Meus dados são enviados a algum servidor?

O processamento é feito localmente via JavaScript. Não armazenamos o conteúdo que você cola nas caixas de texto.

Posso usar em produção ou para dados reais?

Use por sua conta e risco. Para segredos (senhas, tokens), prefira ambientes controlados e políticas da sua empresa. E lembre sempre de revisar os conteúdos gerados. Nunca confie cegamente nas coisas que vê na internet.