Check your JSON
Not just valid or invalid — the line, the column, the character, and what to do about it. Nothing is uploaded; the check runs inside this page.
- Processed on your device
- No upload, 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.
Frequently asked questions
Is my JSON uploaded?
No. There is no upload, no server call and no logging — the formatting happens inside this page, on your own device. 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 JSON 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?
Because almost every other one silently breaks 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?
Your device's memory rather than an upload cap. Documents of a few megabytes format instantly; very large ones are limited by how much the browser will hold, not by anything we impose.