Formatter Validator Minifier Escape / Unescape JSON ↔ String JSON ↔ YAML JSON → CSV NDJSON / JSON Lines JSON → Types JSON ↔ XML JSON Diff JSON Patch Canonicalize (RFC 8785) Schema Validator Schema Generator JSONPath Tester JWT Decoder JSON Errors Schemas More Tools
JSONTools / JSON errors / Invalid control character at: line L column C (cha
CPython json.loads · CPython 3.12.3

Invalid control character at: line L column C (char N)

This message comes from CPython json.loads on CPython 3.12.3. In this registry it is produced by 3 distinct mistakes. Positions in the real message vary with your input; the causes do not.

What produces this message

Raw NUL byte inside a JSON string

Input
{"a": "xy"}

Exact message: Invalid control character at: line 1 column 9 (char 8)

Fix: Escape it as `\u0000`, or — better — base64-encode binary data instead of putting raw bytes in a string.

Literal newline inside a JSON string

Input
{"a": "line1
line2"}

Exact message: Invalid control character at: line 1 column 13 (char 12)

Fix: Escape it as `\n`. Any correct serialiser does this for you.

Literal tab inside a JSON string

Input
{"a": "col1	col2"}

Exact message: Invalid control character at: line 1 column 12 (char 11)

Fix: Escape it as `\t`.

What other parsers say about the same input

If a colleague reports a different message for what looks like the same file, this is why.

Parser Message for the same inputs
JSON5JSON5: invalid character '\n' at 2:0
JSON::PPinvalid character 0x0 encountered while parsing JSON string, at character offset N (before "…")invalid character 0x9 encountered while parsing JSON string, at character offset N (before "…")invalid character 0xA encountered while parsing JSON string, at character offset N (before "…")
Jackson ObjectMapperIllegal unquoted character ((CTRL-CHAR, code 0)): has to be escaped using backslash to be included in string valueIllegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be included in string valueIllegal unquoted character ((CTRL-CHAR, code 9)): has to be escaped using backslash to be included in string value
JavaScriptCore JSON.parseJSON Parse error: Unterminated string
Ruby JSON.parseunexpected token at '…'
SpiderMonkey JSON.parseJSON.parse: bad control character in string literal at line L column C of the JSON data
System.Text.Json Deserialize'0x00' is invalid within a JSON string. The string should be correctly escaped. Path: $ | LineNumber: L | BytePositionInLine: C.'0x09' is invalid within a JSON string. The string should be correctly escaped. Path: $ | LineNumber: L | BytePositionInLine: C.'0x0A' is invalid within a JSON string. The string should be correctly escaped. Path: $ | LineNumber: L | BytePositionInLine: C.
System.Text.Json JsonDocument'0x00' is invalid within a JSON string. The string should be correctly escaped. LineNumber: L | BytePositionInLine: C.'0x09' is invalid within a JSON string. The string should be correctly escaped. LineNumber: L | BytePositionInLine: C.'0x0A' is invalid within a JSON string. The string should be correctly escaped. LineNumber: L | BytePositionInLine: C.
V8 JSON.parseBad control character in string literal in JSON at position N (line L column C)
encoding/json Unmarshalinvalid character '\n' in string literalinvalid character '\t' in string literalinvalid character '\x00' in string literal
hjsonBad string containing newline at line L,0
json_decodeControl character error, possibly incorrectly encoded
orjsonunexpected control character in string: line L column C (char N)
serde_json::from_strcontrol character (\u0000-\u001F) found while parsing a string at line L column C
ujsonUnmatched '"' when decoding 'string'

← All JSON parser errors

Standards this registry is checked against

Only standards bodies and peer-reviewed venues are cited. Error strings on this site are observed by executing each parser; the standards above define what the parser is reacting to.