Formatador de SQL

Cole SQL e ele se organiza — strings e comentários permanecem intactos.

Como usar

  1. Cole seu SQL na caixa — ele é formatado enquanto você digita, sem botão para clicar.
  2. Escolha maiúsculas ou minúsculas para as palavras reservadas e 2 ou 4 espaços de indentação; o resultado é atualizado imediatamente.
  3. Confira a contagem de linhas e copie o resultado ou baixe-o como arquivo .sql.

Exemplo

Entrada

select u.id, u.nome, count(o.id) as pedidos
from usuarios u left join pedidos o on o.usuario_id = u.id
where u.ativo = 1 and o.criado_em >= '2026-01-01'
group by u.id, u.nome order by pedidos desc limit 10;

Formatado

SELECT
  u.id,
  u.nome,
  count(o.id) AS pedidos
FROM usuarios u
LEFT JOIN pedidos o
  ON o.usuario_id = u.id
WHERE u.ativo = 1
  AND o.criado_em >= '2026-01-01'
GROUP BY
  u.id,
  u.nome
ORDER BY
  pedidos DESC
LIMIT 10;

Apenas as regras padrão: cada cláusula começa uma linha, os itens de lista recebem dois espaços e o AND é indentado. count(...) é nome de função, então mantém as minúsculas que você digitou; a string de data fica intacta.

Regras, limites e problemas conhecidos

  • Este é um formatador de espaços em branco: ele não analisa, valida nem executa SQL. SQL inválido ainda é organizado.
  • Não há seletor de dialeto. Aspas simples, aspas duplas, crases, colchetes e strings $tag$ são reconhecidos, então SQL de MySQL, PostgreSQL, SQL Server e SQLite pode ser colado como está.
  • Apenas palavras reservadas têm a caixa alterada. Nomes de função, nomes de tipo (count, int, varchar) e identificadores entre aspas são impressos exatamente como digitados; coloque identificadores entre aspas se seu banco diferenciar maiúsculas.
  • Strings, números e comentários nunca são reescritos. Um comentário -- força uma quebra de linha, e comentários nunca são removidos. Não há modo de minificação.
  • O resultado tem realce de sintaxe (palavras-chave, identificadores, strings, números, comentários) para facilitar a leitura da estrutura. O realce é apenas visual: Copiar e Baixar sempre produzem o texto formatado simples.
  • As quebras de linha ocorrem apenas nos limites de cláusula, lista, CASE, subconsulta, janela e coluna de DDL. Argumentos de função e listas IN (...) ficam em uma linha; linhas longas quebram visualmente no painel, enquanto Copiar e Baixar mantêm o texto exato sem quebra.
  • As strings são lidas com escapes '' e \'. Uma string SQL padrão que termina com contrabarra, como 'C:\', pode ser lida como não fechada: você recebe um aviso e sua entrada permanece intacta.
  • Sem procedures armazenadas, DELIMITER ou blocos PL/SQL; sem upload de arquivo, parâmetros de URL ou histórico. Tudo roda no seu navegador: nada é enviado ou armazenado.
  • Acima de 200.000 caracteres o resultado é atualizado cerca de 0,6 s depois de você parar de digitar; o texto nunca é truncado. A saída usa LF e não termina com quebra de linha; a formatação é idempotente.

O que as pessoas costumam precisar depois que a consulta está legível.