JSON Validator
Pinpoint syntax errors to the exact line and column.
Your data is processed entirely in your browser and is never uploaded.
Tool workspace
Drag & drop file here or browse
Options
JSON allows repeated keys; most code keeps the last. We warn you.
Append a pretty-printed copy to the report when valid.
Validate JSON in three steps
Paste or upload
Drop in any JSON. Validity is checked as you type, up to 15M characters.
Read the diagnosis
Errors point to the exact line and column, with the offending lines and a caret.
Inspect structure
When valid, see a structure tally, duplicate-key warnings, and an optional normalized copy.
What validation actually checks
Validating JSON means parsing it against the JSON grammar: brackets balanced, strings closed, commas and colons where they belong, numbers and literals well-formed. It is a syntax check, not a meaning check: the validator confirms the document is *shaped* like JSON, not that it matches some expected schema (schema validation is a separate, later tool). When something is wrong, the engine walks the text character by character and reports the exact line and column where the grammar breaks, with the offending lines and a caret so you can fix it without hunting. All of it runs in your browser.
Common errors
Trailing comma
JSON forbids a comma after the last item in an object or array. It is the single most common mistake when editing by hand. Delete the comma before the closing bracket.
{
"name": "Ada",
"role": "engineer",
}Unexpected end of input
A bracket, brace, or string was opened and never closed. The caret lands at the end of the text because that is where the parser ran out while still expecting more. Add the missing close.
{
"name": "Ada",
"role": "engineer"Unquoted key
Object keys must be double-quoted strings. JavaScript object literals let you skip the quotes; JSON does not. Wrap the key in double quotes.
{
name: "Ada"
}Single quotes
JSON only accepts double quotes for strings and keys. Single quotes are valid in JavaScript but not in JSON. Replace them with double quotes.
{
'name': 'Ada'
}Try these
{
"user": { "id": 1, "name": "Ada" },
"active": true,
"score": null
}A valid document with nesting and mixed types. It should report Valid.
[
{ "id": 1, "ok": true },
{ "id": 2, "ok": false }
]Top-level arrays are valid JSON too. Each element is checked in turn.
pair this withFix & format → JSON Formatter·Compare two docs → JSON Diff·Then minify → JSON Minifier
Go deeper
Frequently asked questions
Is my JSON uploaded anywhere?
No. Validation runs entirely in your browser (in a background worker for large files). Your data never leaves your machine.
Why are duplicate keys only a warning?
The JSON specification permits repeated keys, and JSON.parse silently keeps the last value. That is usually a bug. We flag them so you can decide, rather than rejecting valid input.
How exact are the line and column numbers?
Exact, and identical in every browser. The validator walks the JSON grammar itself rather than reading an error string, so the coordinates never depend on the engine's message format.