Format, minify and validate JSON while you type.

Your JSON is parsed by the page itself. Watch the network panel or go offline — nothing is sent. How to verify this yourself.

Ready
Input 0 lines
Output formatted
 
—

Three things to know before you paste JSON into a website

This page parses your document with the browser's own JSON parser, re-indents it, and renders the result. There is no round trip to a server: the tool works with the network cable unplugged. The rest of this page covers the three JSON behaviours that produce most of the confused bug reports in real projects, because they are also the reason a formatter is useful in the first place.

Three JSON facts that cause most of the confusion

Trailing commas are invalid. JavaScript objects and JSON look almost identical, which is why a trailing comma after the last property works in a .js file and breaks a .json payload. If the formatter reports an error at a line that ends in , and the next non-whitespace character is a closing brace or bracket, that is the problem.

Duplicate keys are accepted, and the last one wins. JSON.parse does not warn about {"id": 1, "id": 2}; it quietly produces {"id": 2}. Formatting cannot detect this for you because the duplicate has already disappeared by the time the object exists — which is a good argument for running a linter over generated payloads rather than trusting them.

Large integers lose precision. JSON does not distinguish between integers and floats. A Twitter/X style snowflake ID such as 1276898186410434561 becomes 1276898186410434600 the moment it passes through JSON.parse, because it exceeds the range JavaScript can represent exactly. If your API returns 64-bit IDs, keep them as strings in the JSON and parse them on the server side.

Why local processing matters more for JSON than for anything else

Most developer tools are pasted with harmless data. JSON is the exception. The things people paste into a formatter are API responses — which routinely contain bearer tokens, internal hostnames, customer email addresses, and in the case of a cloud provider response, live credentials. In November 2025, two of the largest online formatter sites were found to have exposed over 5 GB of exactly this kind of submission, including working AWS and Stripe keys, because they processed input on their servers and stored it.

The lesson is not "be careful which formatter you use". It is that a formatter has no reason to need your data in the first place. Re-indenting a JSON document is a pure string transformation; there is nothing to compute on a server, and nothing to store. Treat any tool that posts your payload somewhere as a tool with a permanent, unauditable copy of your production traffic.

How to verify that nothing is uploaded

Open your browser's developer tools, switch to the Network panel, and clear the list. Now format a document here. You will see no request carrying your JSON. As a second check, turn off your network connection and format something again — the tool still works, because the entire computation lives in the page you already loaded.

The only third-party script on this site is the advertising tag, and it is configured not to receive anything you type: no input is bound to a form, no value is written to a cookie, and no request body is built from the workbench. The privacy policy lists every script and what it can see.

Common questions

Does this tool send my JSON anywhere?

No. Parsing and re-serialising happen in the page using JavaScript’s built-in JSON parser. You can confirm it by opening your browser’s network panel while formatting, or by disconnecting from the internet — the tool keeps working. This matters because JSON payloads frequently carry API keys and customer data.

Is there a file size limit?

There is no hard limit and no paywall. Above roughly 5 MB the page stops reformatting on every keystroke and waits for you to press Format, because re-parsing a document that large every 200 ms makes typing feel broken on a phone. Everything up to the memory your browser can spare will still process.

Why does the output still show my previous document when the JSON is broken?

Because losing your place is worse than seeing an error. When parsing fails, the last valid result stays on screen but dimmed, and the exact line and column of the problem appear above it. Fix the syntax, and the output switches back to full contrast.

Does formatting change my data?

Only whitespace, unless you tick “Sort keys”, which reorders object keys alphabetically at every depth. Key order is not significant in JSON, but it does change the text on disk, so leave it off when you are comparing documents byte for byte.