Paste or type JSON on the left; the right side formats it and parses it into a collapsible tree in real time, pointing straight at the position of any syntax error. You can also just give it a JSON URL and fetch the content (that endpoint has to allow cross-origin requests). Expand or collapse nodes one at a time or all at once, format and minify, and copy a node's path or value. All parsing happens locally in your browser — your content is never sent to this site.
About formatting and validating JSON
When to format and when to minify
Both only touch whitespace — the data itself is identical either way. Formatting adds line breaks and indentation for human eyes: use it while debugging an API, reading logs or reviewing a config file. Minifying strips every bit of optional whitespace to cut the size: use it when writing a request body, storing a value in a database or stuffing one into an environment variable. JSON crammed onto a single line is not "broken", it simply has not been laid out for reading — paste it in and format it. If what you have is two config files that need to become one, that is the job of JSON Merge; this page only lays a single JSON document out so you can read it.
The most common reasons parsing fails
Roughly in order of frequency: a trailing comma after the last element; single quotes instead of double quotes; a double-slash comment; an unquoted key; a value of NaN or undefined, or Python-style True / None; an unescaped line break or backslash inside a string. Every one of those is legal in JavaScript or Python source, but the JSON standard does not accept them, which is why pasting a snippet out of code trips this so often. There is also an invisible variant: a BOM or non-printing whitespace at the start of the file, which can sneak in when you save from Notepad or copy from a web page.
Why read API responses as a tree
Real API responses are routinely five or six levels deep, and hunting through them by indentation alone is tiring. A tree view lets you collapse the branches you don't care about, shows at a glance how many elements an array holds and how deep a field sits, and lets you copy a node's path straight into your code. When you are chasing a production issue, the JSON in the log is often nested again as a string, carrying a pile of backslashes — unescape it first and it expands normally.
JSON is not a JavaScript object
JSON is a data interchange format with exactly six types — object, array, string, number, boolean and null. Keys must be wrapped in double quotes, and functions, date objects, comments and trailing commas are all disallowed. A JavaScript object literal is far more permissive. Note too that JSON puts no limit on numeric precision, while most parsers handle numbers as double-precision floats: integers above 2^53 (a snowflake-style ID, for instance) lose their last few digits. Fields like that are best passed as strings in the API.