{ } Formatador JSON Todas as ferramentas →

Formatador e Validador de JSON

Cole o JSON, formate com indentação, valide a sintaxe ou minifique. Tudo local, nada sobe para servidor.

espaço publicitário

Como a validação funciona aqui

A página usa o JSON.parse nativo do navegador — exatamente o mesmo parser que roda no Node.js e no seu front-end. Se a ferramenta aceitou, sua aplicação aceita; se recusou, quebraria em produção do mesmo jeito. Não há regra própria nem "modo tolerante": o critério é a RFC 8259, a especificação oficial do formato.

Como todo o processamento acontece dentro do navegador, nenhum byte do payload sai da sua máquina. Dá para colar a resposta de uma API com CPF, endereço ou dado de pedido sem transformar isso num incidente de vazamento — algo que não se pode dizer de validadores que enviam o conteúdo para um servidor.

Quando o parse falha, o navegador informa a posição do caractere problemático. A ferramenta converte essa posição em linha e coluna, que é a informação de que você precisa de verdade quando o arquivo tem quatro mil linhas e a mensagem original diz apenas "position 38412".

Passo a passo

Os tipos que o JSON aceita — e os que não

Boa parte dos erros nasce de escrever em JSON algo que só existe na linguagem de origem. Esta tabela resume o que é válido:

TipoExemplo válidoO que costuma dar errado
String"Olá, mundo"Aspas simples não valem. Aspas duplas dentro da string precisam de escape: "ele disse \"oi\"".
Número42, -3.5, 1.2e3Zero à esquerda é inválido (012). NaN e Infinity não existem. Nada de aspas se for número de verdade.
Booleanotrue, falseSempre minúsculo. True/False vindos de Python quebram o parse.
NulonullNone (Python), nil (Ruby) e undefined (JS) são inválidos.
Objeto{"id": 7}A chave é obrigatoriamente uma string entre aspas duplas.
Array[1, 2, 3]Pode misturar tipos, mas nunca terminar com vírgula.
Datanão existeUse string ISO 8601 ("2026-07-25T14:30:00Z") ou timestamp numérico. Evite 25/07/2026.
Comentárionão existeNem // nem /* */. Se precisa comentar, o formato é outro (veja abaixo).

Os erros de JSON que todo mundo comete

O clássico Unexpected token < in JSON at position 0 não é erro de JSON: significa que a resposta começa com <, ou seja, veio HTML. Quase sempre é uma página de 404, de 500 ou uma tela de login entregue no lugar da resposta da API. Abrir a URL diretamente no navegador resolve o diagnóstico em dez segundos.

Formatar ou minificar: o que muda na prática

Formatar e minificar não alteram os dados, só o espaço em branco entre eles. A diferença de tamanho, porém, é real: um payload indentado com 2 espaços costuma ficar de 15% a 30% maior que a versão minificada, dependendo de quantos níveis de aninhamento existem. Numa API que responde milhões de vezes por dia, isso é banda desperdiçada; num arquivo que você vai ler, é o contrário — a indentação é o que torna o conteúdo compreensível.

A regra prática: minificado para máquina, formatado para gente. Vale lembrar que quase todo servidor moderno aplica compressão gzip ou brotli na resposta, e a compressão elimina boa parte da diferença. Se seu gargalo é rede, medir antes de otimizar continua sendo mais barato que adivinhar.

Ordenar chaves: o truque do diff limpo

Comparar dois JSONs com as chaves em ordens diferentes é sofrimento desnecessário. A ordem das chaves em um objeto JSON não tem significado — {"a":1,"b":2} e {"b":2,"a":1} representam o mesmo dado —, mas qualquer ferramenta de diff trata as duas versões como linhas distintas e enche a tela de vermelho.

O botão Ordenar chaves reorganiza tudo alfabeticamente, de forma recursiva, inclusive dentro de objetos aninhados em arrays. Passe as duas versões pela ferramenta antes do diff e sobram apenas as diferenças que importam. É especialmente útil ao comparar a resposta de homologação com a de produção, ou a saída de duas versões da mesma API.

Atenção a um detalhe: a ordem dentro de arrays é preservada, e deve ser mesmo — em [1,2,3] a sequência faz parte do dado.

JSON, JSONC, JSON5 e NDJSON: quando usar cada um

FormatoAceita comentário?Use quando
JSONNãoComunicação entre sistemas, APIs, armazenamento. É o único que qualquer linguagem lê sem biblioteca extra.
JSONCSimArquivos de configuração lidos por editores e ferramentas — o tsconfig.json e as configurações do VS Code usam essa variante.
JSON5SimConfigs escritas à mão que se beneficiam de chaves sem aspas, vírgula final e números hexadecimais. Exige biblioteca específica.
NDJSONNãoLogs e exportações grandes: um objeto JSON completo por linha, processável em streaming sem carregar o arquivo inteiro na memória.

Se você precisa colar um JSONC ou JSON5 aqui, remova comentários e vírgulas sobrando antes — esta ferramenta valida JSON estrito de propósito, porque é isso que o servidor do outro lado vai fazer.

Perguntas frequentes

O que significa o erro "Unexpected token < in JSON at position 0"?
O conteúdo não é JSON: começa com <, isto é, é HTML. Quase sempre é uma página de erro 404, 500 ou uma tela de login que o servidor devolveu no lugar da resposta da API. Abra a URL no navegador e veja o que ela realmente retorna antes de mexer no código.

JSON aceita datas?
Não existe tipo data em JSON. A convenção é usar string no formato ISO 8601 (2026-07-25T14:30:00Z) ou um timestamp Unix numérico. Evite formatos locais como 25/07/2026, porque cada linguagem interpreta de um jeito.

Devo indentar com 2 ou 4 espaços?
Dois espaços é o padrão de fato — package.json, composer.json e tsconfig.json usam dois. Quatro espaços facilita a leitura de estruturas rasas em documentação e slides. Dentro de um mesmo repositório, mantenha um só e deixe o formatador decidir.

Existe limite de tamanho para o JSON colado?
O limite é a memória do seu navegador, não de um servidor: arquivos de alguns megabytes funcionam bem em máquinas comuns. Acima disso, a aba pode congelar por alguns segundos durante o parse. Para arquivos realmente grandes, prefira ferramentas de linha de comando como o jq.

Por que meu JSON com vírgula no final funciona no JavaScript mas dá erro aqui?
Objetos e arrays literais do JavaScript aceitam vírgula sobrando desde o ES5, mas a especificação do JSON nunca permitiu. Como esta página usa o JSON.parse nativo, ela aplica a regra do JSON — igual ao que o seu backend fará.