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.

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.
| Linguagem | Exemplo da ferramenta | Caracteres | Minificado | Mantido de propósito |
|---|---|---|---|---|
| JavaScript | return com quebra de linha | 178 | 86 (52% menor) | 2 quebras de linha mantidas, uma delas a do return |
| CSS | calc e url com ponto e vírgula | 154 | 128 (17% menor) | 1 comentário de licença preservado |
| HTML | conteúdo misto e pre | 99 | 76 (23% menor) | 1 espaço encostado em texto preservado |
| XML | CDATA e entidade | 162 | 146 (10% menor) | 1 bloco CDATA intacto |
| SQL | palavra-chave dentro de texto | 170 | 146 (14% menor) | 1 texto entre aspas intacto |
| YAML | bloco literal e indentação de 4 | 128 | recusado | tudo: 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.
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,maxeclamp, 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.
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
Cores HEX, RGB e HSL
Entenda os formatos de cor HEX, RGB e HSL, como converter entre eles, como calcular contraste para acessibilidade e como usar cores com mais consistência em interfaces web, com exemplo prático.
O que é Markdown
Aprenda o que é Markdown, onde ele é usado (README, GitHub, docs, blogs e wikis), a sintaxe básica de títulos, listas, links, tabelas e blocos de código, e quando vale visualizar a prévia.
Comparar textos e JSON
Entenda como comparar textos, JSON e trechos de código, o que significam linhas adicionadas, removidas e alteradas, quando ignorar espaços e maiúsculas, e como evitar erros em revisão técnica.
Converter CSV, JSON, YAML, XML
Veja quando usar CSV, JSON, YAML e XML, como converter entre os formatos sem perder dados, e os cuidados com delimitadores, cabeçalhos, aspas, arrays e estruturas aninhadas.
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.
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.