Browser-local validator

JSON Validator

Check a JSON document in your browser and get the line, the column, and a plain explanation of what is wrong.

JSON Validator

Processed in this browser
Paste JSON
Ready to copy

How to use it

A short path from source data to a usable local result.

01

Add JSON

Paste or upload a document, even one that arrived as a single line.

02

Run the check

The browser parser reads it and the page turns the error position into a line and a column.

03

Read the report

A pass names the top-level type and its size; a failure names the problem and how to fix it.

Common questions

Details that matter when moving data between formats.

What exactly is checked?

Syntax only. The document has to parse with JSON.parse, so a trailing comma, a single-quoted string, a comment, or an unquoted property name is reported. A schema, a required field, or a value range is not checked.

Where does the line and column come from?

The parser reports a character position. The page counts the line breaks before that position, so the number matches what your editor shows on screen.

What happens with duplicate keys?

The last value wins, because that is what JSON.parse does. This page does not warn about a duplicate key, so two members with the same name collapse into one without a message.

Is the document uploaded?

No. Parsing happens in this tab and nothing is posted to a server.

Related tools

Other focused converters that are already available.

When is JSON Validator useful?

A JSON validator answers one question: does this text parse? That question turns up when a config file refuses to load, when an API rejects a payload that looked fine, or when a build fails on a line that seems correct. The answer here comes from the parser the browser already ships, so what this page accepts is exactly what a page or a script in the same browser would accept: no comments, no trailing commas, no unquoted property names, and no single-quoted strings. The document is read inside the tab and nothing is posted to a server, which matters when the payload holds tokens, addresses, or customer records.

The report is written to be read rather than skimmed. A failure names the problem in plain words, gives the line and the column of the first character that broke the parse, and says what to change. The usual causes are a comma left after the last member, a name pasted without its quotes, two members with no comma between them, a comment carried over from JavaScript, and a document that is really two objects stacked on top of each other. A pass is not a green tick either: it names the top-level type, counts the keys or items, lists the key names, and reports the nesting depth and the number of scalar values, so a document that parsed but is not the shape you expected is visible straight away.

Three limits are worth knowing. Only syntax is checked, so a document that parses but is missing a required field still passes. A duplicate key raises no error, because JSON.parse keeps the last value and drops the earlier one. Numbers are read as doubles, so an integer beyond two to the fifty-third loses precision on the way in and a long identifier is safer kept as a string. Beyond that, the JSON Formatter on this site indents the same document once it parses, and the JSON to CSV and JSON to Excel tools turn an array of records into a table.