Debugging API responses
Copy a minified response body from your backend logs or DevTools, paste it here, and instantly see the structure. No need to install a CLI tool or set up jq aliases.
Format, validate, minify and pretty-print JSON — with precise error locations (line + character) and a collapsible tree view. Free, no ads, no sign-up. Everything runs in your browser: your data never leaves your device.
No. All parsing and formatting happen entirely in your browser. Your data never leaves your device.
Most modern browsers handle 1–10 MB smoothly. Very large files (>20 MB) may become slow or lag; consider a CLI tool for those.
Fast, private, zero install — parse JSON right in your browser.
One click expands compact JSON into readable output with indentation and automatic syntax highlighting.
Strip every whitespace and newline to produce the most compact JSON for API transport.
When parsing fails, we show you the exact line and column along with surrounding context for fast debugging.
Expandable, structured view of nested data. Array length and key counts are shown inline.
Everything is computed in your browser. Your data is never uploaded to any server.
Drop a.json file to load it, and export any result back to.json with a single click.
Pure browser-side JSON parsing — no upload, no log line, no third-party API call.
Paste a JSON string into the editor or drop a .json file from disk. The browser reads it via FileReader directly into JavaScript memory — no XHR, no fetch, no upload. Even multi-megabyte payloads are fine; the parser streams them in chunks if needed.
We hand the string to JSON.parse — the same V8 / SpiderMonkey / JavaScriptCore parser your browser uses for every fetch response. If parsing fails, the position of the bad character is reported with line and column so you can fix it instantly. No regex hacks, no ambiguous error messages.
Once parsed, the result is rendered as a collapsible tree using virtualised DOM nodes — so a 100,000-key object stays smooth at 60 fps. You can collapse arrays, copy paths, and navigate by keyboard.
Pretty-print with 2 / 4 / tab indent, minify to a single line, copy to clipboard, or download the cleaned file. The transformation runs in your browser — the resulting bytes never leave the page.
Real situations where browser-only JSON parsing wins.
Copy a minified response body from your backend logs or DevTools, paste it here, and instantly see the structure. No need to install a CLI tool or set up jq aliases.
After Base64-decoding the middle segment of a JWT, paste the resulting JSON to see the claims, expiry, and any custom fields. The token never touches a server other than the one issued it.
Re-format a malformed .json config (Tailwind, ESLint, package.json, tsconfig) so it stops failing in CI. Catches trailing commas and duplicate keys that hand-written configs accumulate.
Open two browser tabs side by side, paste the old and new schema. Use the tree view to spot added or removed fields without diffing escaped strings.
Your JSON often contains real customer records, API keys, JWT secrets, internal IDs, and PII. Most online JSON formatters POST your payload to their server — meaning a third party logs every field you paste. iKit's JSON Decoder runs as JavaScript in your browser tab, so the parser sees your data, but no server ever does.
Deep-dive tutorials and tool comparisons from the iKit blog.
Pretty-print, validate, and structurally diff messy JSON with three methods that work in any browser.
When a JSON document needs to embed binary data inline, Base64 is the encoding that makes it possible.
Paste your JSON above — the validator pinpoints the exact line and character. These are the errors developers hit most.
| Error message | Cause | Fix |
|---|---|---|
Unexpected token } in JSON at position N |
A trailing comma before } or ] — JSON does not allow trailing commas. | Delete the comma after the last item: {"a": 1,} → {"a": 1} |
Unexpected token ' in JSON at position N |
Single quotes around keys or values — JSON requires double quotes. | Replace 'value' with "value" on every key and string. |
Unexpected token N in JSON at position N |
A bare word like NaN, None or undefined — none are valid JSON values. | Use null, a number, or a quoted string instead. |
Expected property name or '}' / Expecting 'STRING' |
An unquoted object key: {name: "x"} — keys must be double-quoted strings. | Quote the key: {"name": "x"} |
Unexpected end of JSON input |
The text was truncated — an unclosed brace, bracket or string. | Check that every { has a } and every [ has a ] — the tree view shows where it stops. |
Unexpected token / in JSON at position N |
Comments (// or /* */) — the JSON spec does not allow them. | Remove the comments, or keep config in JSONC/YAML and convert before parsing. |
Bad control character in string literal |
A raw newline or tab inside a string. | Escape it: use \n, \t or \u escapes inside the quotes. |
Everything JSON allows — and the things it famously doesn't (comments, trailing commas, single quotes).
| Type | Example | Notes |
|---|---|---|
| string | "hello" | Double quotes only |
| number | 3.14, -2, 1e9 | No NaN, Infinity or leading zeros |
| boolean | true, false | Lowercase only |
| null | null | Not None or nil |
| object | {"key": "value"} | Keys must be quoted strings |
| array | [1, "a", null] | Mixed types allowed |
| Escape | Meaning |
|---|---|
\" \\ \/ | Quote, backslash, slash |
\n \r \t | Newline, return, tab |
\b \f | Backspace, form feed |
\uXXXX | Unicode code point (4 hex digits) |
| Not allowed: comments, trailing commas, single quotes, unquoted keys | |
No. All parsing and formatting happen entirely in your browser. Your data never leaves your device.
Most modern browsers handle 1–10 MB smoothly. Very large files (>20 MB) may become slow or lag; consider a CLI tool for those.
Usually missing quotes, a trailing comma, or using single quotes. Switch to the "Errors" tab to see the exact row and column.
Only strict RFC 8259 JSON is supported. Let us know if JSON5 / JSONC support would help you.
After the first load most assets are cached by your browser, so it works with or without a network connection.
No — the JSON spec (RFC 8259) does not allow comments, and parsers reject them with a syntax error. If you need commented config files, look at JSONC or YAML instead, then convert to pure JSON before parsing.
Yes. Keys and string values are case sensitive ("Name" and "name" are different keys), and the literals true, false and null must be lowercase — True or NULL is a syntax error.
JSON has exactly six types: string (double quotes only), number (no NaN or Infinity), boolean (true/false), null, object, and array. Anything else — dates, undefined, functions — must be represented as one of these, usually a string.
A formatter re-indents JSON so it's readable (pretty-print) or strips whitespace (minify). A validator checks it against the JSON grammar and reports where it breaks. This tool does both at once: it validates as you type and shows the exact line and character of the first error.
Yes — use the other iKit tools: JSON ↔ YAML converter at jsonyaml.ikit.app and CSV ↔ JSON at csvjson.ikit.app. To compare two JSON files use the Diff Checker, and to compress JS/CSS use the Minifier — all free and browser-only like this one.