Como formatar JSON
- Cole o JSON — a resposta de uma API, um arquivo de configuração, uma linha de log — na caixa. Ele é validado e formatado assim que você cola.
- Escolha Formatar para ter um JSON legível, com recuo de 2 espaços, 4 espaços ou tab, ou Uma linha para tirar todos os espaços e quebras de linha entre os valores.
- Marque Ordenar as chaves para colocar as propriedades de cada objeto em ordem alfabética, o que facilita comparar duas versões dos mesmos dados. As listas mantêm a ordem.
- Toque em Copiar ao lado do resultado. Se o JSON for inválido, aparecem o problema, a linha, a coluna e a própria linha com um ^ embaixo do ponto do erro.
Formatar, deixar em uma linha e validar: o que muda
Formatar — também chamado de identar, embelezar ou pretty print — coloca cada propriedade e cada item de lista na sua própria linha, com recuo conforme o nível. Deixar em uma linha (minificar) faz o contrário e gera a forma mais compacta. Nenhum dos dois altera os dados. A validação confere o texto com o padrão JSON (RFC 8259, a mesma gramática do ECMA-404): nomes e textos entre aspas duplas, nada de vírgula depois do último item nem de comentários, true, false e null em minúsculas, e números sem zero à esquerda, NaN ou Infinity. Ela aponta o primeiro erro que encontra.
Muitos formatadores online passam o texto pelo JSON.parse do JavaScript e o imprimem de novo. Este lê o texto por conta própria e mantém cada valor exatamente como foi escrito:
- Números grandes não são arredondados. O JavaScript só guarda inteiros com exatidão até 9.007.199.254.740.991 (253 − 1). Pelo
JSON.parse, um ID como 12345678901234567890 vira 12345678901234567000. Aqui ele fica como está, assim como 49.90 e 1E+2. - A ordem das chaves é mantida. Objetos do JavaScript põem primeiro as chaves que parecem números inteiros (“1”, “2”), por isso o
JSON.parseas move de lugar; aqui a ordem só muda quando você manda ordenar. - Os textos são copiados caractere por caractere, inclusive escapes como
\u00e7e\/; acentos não viram códigos \u. - Chaves repetidas são contadas. A RFC 8259 pede nomes únicos dentro de um objeto, porque cada programa decide de um jeito qual dos dois valores vale.
JSON em uma linha
Para colar um JSON num campo de formulário, numa variável de ambiente, num comando curl ou numa célula de planilha, escolha Uma linha. O resultado não tem nenhuma quebra de linha nem recuo, mas os espaços e os \n que estão dentro dos textos continuam, porque fazem parte dos dados — “Café do Cerrado” não vira “CafédoCerrado”. Para voltar ao formato legível, cole a linha de novo e escolha Formatar.
Vírgula decimal e CEP: dois erros bem brasileiros
- Preço com vírgula. Em JSON o separador decimal é sempre o ponto:
49.90, nunca49,90. Num objeto,{"preco": 49,90}dá o erro “Nome de propriedade sem aspas” na coluna 14, porque depois da vírgula o JSON espera o nome de outra propriedade. Numa lista,[49,90]é um JSON válido com dois números, 49 e 90 — passa na validação, mas o preço fica errado. Separador de milhar também não existe: escreva1250.00, não1.250,00. - CEP, CPF e telefone como número. CEPs de São Paulo começam com 0 (
01310-100), e o JSON não aceita zero à esquerda:{"cep": 01310100}dá “Número inválido”. Mesmo quando não começam com 0, guarde CEP, CPF, CNPJ e telefone como texto ("01310-100"), porque não são números para fazer conta.
Erros comuns de JSON e como corrigir
| Erro | Inválido | Válido |
|---|---|---|
| Vírgula sobrando no final | {"a": 1, "b": 2,} | {"a": 1, "b": 2} |
| Aspas simples | {'nome': 'Ana'} | {"nome": "Ana"} |
| Nome de propriedade sem aspas | {nome: "Ana"} | {"nome": "Ana"} |
| Comentário | {"porta": 80 // web} | {"porta": 80} |
| Falta uma vírgula | [1 2 3] | [1, 2, 3] |
| Aspas curvas do Word ou do WhatsApp | {“a”: 1} | {"a": 1} |
| Valores do Python ou do JavaScript | {"x": None, "y": True, "z": undefined} | {"x": null, "y": true, "z": null} |
| Barra invertida sozinha | {"pasta": "C:\Users"} | {"pasta": "C:\\Users"} |
| Vários valores em sequência | {"a": 1} {"b": 2} | [{"a": 1}, {"b": 2}] |
Quando falta um colchete ou uma chave de fechamento, o validador só percebe no final, então “O JSON terminou antes da hora” aponta a última linha, mesmo que o } ou ] esquecido pertença a um ponto bem acima. O jeito mais rápido de achar é formatar a parte válida e ver onde o recuo deixa de fazer sentido.
Exemplo: quanto o recuo aumenta o JSON
O exemplo da caixa é a resposta de uma loja virtual em uma linha só, com 313 bytes, 18 chaves e 4 níveis de aninhamento. Em UTF-8, letras acentuadas como ã e é ocupam 2 bytes. Formatado, ele passa a ter 27 linhas:
| Saída | Tamanho |
|---|---|
| Uma linha | 313 bytes |
| Tab | 429 bytes |
| 2 espaços | 501 bytes |
| 4 espaços | 645 bytes |
O tab deixa o JSON formatado menor porque cada nível custa um byte. Em arquivos que pessoas leem e editam, a legibilidade costuma valer os bytes a mais; JSON enviado ou guardado em grande volume deve ir em uma linha.
Limites e dicas
- Arquivos grandes: um JSON de 1 MB é validado e formatado em cerca de um segundo num notebook comum, e o resultado longo rola sem travar. Para arquivos de dezenas de megabytes, uma ferramenta de linha de comando como o jq é mais confortável.
- JSON Lines (NDJSON) tem um valor JSON por linha e não é um documento único. Cole uma linha por vez ou envolva as linhas em
[ ]com vírgulas entre elas. - JSON5 e “JSON com comentários”, usados em alguns arquivos de configuração, aceitam comentários e vírgula no final. O JSON padrão não aceita, então aqui eles aparecem como erro.
- Só o primeiro erro aparece. Corrija-o e o próximo, se houver, aparece na hora.
- Para trocar maiúsculas e minúsculas das chaves, use o conversor de maiúsculas e minúsculas; para comparar duas versões de um JSON, formate as duas com as mesmas opções e use o comparador de textos.
O seu JSON fica no seu aparelho
A formatação e a validação rodam no navegador. JSON muitas vezes tem chaves de API, tokens ou dados de clientes, e nada disso é enviado nem registrado. Também não é salvo: ao recarregar a página, a caixa fica vazia.
Perguntas frequentes
O meu JSON é enviado para algum servidor?
Não. A página formata e valida o JSON com JavaScript no seu navegador, por isso serve para dados sigilosos e funciona até sem internet depois de carregada.
Como deixar um JSON em uma linha?
Escolha Uma linha em Saída. Todas as quebras de linha e recuos entre os valores somem; os espaços dentro dos textos ficam, porque fazem parte dos dados.
Por que o meu JSON é inválido se funciona no JavaScript?
Objetos literais do JavaScript aceitam coisas que o JSON não aceita: nomes sem aspas, aspas simples, vírgula no final, comentários, undefined e funções. O JSON é um formato de dados mais rígido para que qualquer linguagem o leia do mesmo jeito.
O que quer dizer “O JSON terminou antes da hora”?
O texto acabou com algo ainda aberto — em geral falta um } ou ], ou um texto está sem as aspas de fechamento. Também acontece quando o texto foi cortado ao copiar.
Posso usar vírgula nos valores em reais?
Não como número: em JSON o decimal é com ponto (49.90). Se o sistema precisa do valor escrito com vírgula, guarde-o como texto, entre aspas: "49,90".
Ordenar as chaves muda os meus dados?
Não. A RFC 8259 define um objeto como uma coleção sem ordem de pares nome/valor, então a ordem das chaves não tem significado. Listas têm ordem, por isso os itens delas nunca são ordenados.
Última atualização: 16 de outubro de 2026