Formatador de Código: SQL, XML, YAML, HTML, CSS e JS

Formate e minifique JavaScript, CSS, HTML, XML, SQL e YAML sem mudar o que o código faz. Cada linguagem diz na tela o que a operação garante. Tudo no seu navegador.

Revisão técnica: Cesar Gargiulo (segurança da informação)
Valim, o mascote do ValorFinal, representando a categoria Tecnologia

Formatação e minificação 100% locais no navegador. O código não é executado em nenhum momento: ele é lido caractere por caractere como texto, e nada é enviado para servidor.

Ao formatar JavaScript

Reindenta por bloco. Texto, template e expressão regular ficam intactos, porque a leitura é por tokens e não por substituição de espaço. Onde a quebra de linha decide o ponto e vírgula automático, ela fica.

Ao minificar JavaScript

Remove comentário e espaço. Só junta duas linhas quando dá para PROVAR que juntar não muda o programa: depois de return, throw, break, continue e yield a quebra fica, senão o ponto e vírgula automático entraria e o código passaria a devolver outra coisa.

0 caracteres · 0 linhas · limite 100.000

O que a minificação faz com cada exemplo

Deslize a tabela para o lado: são 5 colunas.

Tamanho de cada exemplo da ferramenta antes e depois de minificar, e o que o motor manteve de propósito
LinguagemExemplo da ferramentaCaracteresMinificadoMantido de propósito
JavaScriptreturn com quebra de linha17886 (52% menor)2 quebras de linha mantidas, uma delas a do return
CSScalc e url com ponto e vírgula154128 (17% menor)1 comentário de licença preservado
HTMLconteúdo misto e pre9976 (23% menor)1 espaço encostado em texto preservado
XMLCDATA e entidade162146 (10% menor)1 bloco CDATA intacto
SQLpalavra-chave dentro de texto170146 (14% menor)1 texto entre aspas intacto
YAMLbloco literal e indentação de 4128recusadotudo: YAML não tem minificação

Calculado pelo motor desta página sobre os exemplos de um clique. Carregue o exemplo na ferramenta e clique em Minificar para conferir o mesmo número.

Em resumo

O formatador reindenta e minifica 6 linguagens (JavaScript, CSS, HTML, XML, SQL e YAML) no seu navegador, até 100.000 caracteres por vez. O código é lido como texto: nada é executado, e o que você cola não sai do aparelho. Formatar mexe só no espaço entre os pedaços do código, e onde esse espaço tem significado ele fica. No exemplo de JavaScript, a minificação leva o arquivo de 178 para 86 caracteres e mantém 2 quebras de linha que o motor não consegue provar que podem sair. Uma delas é a do return: juntar essa linha com a de baixo faria a função devolver um objeto em vez de undefined, pela regra de inserção automática de ponto e vírgula da ECMA-262, a especificação do JavaScript.

Em CSS, o espaço de :hover, de [href] e do and de uma media query sai como veio. Em HTML, texto com negrito no meio não ganha quebra de linha nova, porque quebrar ali poria um espaço a mais na tela. YAML não tem minificação: lá o espaço é a estrutura do documento, e a ferramenta recusa em vez de devolver um arquivo que mudou de sentido. Para o build de produção, Terser e esbuild comprimem mais, porque renomeiam variáveis.

Outras ferramentas de código e expressões

  • Testador de regexTeste expressões regulares contra qualquer texto diretamente no navegador. Veja todos os matches, índices e grupos capturados. Suporta flags g, i, m, s, u, y. Processamento 100% local.
  • Interpretador de cronInterprete expressões cron em linguagem natural e veja as próximas execuções estimadas. Suporta os 5 campos padrão: minuto, hora, dia do mês, mês e dia da semana. Processamento 100% local.
  • Comparador de textoCompare dois textos, JSON ou trechos de código no navegador e veja linhas adicionadas, removidas e alteradas. Ignora espaços e maiúsculas. 100% local.
  • Editor de MarkdownEscreva Markdown e veja a prévia no navegador, com contagem de palavras, títulos e links, e download em .md. A prévia é segura, sem HTML bruto. 100% local.
  • Teste de velocidadeMeça download, upload, ping, jitter e a latência com a rede cheia. Veja se a conexão aguenta chamada de vídeo, 4K e jogo online, e quanto do plano contratado chegou.
  • Cronômetro onlineCronômetro online com centésimos e voltas: parcial, total, a volta mais rápida e a mais lenta, cópia para planilha e CSV, tela cheia e atalhos de teclado. Mede pelo relógio interno do navegador e não atrasa com a aba em segundo plano.

Todas as ferramentas, por tarefa, estão em ferramentas de tecnologia online.

Gostou? Mostre pra todo mundo

Gere um card bonito com a marca do ValorFinal para postar nos Stories ou mandar no WhatsApp. Nada que você digitou aparece no card.

Coloque no seu site

Cole o código, escolha a linguagem e clique em Formatar para indentar ou Minificar para reduzir o tamanho. O contrato de cada operação aparece na tela antes do resultado, porque formatar e minificar não garantem a mesma coisa em todas as linguagens.

Como funciona a ferramenta

Cada linguagem tem um analisador léxico próprio que quebra o texto em tokens (texto literal, comentário, template, expressão regular, número, identificador, pontuação) antes de qualquer decisão. É isso que faz a ferramenta não se perder com uma barra dupla dentro de uma URL, com uma chave dentro de um template literal ou com um ponto e vírgula dentro de um url() de CSS.

O cuidado com o JavaScript. A linguagem insere ponto e vírgula automaticamente quando encontra uma quebra de linha em certos lugares, e a especificação chama isso de produção restrita. Depois de return, throw, break, continue e yield, e antes de ++ e --, a quebra MUDA o programa. Um minificador que junta linhas sem saber disso troca o resultado do seu código. Aqui a regra é o contrário do otimismo: a linha só é juntada quando o token anterior comprovadamente não pode terminar uma instrução, ou o próximo comprovadamente não pode começar uma. A formatação usa a mesma prova, então código sem ponto e vírgula continua com uma instrução por linha. Quantas quebras foram mantidas aparece junto do resultado.

O cuidado com o seletor de CSS. Em div :hover, o espaço é o combinador de descendente, e sem ele o seletor passa a escolher outra coisa. Em @media screen and (min-width: 600px), sem o espaço antes do parêntese o bloco inteiro deixa de valer. Por isso, no seletor e no começo de uma regra arroba, o espaço só é encolhido para um, nunca criado nem apagado, exceto em volta da vírgula e dos combinadores, onde a especificação diz que ele não conta.

Para dados estruturados, combine com o formatador de JSON e o conversor de dados. Para comparar a versão formatada com a original, linha a linha, use o comparador de texto.

Método

Não há cálculo. Há um contrato por linguagem e por operação, visível na própria ferramenta. Em resumo:

  • Formatar só mexe no espaço entre os tokens, e só onde esse espaço não tem significado.
  • Minificar JavaScript remove comentário e espaço e junta linha apenas com prova de segurança.
  • Minificar CSS mantém o espaço obrigatório dentro de calc, min, max e clamp, onde o operador exige espaço dos dois lados, o espaço que é combinador no seletor e o comentário de licença.
  • Minificar marcação remove espaço entre tags de bloco, nunca o espaço que encosta em texto ou que separa dois elementos de frase.
  • YAML não tem minificação. Retirar espaço ali é mudar o documento.

Base: ECMA-262 (a regra de inserção automática de ponto e vírgula), a especificação de sintaxe e de seletores do CSS, o padrão HTML do WHATWG, XML 1.0 do W3C, SQL:92 e a especificação do YAML 1.2. Leitura e escrita por analisador léxico próprio, no navegador.

Limitações

  • A minificação de JavaScript não renomeia variável nem remove código morto. Para o build de produção, use Terser ou esbuild.
  • Uma barra logo depois de um fecha-parêntese é lida como divisão. É o único caso conhecido em que a leitura sem a gramática inteira pode errar, e quando a expressão regular não fecha na mesma linha a ferramenta volta atrás sozinha.
  • Em HTML, elemento com texto ou com elemento de frase dentro (negrito, link, span) sai inteiro, como veio, sem ser reindentado por dentro. É o preço de não pôr espaço a mais na tela.
  • YAML com âncora, marca de tipo, diretiva ou vários documentos é recusado com explicação, em vez de reindentado no escuro.
  • A ferramenta organiza, não valida. Ela não diz se o seu SQL roda, se o seu HTML é válido nem se o seu CSS tem propriedade inexistente.
  • Limite de 100.000 caracteres por vez.

Guia completo

Formatador de código online: quando usar SQL, XML, YAML, HTML, CSS e JS

Entenda o que faz um formatador de código, a diferença entre formatar, validar e minificar, quando usar em SQL, XML, YAML, HTML, CSS e JavaScript, e os cuidados ao colar código sensível em ferramentas online.

Coloque esta ferramenta no seu site, de graça

Tem site, blog ou loja virtual? Esta ferramenta tem uma versão para incorporar: você copia um código e cola no seu HTML. Sem cadastro, sem mensalidade e sem limite de acessos, e ela roda no navegador de quem visita o seu site.

Formatador de código para sitever todas as ferramentas para site

Calculadoras relacionadas

Guias sobre este tema

ValorFinal VIP: Sem anúncios, até 500 cenários salvos e comparação de cenários lado a lado.

Ferramenta transparente, com o método explicado

Atualizado em . Fontes: MDN Web Docs / especificações de cada linguagem.

Processamento local: esta ferramenta roda no seu navegador e nada é enviado a servidores automaticamente.

Como validamos

Referências técnicas

Links externos para o que foi consultado na construção desta página, com a natureza de cada fonte identificada. O conteúdo delas pode mudar sem aviso; em caso de divergência, vale sempre a fonte primária.

Incorpore esta calculadora no seu site (grátis)

Copie e cole o código no seu site. A calculadora se atualiza sozinha. O crédito ao ValorFinal vem junto do código e a gente agradece quem mantém, mas ele é opcional: pode remover sem perder o widget. O link sai com rel="nofollow", ou seja, não transfere autoridade de busca para a gente.

Perguntas frequentes

Quais linguagens este formatador suporta?

JavaScript, CSS, HTML, XML, SQL e YAML. Para cada uma há duas operações, formatar e minificar, e cada par tem um contrato escrito na tela dizendo exatamente o que é garantido e o que não é. O JSON tem ferramenta dedicada, o formatador e validador de JSON, porque ali o cuidado com número grande e chave repetida exige um leitor próprio. Python não está na lista: nele, como no YAML, o recuo é a própria estrutura do código, e mexer no recuo sem entender a linguagem muda o programa.

A minificação pode mudar o que o meu JavaScript faz?

Não. O JavaScript insere ponto e vírgula sozinho em certas quebras de linha, e uma função com return numa linha e o valor na linha de baixo devolve undefined. Juntar as duas linhas faria a função devolver o valor, e a ferramenta mudaria o programa. Por isso o código é lido em tokens, e duas linhas só são juntadas quando dá para provar que juntar não muda nada. Depois de return, throw, break, continue e yield a quebra sempre fica. A formatação segue a mesma regra.

Por que a minificação de JavaScript comprime menos que o Terser?

Porque ela é conservadora de propósito. Ela remove comentário e espaço, que é a maior parte do peso, e junta o que é seguro juntar, mas não renomeia variável, não remove código morto e não reordena nada, porque isso exigiria entender a gramática inteira do JavaScript e o risco de errar é alterar o seu programa. Para o build de produção, use Terser ou esbuild na sua esteira. Esta ferramenta é para inspecionar, limpar e comparar rápido, sem instalar nada.

O código que eu colo é enviado para algum servidor?

Não. Tudo acontece no seu navegador. O código não é transmitido, não é salvo e não entra em log nem na URL. Depois que a página carrega, a ferramenta funciona sem conexão, e dá para conferir na aba de rede do navegador: nenhuma requisição leva o que você colou. A única que a ferramenta dispara é o registro de uso da estatística do site, uma vez por visita, com o endereço da página e nada do conteúdo.

O formatador executa o meu código?

Nunca. O texto é lido caractere por caractere como texto. Nenhum JavaScript é interpretado, nenhum SQL é enviado a banco, nenhuma entidade externa de XML é resolvida e nenhuma requisição sai da página por causa do que você colou. É também por isso que ele não valida: saber se uma consulta roda exigiria mandá-la a um banco de dados, e saber se um script funciona exigiria executá-lo.

Por que o YAML às vezes é recusado em vez de formatado?

Porque em YAML o espaço em branco é a estrutura, e há construções que não dá para reindentar com segurança: âncora e alias, marca de tipo, diretiva, vários documentos no mesmo arquivo e chave complexa. Nesses casos a ferramenta devolve o conteúdo sem alterar e explica o motivo. Tabulação no recuo também é recusada, porque o YAML não aceita tabulação para indentar. O resto é normalizado para dois espaços por nível, e bloco literal não é tocado.

O que acontece com o conteúdo de pre, textarea, CDATA e comentário?

Nada. Em HTML, o conteúdo de pre, textarea, script e style sai byte a byte, com o fechamento colado no texto. Em XML, CDATA, comentário e instrução de processamento saem inteiros, e entidade não é expandida. Elemento com texto dentro, como um parágrafo com negrito no meio, sai inteiro, sem quebra de linha nova, porque quebrar ali poria um espaço a mais na tela. Na minificação, o espaço entre duas tags de bloco sai; o que encosta em texto ou separa dois elementos de frase fica.

O SQL pode ter palavra-chave dentro de um texto?

Pode, e é por isso que a leitura é por tokens. Em WHERE nome igual a 'pedro from silva', o from que está dentro das aspas não é palavra-chave: é parte do nome de alguém. O mesmo vale para comentário, para identificador entre aspas duplas (padrão e PostgreSQL), entre crase (MySQL) e entre colchetes (SQL Server). Nada disso é reescrito. Operador de dois caracteres, como <=, <>, != e o :: do PostgreSQL, também é lido como uma peça só.

Qual dialeto de SQL é suportado?

O núcleo comum de consulta do SQL:92 mais o que PostgreSQL, MySQL, SQLite e SQL Server compartilham. O que é próprio de um dialeto é reconhecido e preservado, nunca reescrito: parâmetro com dois pontos, arroba, cifrão ou interrogação, texto com cifrão duplo do PostgreSQL e os operadores de JSON. A ferramenta não valida a consulta, não entende procedimento armazenado e não reescreve nada: ela organiza o que você escreveu.

Como formatar XML ou SQL online?

Escolha a aba XML ou SQL, cole o código no campo e clique em Formatar. O resultado aparece embaixo, com Copiar e Baixar, e o arquivo sai com a extensão da linguagem. No XML, cada elemento que só contém outros elementos ganha uma linha e dois espaços de recuo por nível; elemento com texto sai inteiro, como veio. No SQL, cada cláusula (SELECT, FROM, WHERE, JOIN, ORDER BY) começa numa linha nova e as palavras-chave vão para maiúscula, sem tocar no que está entre aspas.

O que são as caixas "Ao formatar" e "Ao minificar"?

São o contrato da operação, e aparecem antes de você clicar. Cada linguagem tem o seu: em CSS, minificar mantém o espaço obrigatório dentro de calc; em HTML, mantém o espaço que separa palavras na tela; em YAML, a caixa já avisa que minificar não existe. O texto muda quando você troca de aba, porque formatar e minificar não garantem a mesma coisa em JavaScript, em CSS e em YAML, e a ferramenta prefere dizer isso antes de você usar o resultado.

O que significam o selo "% menor" e o aviso azul do resultado?

O selo compara o tamanho do resultado minificado com o do texto que você colou, em porcentagem arredondada. No exemplo de JavaScript da ferramenta, 178 caracteres viram 86, e o selo mostra 52% menor. O aviso azul diz o que o motor manteve de propósito: quantas quebras de linha ficaram porque juntar poderia mudar o código, quantos comentários de licença continuaram ou quantos espaços que encostavam em texto não saíram.