JSON Explainer
Paste any JSON and get a plain-English breakdown of every key, type, and nested structure — no AI API needed.
- Root is an object with 3 top-level keys.
- Nested structures: user, orders, meta.
The root object contains 3 keys (2 object values, 1 array value).
"user" contains 7 keys (4 string values, 1 number value, 1 boolean value, 1 null value).
"id" is a UUID: "a1b2c3d4-e5f6-7890-abcd-ef1234567890".
"name" is a string: "Priya Sharma".
"email" looks like an email address: "priya@example.com".
"age" is a integer number: 29.
"premium" is a boolean flag set to true.
"joinedAt" appears to be a date/datetime string: "2023-08-15T10:30:00Z".
"address" is null — intentionally empty or absent.
"orders" holds 2 items of object values. Each object has keys like: id, item, amount, paid.
"[0]" contains 4 keys (2 number values, 1 string value, 1 boolean value).
"[1]" contains 4 keys (2 number values, 1 string value, 1 boolean value).
"meta" contains 2 keys (1 string value, 1 array value).
"version" is a string: "2.1".
"tags" holds 3 items of string values.
All analysis runs locally in your browser — your JSON stays private.
JSON Explainer takes a JSON document and describes its structure in plain English: what the root is, which keys hold nested objects or arrays, and what type each value has. It is meant for getting oriented in an unfamiliar API response, webhook payload or config file before you write code against it.
Every node in the interactive tree gets a one-line description, such as "orders holds 2 items of object values. Each object has keys like: id, item, amount, paid." String values are checked against simple patterns and labelled as ISO dates, UUIDs, http(s) URLs, email addresses, numeric strings that may be currency amounts, or long text. Integers above one billion are flagged as possible timestamps or IDs, which you can check with the Timestamp Converter.
The explanations are generated by deterministic rules in your browser, not by an AI model or external API, so the same input always gives the same output. The tool reads structure; it does not validate against a schema or guess business meaning. If your input will not parse, fix it in the JSON Formatter first, and if you need sample data to explore, the Fake JSON Generator can produce some.
- Paste JSON into the input box, or click Load File to open a local .json file.
- The analysis updates as you type; if the input is not valid JSON, the parser error is shown below the box.
- Check the stats row for the root type, total node count and maximum nesting depth.
- Read the Plain-English Summary for an overview of the top-level keys, and click Copy to copy the summary and stats as text.
- Expand or collapse objects and arrays in the Interactive Tree to read the description and type of each nested value.
- Plain-English description for every key, array and value
- Type badges for object, array, string, number, boolean and null
- Pattern hints for dates, UUIDs, URLs, emails, currency-like numeric strings and large integer IDs/timestamps
- Stats for root type, total nodes and maximum depth
- Collapsible tree (first two levels open by default; arrays show the first 50 items)
- Load a .json file from disk and copy the summary as plain text
- Rule-based analysis that runs entirely in the browser; no AI service or upload
Explaining an API response
Input:
{
"status": 200,
"data": {
"users": [
{ "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "email": "priya@example.com" }
]
}
}
Summary:
- Root is an object with 2 top-level keys.
- Nested structures: data.
- Numeric fields: status.
Tree (excerpt):
users -> "users" holds 1 item of object values. Each object has keys like: id, email.
id -> "id" is a UUID: "a1b2c3d4-...".
email -> "email" looks like an email address: "priya@example.com".The summary covers top-level keys; the tree describes each nested value, including detected patterns.
Spotting timestamps and dates in a config
Input:
{ "createdAt": "2023-08-15T10:30:00Z", "expires": 1735689600, "debug": false }
Tree:
createdAt -> appears to be a date/datetime string: "2023-08-15T10:30:00Z".
expires -> is a integer number: 1735689600 (large integer - possibly a timestamp or ID).
debug -> is a boolean flag set to false.ISO date strings and large integers are called out so you know which fields to treat as time values.
Parser error shown under the input (for example "Unexpected token" or "Expected property name")
The input is not strict JSON: trailing commas, single quotes, comments or unquoted keys are the usual causes.
Correct the syntax at the position given in the message; the JSON Formatter shows the same parser error with a code editor that makes the location easier to find.
A loaded log or export file fails to parse on the second line
The file is NDJSON / JSON Lines (one JSON object per line). Each line is valid on its own, but the file as a whole is not a single JSON document.
Load a single JSON document, or wrap NDJSON lines in [ ] separated by commas to make one array.
A value is labelled with the wrong pattern
Pattern detection is based on text shape only; a numeric string may be flagged as currency, and any integer above one billion is flagged as a possible timestamp or ID.
Treat labels as hints and confirm the meaning against the API documentation or source.
Does this use AI or send my JSON to an API?
No. The descriptions come from fixed rules (type checks and regular expressions) that run in your browser. Nothing is uploaded, and the result is the same every time for the same input.
How is this different from a JSON formatter?
A formatter changes whitespace so the JSON is easier to read; it does not describe anything. The explainer leaves your JSON untouched and instead reports types, counts, depth and likely meanings of values. Use the formatter to fix syntax and the explainer to understand structure.
How does it handle large arrays and deep nesting?
Nesting depth is not limited. In the tree, each array shows its first 50 items with a note about how many more exist. The node count samples up to 500 items per array, so for very large arrays it is a lower bound rather than an exact total.
Why is a string like "49.99" labelled as a currency value?
Strings made only of digits, optionally with exactly two decimal places, are flagged as possible currency amounts. It is a hint based on the text shape, so a string ID such as "12345" can also receive this label.
Can it generate a JSON Schema or TypeScript types?
No. It produces human-readable descriptions only. The type information it shows can help you write a schema or interface by hand.
- JSON FormatterFormat, validate and minify JSON with syntax highlighting and error detection.
- JSON CompareCompare two JSON objects side-by-side and detect added keys, removed keys, and changed values.
- Fake JSON GeneratorGenerate realistic fake JSON datasets with custom fields — names, emails, addresses, and more.