JSON vs JSON5 vs JSONC
Compare strict JSON with JSON5 and JSONC so you know which syntax browsers, Node, and config tools actually accept.
Strict JSON is the interchange contract
RFC 8259 JSON is deliberately small: double-quoted strings, no comments, no trailing commas, no bare keys, no Infinity/NaN, and a closed set of literals (true, false, null). Web APIs, many databases, and browser JSON.parse speak this dialect only.
When people say “this JSON is fine in my editor but breaks in production,” they are usually mixing a friendlier dialect with a strict consumer.
JSONC: JSON with comments
JSONC allows // and /* */ comments on top of JSON-like structure. VS Code settings and assorted tooling use it because humans need annotations. It is not a universal network standard. If you publish JSONC to a service that expects JSON, comment stripping must happen first.
JSON5: a broader JS-inspired superset
JSON5 goes further: single quotes, unquoted keys, trailing commas, hexadecimal numbers, multiline strings, and more—mirroring JavaScript object syntax more closely. Some bundlers and config loaders support JSON5 explicitly. Browser JSON.parse does not.
How fixjson.dev fits
The workshop treats many JSON5/JSONC-like accidents as repair inputs and aims to emit strict JSON you can paste into APIs. That is the opposite of shipping a new runtime dialect: we help you get back to the interchange format consumers already speak.
If your project intentionally adopts JSON5 or JSONC, use parsers that advertise that support and keep a build step that emits canonical JSON for external systems.