This tool validates JSON the same way every JSON.parse() call in your browser does, because that is what runs underneath it — there is no separate, more lenient validation layer. If JSON.parse() accepts your input, the tool reports it valid; if it throws, the tool shows you that exception's message next to the JSON Original tab, along with a green ✓ or red ⚠ indicator.
The four examples below are real inputs and the real error text a V8-based engine (Chrome, Edge, and Node.js all use V8) throws for each of them, generated by actually running them through JSON.parse() rather than described from memory. Firefox and Safari use different JavaScript engines and phrase these errors differently, but they reject the same inputs for the same underlying reason.
How it works
What "valid" does and does not mean
This tool checks that your text is well-formed JSON per RFC 8259 — every brace matches, every string is quoted, every value has the right shape. That is a different, narrower question than "is this the JSON my application expects." A response that is missing a required field, or that sends a string where your code expects a number, is perfectly valid JSON and will pass this check while still breaking your application.
Catching that second class of problem needs schema validation — a JSON Schema document, or a runtime type checker like Zod — checked against your specific expected shape. This tool is the first, fast check that belongs before that step, not a replacement for it.
Why the error message is specific
A validator that only says "invalid JSON" makes you scan the whole document by eye. The message this tool shows — the same one JSON.parse() throws — includes a character position and, in most engines, a line and column, which is usually enough to jump straight to the mistake without a manual diff against a known-good copy.
Invalid JSON, and exactly why
Each of these fails to parse. The error text is what a V8-based engine (Chrome, Edge, Node.js) actually throws for that input — verified by running it, not described from memory.
{"a": 1, "b": 2,}Expected double-quoted property name in JSON at position 16 (line 1 column 17)
JSON has no concept of a trailing comma. Unlike a JavaScript object literal, the comma before the closing } must always be followed by another "key": value pair.
{a: 1}Expected property name or '}' in JSON at position 1 (line 1 column 2)
Every object key must be a double-quoted string. This is valid in a JavaScript object literal, which is why the mistake is common when JSON is hand-typed rather than generated.
{
"a": 1 // note
}Expected ',' or '}' after property value in JSON at position 11 (line 2 column 10)
JSON has no comment syntax at all — not //, not /* */. Some tools accept "JSONC" (JSON with comments) as an input format, but standard JSON.parse() does not.
{"a": 01}Unexpected number in JSON at position 7 (line 1 column 8)
A JSON number cannot have a leading zero before other digits (01, 007). This mirrors the same rule in JavaScript number literals and exists to avoid ambiguity with octal notation.
Known limitations
- The exact wording of the error message is specific to V8-based engines. Firefox and Safari report the same violations with different phrasing, so if you are troubleshooting a report from a user on one of those browsers, expect the message text — not the underlying problem — to differ.
- This checks syntax only. Valid-but-wrong-shaped JSON (a missing field, a string instead of a number) will not be flagged here; that requires schema validation against your own expected structure.
Validate JSON FAQ
Why does it just say the JSON is invalid, without more detail?
It doesn't — switch to the Formatted JSON tab (or just start typing) and the exact parser error, including the character position, is shown. The examples above are that same message, verified against real JSON.parse() output.
Does "valid" mean my API will accept it?
It means the JSON is well-formed. Whether the specific fields and types match what an API expects is a separate question this tool does not answer — that needs schema validation against that API's contract.
Can I validate JSON with comments in it (JSONC)?
Not with this tool — it checks against standard JSON (RFC 8259), which has no comment syntax. Strip the comments first if you are working with a JSONC config file.
Is my JSON sent anywhere to be checked?
No. Validation runs via your browser's own JSON.parse(), locally. Nothing is uploaded.
Other JSON tools
Need the full set of options — sorting, indentation, table and tree views? The general JSON formatter has all of them in one place.