Check JSON for syntax errors and get the exact line and column of the first problem — validation only, nothing rewritten, nothing uploaded. Free, no sign-up — runs locally in your browser.
What a JSON checker actually checks
JSON looks forgiving — it resembles a JavaScript object literal — but
its grammar (RFC 8259 / ECMA-404) is small and strict. A checker runs
your text through a real parser and reports the first place the text
stops being JSON. The rules it enforces are the ones hand-written
JSON breaks most often: strings and property names must be
double-quoted; there are no comments; there are no trailing commas;
numbers cannot have leading zeros or a bare decimal point; control
characters inside strings must be escaped; and the only literals are
true, false and null — not
Python's True/None, not JavaScript's
NaN or Infinity.
How to read an error report
The report gives you a line and column plus the text of the offending
line. Read it as "the parser accepted everything up to here, and
this character is the first one it cannot make sense of". The actual
mistake is at that character or immediately before it: a quote that
never closed ten lines earlier will surface where the string finally
swallows a structural character, and a missing comma surfaces at the
next property name. Fix the first error, run the check again, and
repeat — this is normal, and even messy real-world payloads usually
surrender within a few rounds.
Checker, formatter, repair — which do you need?
- Checker (this page) — you have a document and a yes/no question: is it valid, and where does it break? Nothing is rewritten.
- Formatter — the document is valid and you want to read it: consistent indentation, a tree view and a graph view.
- Repair (in the formatter) — the document is broken and you want a machine to take a best-effort pass at fixing it, with every change listed so you can verify the guess.
For a deeper walkthrough of the error messages themselves, see our
guide to validating JSON and fixing errors.
Examples
This input passes the check:
{"id": 42, "tags": ["math", "code"], "active": true}
This one fails — the checker reports the trailing comma after
"code" at its exact line and column:
{"id": 42, "tags": ["math", "code",], "active": true}
Frequently asked questions
What is the difference between a JSON checker and a JSON formatter?
A checker answers one question — is this valid JSON, and if not, where exactly does it break? A formatter additionally rewrites a valid document with tidy indentation. If you only need the verdict and the error location, a checker is the faster tool; if the document is valid and you want to read it, use the formatter.
Why does the checker stop at the first error?
Because JSON parsers stop at the first error — everything after it is usually a cascade of follow-on failures, not separate mistakes. Fix the first reported error and check again; real-world documents typically become valid after two or three rounds.
My JSON looks right but the checker rejects it. What are the usual causes?
In order of frequency: a trailing comma after the last member, single quotes instead of double quotes, comments copied in from a config file, unquoted property names, a raw newline inside a string, and the literals True/False/None or NaN/Infinity borrowed from Python or JavaScript. The checker names the line and column so you can compare against that list at the exact spot.
Does checking upload my JSON anywhere?
No. The check runs in your browser with its built-in JSON parser. Nothing is sent to a server — disconnect from the network and the checker keeps working. Your draft is kept only in this browser, for seven days, so a refresh does not lose your place.
Can a checker fix my JSON for me?
This one deliberately does not rewrite anything — a checker's job is to tell you the truth about your input. If you want a best-effort automatic repair, the JSON Formatter has a Repair button that fixes common syntax mistakes and lists every change it made, so nothing is ever altered silently.
Is JSON with duplicate keys valid?
Technically yes — the grammar allows the same key twice in one object, and parsers (including the one here) accept it, keeping the last value. It is almost always a bug in the data though, so be aware the checker will pass a document that still deserves a second look.