Formatador, validador e minificador de JSON
Cole o JSON e ele é reformatado enquanto você digita. Se não der para analisar, você recebe a linha e a coluna onde o analisador desistiu, que costuma ficar alguns caracteres depois do erro de verdade. A entrada válida também passa por uma checagem dos dois problemas que o analisador deixa passar sem reclamar e que ainda assim fazem estrago: chaves duplicadas e inteiros grandes demais para o JavaScript.
Dois espaços é o padrão na maioria dos guias de estilo. Minifique tudo o que for trafegar pela rede.
Formatar é uma viagem de ida e volta, não um retoque cosmético
Esta ferramenta não acrescenta quebras de linha ao seu texto. Ela analisa o JSON até virar um valor e imprime esse valor de novo. Tudo o que não fazia parte dos dados some no caminho, o que quase sempre é o que você quer e de vez em quando é uma surpresa.
- Os comentários desaparecem — porque eles nunca chegaram a ser analisados. JSON não tem comentários, então um arquivo que os contém não é JSON e o que você recebe é um erro.
- Os números são normalizados.
1.0volta como1,1e3como1000, e0.30000000000000004como ele mesmo. A forma escrita não é preservada, só o valor. - As chaves que parecem índices de array mudam de lugar.
{"2":"b","1":"a"}é reimpresso como{"1":"a","2":"b"}. Essa é uma regra dos objetos do JavaScript, não do JSON, e é a única reordenação que você não consegue desligar aqui. - Os escapes são reescritos.
\u0041viraA, e uma tabulação literal dentro de uma string vira\t.
A gramática inteira, em uma lista só
JSON é minúsculo de propósito, e é por isso que tanta coisa que parece JSON não é. A lista completa do que é permitido: objetos, arrays, strings entre aspas duplas, números, true, false e null. Só isso. Rejeitado explicitamente:
- Vírgulas sobrando depois do último elemento ou membro.
- Strings entre aspas simples e chaves de objeto sem aspas.
- Comentários
//e/* */. NaN,Infinity, números hexadecimais, zeros à esquerda e um+inicial.- Um número com o ponto decimal solto de qualquer um dos lados:
.5e5.são inválidos os dois, enquanto0.5e5.0estão certos.
Desde a RFC 8259 o nível mais alto pode ser qualquer valor, não só um objeto ou um array, então um documento que contém apenas 42 é JSON válido. Analisadores antigos discordam. Se você está gerando saída para algo antigo, envolva o valor.
Os números são onde o JSON mente baixinho
A especificação não põe limite no tamanho nem na precisão de um número. O JavaScript põe: todo número é um ponto flutuante de 64 bits, então os inteiros acima de 9.007.199.254.740.991 não podem ser todos representados. Analise 9007199254740993 e o que volta é 9007199254740992, sem erro nenhum em lugar nenhum.
Onde isso dói mais é nos identificadores. IDs de banco de dados, snowflakes do Discord e timestamps em nanossegundos cruzam essa linha o tempo todo, e é por isso que APIs bem projetadas mandam IDs grandes como strings. A ferramenta varre a sua entrada em busca de literais inteiros que mudam quando o JavaScript os lê e diz quais são. Ela não consegue consertá-los: quando o valor existe, os dígitos já se perderam. Se você vir esse aviso, trate a saída formatada como insegura para colar de volta em qualquer coisa que importe.
Chaves duplicadas são analisadas sem reclamação e não significam nada
A RFC 8259 diz que os nomes dentro de um objeto DEVERIAM ser únicos e deixa o comportamento indefinido quando não são. Na prática o JavaScript fica com o último, o Python fica com o último, e algumas configurações de Go e de Java levantam um erro. Um arquivo de configuração com "timeout" duas vezes é, portanto, um bug de verdade que a maioria das ferramentas nunca vai mencionar. Esta aqui lê o texto cru antes de a análise jogar a evidência fora, e lista qualquer chave que aparecer duas vezes dentro do mesmo objeto.
Onde isto deixa de funcionar
Ela valida a sintaxe, não o significado. Um JSON válido a que falta um campo que o seu serviço exige passa aqui do mesmo jeito: para isso você precisa de um validador de JSON Schema, e esta ferramenta não é um deles.
Ela não lê os formatos que quase são JSON. JSON5 e JSONC, que permitem comentários e vírgulas sobrando, falham os dois. NDJSON — um objeto por linha, sem array em volta — também falha, porque a segunda linha é uma entrada inesperada. Apague os caracteres que sobram ou envolva as linhas em um array você mesmo.
E tudo roda na thread principal da página. Alguns megabytes rodam sem problema. Em algum ponto acima disso a aba para de responder enquanto trabalha, e um arquivo muito grande pode esgotar a memória de vez. Se o seu JSON veio de uma exportação de banco de dados, use um analisador de streaming na sua própria máquina em vez de uma aba do navegador.
Perguntas frequentes
O meu JSON é enviado para algum lugar?
Não. A análise, a formatação e a varredura acontecem todas nesta aba, com o próprio analisador de JSON do navegador. Nada é transmitido e nada é guardado, então recarregar a página perde o que você digitou.
Por que o erro aponta para o caractere errado?
Porque um analisador só percebe um problema quando chega a algo que não poderia vir em seguida de jeito nenhum. Uma vírgula faltando costuma ser relatada no começo da chave seguinte, e uma string não fechada é relatada onde a próxima aspa aparecer. Olhe logo antes da posição que ele indica.
Dá para formatar JSON que tem comentários?
Do jeito que está, não. Comentários transformam o arquivo em JSONC ou JSON5, não em JSON, e o analisador os rejeita. Tire as linhas de comentário antes, ou use o formato que o seu editor ou o seu carregador de configuração realmente espera.
Ordenar as chaves muda os dados?
Não: por definição os membros de um objeto não têm ordem, então ordená-los produz um documento equivalente. Vale a pena fazer isso antes de um diff e vale a pena evitar em arquivos que pessoas leem, onde o agrupamento escolhido pelo autor costuma carregar significado.
Qual é o maior arquivo que isto aguenta?
Alguns megabytes vão bem em uma máquina normal. Passando disso a aba congela por segundos inteiros, porque formatar mantém na memória ao mesmo tempo o texto original, o valor analisado e a saída. Não há um limite rígido, só um ponto em que deixa de ser agradável.
Última atualização 19 de setembro de 2026