SyntaxError: Bad escaped character in JSON at position N significa que há uma barra invertida (\) dentro de uma string seguida por algo que o JSON não reconhece como escape válido. JSON só permite um conjunto pequeno e fixo de sequências de escape —— qualquer outra coisa depois de uma \ dispara este erro. Aqui está a lista completa e como corrigir.
Qual erro de string estou vendo?
- Bad escaped character —— uma
\é seguida por algo que o JSON não permite (ex.:\x, caminhos Windows). - Bad control character —— um tab/quebra de linha/byte nulo bruto aparece dentro de uma string sem escape.
- Unterminated string —— uma string foi aberta com
"mas nunca foi fechada.
Como o erro aparece
// V8 (Chrome / Node / Edge)
SyntaxError: Bad escaped character in JSON at position 14
// Firefox
SyntaxError: JSON.parse: bad escaped character at line 1 column 15 of the JSON data
// Safari
SyntaxError: JSON Parse error: Invalid escape character \xOs únicos escapes que o JSON aceita
Dentro de uma string JSON, uma barra invertida só pode ser seguida por exatamente um destes:
\" aspas duplas
\\ barra invertida
\/ barra normal
\b backspace
\f form feed
\n nova linha
\r retorno de carro
\t tabulação
\uXXXX um ponto de código Unicode (exatamente 4 dígitos hex) Qualquer outra coisa depois de uma \ —— \x, \', \a, \0, um caminho Windows como \Users ou um \u12 malformado —— conta como „bad escaped character“.
Por que acontece
Causa 1 —— Emprestar escapes de outras linguagens
// ❌ \x e \' são válidos em JS/Python, não em JSON
{ "code": "\x1b[0m", "name": "O\'Brien" }
// ✅ use um escape \u para o byte e não escape apóstrofos
{ "code": "\u001b[0m", "name": "O'Brien" }Causa 2 —— Caminhos de arquivo Windows
// ❌ cada barra invertida abre um escape inválido
{ "path": "C:\Users\Ada\file.json" }
// ✅ escape cada barra (ou use barras normais)
{ "path": "C:\\Users\\Ada\\file.json" }
{ "path": "C:/Users/Ada/file.json" }Causa 3 —— Escape \u truncado ou malformado
// ❌ \u precisa de exatamente 4 dígitos hex
{ "char": "\u12" }
// ✅
{ "char": "\u0012" }Pares substitutos e caracteres fora do BMP
O escape \uXXXX do JSON é fixo em 4 dígitos hex, o que endereça pontos de código até U+FFFF (o Plano Multilíngue Básico). Caracteres acima disso —— emojis, muitas extensões CJK, símbolos matemáticos —— precisam ser escritos como um par substituto UTF-16:
// 😀 (U+1F600) como par substituto
"\uD83D\uDE00"
// não permitido —— JSON não tem \U nem \u{...}
"\u1F600" // escape inválido (só os 4 primeiros hex são consumidos; o resto vira texto)
"\u{1F600}" // escape inválidoEsta é a codificação do JSON na forma UTF-16, mesmo que o arquivo em disco esteja em UTF-8. Duas consequências práticas:
- UTF-8 no arquivo está OK. Você pode escrever
"😀"literalmente; parsers modernos lidam com isso. A forma de par substituto só é necessária quando você precisa escapar. - Cuidado com substitutos solitários. Um
\uD83Dsem seu substituto baixo correspondente, ou vice-versa, é tecnicamente permitido pelo JSON mas é UTF-16 malformado —— consumidores a jusante (especialmente ojsonbdo Postgres) vão rejeitar.JSON.stringifysó produz pares bem formados.
Como corrigir —— passo a passo
- Pule para a posição reportada e encontre a
\que precede o caractere inválido. - É uma barra invertida solta? (ex.: caminho Windows) —— dobre para
\\ou mude para barras normais. - É um escape estrangeiro tipo
\xou\'? —— converta\xNNpara\u00NNe remova a barra invertida antes de'. - É um
\ucurto? —— preencha para exatamente quatro dígitos hex. - Melhor correção: construa o JSON com
JSON.stringify(), que só produz escapes válidos.
// Prevenção —— o escape correto é automático
JSON.stringify({ path: 'C:\\Users\\Ada', code: '\x1b[0m' });
// → {"path":"C:\\Users\\Ada","code":"\u001b[0m"}Perguntas frequentes
O que „Bad escaped character in JSON“ significa?
Uma barra invertida dentro de uma string é seguida por um caractere que não está entre os escapes permitidos pelo JSON (" \\ / b f n r t ou \uXXXX). Os culpados comuns são \x, \' e caminhos Windows não escapados.
Como coloco um caminho Windows em JSON?
Dobre cada barra invertida (C:\\\\Users) para que cada uma seja um escape \\ válido, ou use barras normais (C:/Users), que o JSON aceita.
Isso é o mesmo que „Bad control character“?
Não. „Bad escaped character“ é sobre uma sequência inválida depois de uma barra invertida; „bad control character“ é sobre um byte de controle bruto e não escapado (tab, quebra de linha) sem nenhuma barra invertida.
Corrija agora
- JSON Fix —— localize e repare escapes inválidos no seu navegador
- Bad Control Character em literal de string em JSON —— bytes de controle brutos vs escapes
- String não terminada em JSON —— quando uma string nunca fecha
- Como corrigir erros „Unexpected Token“ do JSON.parse —— o guia de erros mais amplo