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 / unexpected end of hex escape at line L column C
serde_json::from_str · Rust (serde_json 1.x)

unexpected end of hex escape at line L column C

This message comes from serde_json::from_str on Rust (serde_json 1.x). In this registry it is produced by 1 distinct mistake. Positions in the real message vary with your input; the causes do not.

What produces this message

Lone surrogate in a JSON string

Input
{"a": "\uD800"}

Exact message: unexpected end of hex escape at line 1 column 14

Fix: Never slice strings on UTF-16 boundaries. Slice by code point, or by grapheme cluster if you care about emoji sequences.

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
JSON::PPmissing low surrogate character in surrogate pair, at character offset N (before "…")
Ruby JSON.parseincomplete surrogate pair at '…'
json_decodeSingle unpaired UTF-16 surrogate in unicode escape
orjsonno low surrogate in string: line L column C (char N)

← 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.