Edit JSON as code or tree.

Paste, fix, and copy valid JSON. The document stays in your browser.

Code

Paste or type. The first error shows on its line.

Tree

Nothing to show yet

Paste JSON in the code view, open a file, or load the example. The tree shows every value once the text parses.

Paste JSON, open a file, or load the example.Checked against RFC 8259
Never silently changed

Your data stays as written

Numbers keep their own digits instead of passing through a double, and the ones a double would change get a warning. Duplicate names stay and get flagged. A repair is a list of changes you read first and apply on purpose.

Stays on your device

Nothing is uploaded

The editor runs in your browser. Files open and download locally. There is no account, automatic save, or share link. Analytics is currently off, so no visit or job data is sent to a tracker.

Source

RFC 8259, next to each warning

Validation follows RFC 8259, and every warning links the section it rests on. Copied pointers and the tree's Go to pointer follow RFC 6901. The verdict covers syntax and interoperability, not your application's schema.

The indie shelf

More small tools, ready now.

This tool stays focused on one job. Other tools by turushan are ready for the next small task.

Free for indies. No catch.

Straight answers about IndieJSON: what the result means, what to do with it, and why there is no catch.

No asterisks hiding down here

What is valid JSON?

Valid JSON is text that follows the grammar in RFC 8259: one value, which can be an object, an array, a string, a number, true, false, or null. Names and strings use straight double quotes. Commas separate members, and nothing follows the last one. Comments are not part of the grammar. IndieJSON parses the whole document against that grammar, and the status bar says Valid JSON or names the first error with its line and column.

Why is my JSON invalid?

The usual causes are small: a trailing comma after the last member, single quotes instead of double quotes, a name without quotes, a comment, a missing comma between two members, or text around the document such as a variable assignment or a code fence. A file copied from a JavaScript source or a chat window carries several of these at once.

The editor stops at the first error and points at its line and column, so a document with three problems shows one at a time. Fix it, and the next error takes its place. The repair proposal, described below, finds most of them in one pass and lists every change with its reason before anything is applied.

Can JSON have duplicate keys?

The grammar allows it, and RFC 8259 section 4 says names should be unique, which means parsers are free to disagree. JavaScript keeps the last value, some libraries keep the first, and some reject the document. A payload with a duplicate name can mean one thing on your machine and another on the server. IndieJSON keeps both members as written, marks the document valid, and adds a warning that names the duplicate and where the first one is. Remove one of them before the document travels.

Why does a large number change in JSON?

JSON puts no limit on a number, but most parsers read numbers as doubles, and a double holds integers exactly only up to 9007199254740991. A larger id or a long decimal comes out rounded, without an error. JavaScript's JSON.parse does this, and so do many other languages by default.

IndieJSON keeps every digit as written, marks the document valid, and shows a warning that names the number and what a double would read instead. The same warning covers a number too large or too small for a double at all. To carry such a value safely between systems, send it as a string, and parse it on the other side with a type that holds it.

How do I fix invalid JSON?

When the document does not parse, IndieJSON proposes a repair: a list of changes, each with its position and reason, such as a removed trailing comma, a single quote replaced with a double quote, a removed comment, or null added for a missing value. Read the list, then apply it or fix the text by hand.

Nothing changes on its own. The repair is a proposal until you apply it, and undo takes it back. A repair fixes the shape of the text, not its meaning: a value it had to invent is null, and a word JSON does not have, such as undefined or NaN, becomes null too, so read the list before you trust the result.

Does valid JSON mean the data is correct?

No. The verdict covers syntax and the interoperability warnings, such as duplicate names, numbers a double cannot hold, unpaired surrogate escapes, and a byte order mark. It does not know which fields your application expects, which types they must have, or whether a value makes sense. That check is JSON Schema validation, which IndieJSON does not do. Use your application's own schema or validator for it.

Is it really free?

Yes. No account, no card, no premium plan, no upgrade nag, no hidden paywall. IndieJSON is free, all of it.

What happens to what I check?

There is no public lookup history. A network check sends the public input needed for that check to its named source. Local file tools process file contents in your browser. Analytics is currently off, so no visit or job data is sent to a tracker. Anything the tool saves for you stays in your browser.