Check your JSON
Not just valid or invalid — the line, the column, the character, and what to do about it. Nothing is stored; the check runs right here.
- Never stored
- No queue, no waiting
- No signup, no watermark
Paste JSON and it is checked as you type.
How it works
Paste your JSON
Or drop the file in. It is read where it is; nothing is sent anywhere.
Read the verdict
Valid, with a count of what is inside it. Or invalid, with the exact spot marked.
Fix and re-check
Edit in place and the answer updates as you type.
What JSON actually forbids
JSON's grammar is deliberately tiny, and almost every validation failure is one of a handful of things people borrow from JavaScript that JSON never adopted. A trailing comma after the last element. Single quotes instead of double. Unquoted keys. Comments — JSON has none, and never did. NaN and Infinity, which are valid JavaScript numbers and not valid JSON. And a leading byte order mark, invisible in every editor, which some Windows tools add when saving as UTF-8 and which makes a perfectly good document fail on its first character.
Two things are legal and will still cause you trouble, which is why "valid" is not the same as "correct". Duplicate keys are not forbidden by the specification — and every parser resolves them differently, most taking the last, so a document with a repeated key validates here and means different things in different languages. And numbers have no defined precision limit in JSON while most parsers read them as floating point: an integer beyond about nine quadrillion is silently rounded, which is why large identifiers are so often carried as strings.
What you get back is the exact line, column and character where parsing stopped, which is usually more useful than the message itself. A parser reports the point where the document stopped making sense, not where the mistake was made — a missing closing brace is reported at the end of the file, and a missing comma is reported at the token after it. Looking just before the reported position is the habit that saves the most time.
Well-formed is not the same as correct, and the distinction matters. This confirms that the syntax parses. Whether the document contains the fields your API requires, whether a value is in range, whether a date is really a date — none of that is a JSON question. That is schema validation, it needs a schema, and a document can be flawless here and rejected immediately by the service you are sending it to.
When you want something else
For checking documents against a schema rather than a grammar, JSON Schema is the standard and ajv is the fastest implementation of it — it will tell you that a required field is missing or a value is out of range, which is the question you usually actually have. check-jsonschema runs the same checks from the command line and in CI.
For anything at the command line, jq is the tool to have: jq empty file.json validates and prints nothing on success, which is exactly right for a script, and jq . formats. For files too large to hold in memory, jq --stream and Python's ijson parse incrementally, which no page that loads the whole document can do.
Frequently asked questions
Is my JSON stored anywhere?
No. There is no server call and no logging, and nothing is stored. You can disconnect from the internet after the page loads and it keeps working. That matters here more than it looks: the things people paste into an online formatter are API responses, config files and error payloads, and those routinely carry tokens, customer records and internal hostnames.
What does it tell me when the JSON is broken?
The line, the column, the line itself with a caret under the exact character, and what was expected there. Most JSON breaks for one of four reasons — a trailing comma, single quotes instead of double, an unquoted key, or a real newline inside a string — and each of those is named rather than described as a generic syntax error.
What counts as valid?
RFC 8259, strictly. That means double-quoted keys, no trailing commas, no comments, and no leading zeros or hex in numbers. Being strict is the point of a validator: if it accepted what your parser will reject, it would have told you nothing.
Does it check my JSON against a schema?
No — this checks syntax, which is a different question. Syntax is whether the text is JSON at all. A schema is whether the data has the right fields and types. This page answers the first; it will tell you the file parses, and show you the structure it found, but it does not know what your fields are supposed to be.
Why does it say valid when my API still rejects it?
Because valid JSON and the JSON your API wants are different things. A syntactically perfect document can still be missing a required field, use a string where a number belongs, or nest things differently than the endpoint expects. Read the structure summary this page shows you against the API's documentation — the mismatch is usually visible immediately.
Are large numbers checked properly?
Yes, digit for digit — most validators silently break them. A JavaScript number is a 64-bit float, so it can only hold whole numbers up to 9,007,199,254,740,991 exactly. Anything larger — a Twitter/X post ID, a Discord snowflake, a bank account number, a 64-bit database key — loses its last digits the moment it passes through `JSON.parse`. The number still looks plausible, which is what makes it dangerous: 7205759403792793600 quietly becomes 7205759403792793000. This page keeps the digits you pasted, exactly, and tells you how many numbers it had to protect.
Is there a size limit?
Available memory, rather than a cap we impose. Documents of a few megabytes format instantly; very large ones are limited by how much can be held at once, not by anything on our side.
Good to know: This checks that the JSON is well-formed, not that it means anything. A document can be perfectly valid and still be missing the fields your API expects — that is schema validation, which needs a schema. What you get here is the exact line, column and character where parsing stopped.
Put this tool on your website
Free for any blog, class page or help article. Paste one snippet and your visitors can use it right on your page.