Paste broken JSON and get valid JSON back instantly. Trailing commas, single quotes, comments, unquoted keys, Python and JavaScript values, code fences and cut-off data are fixed, and a fix list and diff show exactly what changed.
Last updated:
Ready.
What was fixed
Advertisement
Advertisement
How to use the JSON Repair Tool
Paste your broken JSON into the left box, open a file, or pick an example such as AI chat output or a Python dict.
Read the repaired JSON on the right. It updates as you type; press Repair JSON or Ctrl + Enter if live repair is off.
Review the fixes in the fix list, or switch to Diff to see removed text in red and added text in green. Click a fix to select it in your input.
Choose the output layout: keep your original formatting, pretty-print or minify.
Copy or download the repaired JSON, or press Use as input to keep editing it.
What gets repaired
Problem
Broken input
Repaired output
Trailing comma
[1, 2, 3,]
[1, 2, 3]
Missing comma
["a" "b"]
["a", "b"]
Single or curly quotes
{'id': ‘a1’}
{"id": "a1"}
Unquoted key or value
{status: active}
{"status": "active"}
Comments
{"a": 1 /* note */}
{"a": 1 }
Python / JavaScript values
{"ok": True, "x": None, "y": undefined}
{"ok": true, "x": null, "y": null}
Quote inside a string
"He said "hi" to me"
"He said \"hi\" to me"
Raw line break in a string
"line 1↵line 2"
"line 1\nline 2"
Truncated input
{"items": ["pen", "pap
{"items": ["pen", "pap"]}
Wrappers
callback({"a": 1});, ObjectId("64f1…")
{"a": 1}, "64f1…"
Code fences and preambles
```json { … } ```
{ … }
Escaped (stringified) JSON
"{\"a\":1}"
{"a":1}
Line-delimited JSON
{"a":1}↵{"a":2}
[{"a":1},↵{"a":2}]
Non-JSON numbers
.5, +3, 0x1F, 007
0.5, 3, 31, "007"
Where broken JSON comes from
AI and chat output is the most common source today: language models wrap JSON in Markdown code fences, add a sentence before it, use Python-style True and None, or stop mid-object when they hit a length limit. Hand-written config files pick up comments and trailing commas because JavaScript, JSON5 and many editors allow them. Copied code brings JavaScript object literals with unquoted keys and single quotes, Python print(dict) output, or MongoDB shell results full of ObjectId() and ISODate(). Logs and exports are often one JSON object per line, or are cut off when a file was rotated or a request timed out.
How the repair works
The repair reads your text the way a forgiving parser would. Wherever strict JSON (RFC 8259) would fail, it applies the most likely fix: it inserts a missing comma, swaps a quote character, closes an open string, drops a comment, and so on, while leaving everything else, including your whitespace and line breaks, untouched. The result is checked with the browser's own strict JSON.parse, so a green status means any standard JSON parser will accept it.
The fix list and diff compare your input with the repaired text in its original layout, word by word, so formatting changes never hide the real fixes. If a guess was wrong, typically with quotes inside strings, edit the input and the output updates instantly.
Frequently asked questions
What kinds of broken JSON can be repaired?
Syntax problems with a clear intended meaning: trailing commas, missing commas or colons, single or curly quotes, unquoted property names and values, comments, unescaped quotes and line breaks inside strings, Python True/False/None, JavaScript undefined and NaN, MongoDB shell types such as ObjectId() and NumberLong(), JSONP callbacks, Markdown code fences, escaped JSON strings, line-delimited JSON and missing closing brackets.
Can it fix truncated JSON?
Yes. When the input stops in the middle, for example because an AI response or a log line was cut off, open strings are closed, a missing value becomes null and all open arrays and objects are closed. The structure becomes valid, but data that was never received cannot be recovered, so check the end of the result.
Will the repair change my data?
Only the syntax is changed. Values stay the same, except that values JSON cannot represent are converted: undefined, NaN and Infinity become null, numbers with leading zeros such as 02134 become strings so the zeros are kept, and hexadecimal numbers become decimal. The fix list shows every change.
Which engine does the tool use?
It loads the open-source jsonrepair library (version 3.8.0) in your browser. If the library cannot load or cannot repair the input, a built-in repair engine handles it instead. The status bar shows which engine produced the result.
How is this different from a JSON validator?
A validator tells you where the first error is so you can fix it by hand. A repair tool fixes all the errors it can in one go and shows what it changed. To find and fix errors one at a time, use the JSON Validator.
Why does my result differ from what I expected?
Some inputs are ambiguous. A quote inside a string can either end the string or be part of the text, and the repair has to guess from what follows it. Review the diff, adjust the input where the guess was wrong and the output updates instantly.
Is my data uploaded?
No. Repairing, diffing and formatting all run in JavaScript on your device. Nothing you paste or open is sent to a server.
Are all the tools on FreeToolCabin tested for quality and accuracy?
Yes! Every tool on our site undergoes automated Q/A testing in real browser environments to ensure high precision, correct output, and zero errors. If you happen to spot a bug or have a suggestion, please contact us at [email protected] and our team will review it right away.