Explore JSON Online as a Tree
Explore strict JSON as a bounded, expandable tree. Inspect value types, browse large arrays in pages, and copy a selected JSON path while your input stays in your browser.
Tool workspace
Explore JSON as a tree
JavaScript is required to explore JSON in your browser.
Enter one complete JSON value. Processing stays in this browser.
Maximum input: 1,000,000 UTF-16 code units.
0 of 1,000,000 UTF-16 code units
Example with an array and a special property name
{"name":"Ada","tags":["json","tools"],"a.b[0]":{"enabled":true}}Your JSON is processed locally and is not sent to a server or saved by this tool.
How the tree viewer works
Paste one complete strict JSON value, then choose Explore JSON. Expand objects and arrays, load large child lists by page, select a row, and copy its path.
The root can be any JSON value, including a primitive such as 42 or true. Empty objects and arrays are shown as containers with no children.
Simple property names use dot notation such as $.name, array positions use brackets such as $[0], and special names use quoted brackets such as $["a.b"]. This display path does not run a JSONPath query.
A large number may lose precision in its JavaScript number value. When detected, the preview still uses the number lexeme from the source text.
Limits: 1,000,000 UTF-16 code units, 200 nested levels, 100,000 values, 100 diagnostics, 1,000,000 parser work units, 100,000 tree index visits, 50 children per page, 500 mounted rows, and 120 UTF-16 code units per preview. Timeouts: 15 seconds for parsing and 3 seconds for a child page.
Enter JSON to begin. No parsing starts until you choose Explore JSON.
Tree summary
- JSON values
- 0
- Visible rows
- 0
- Maximum depth
- 0
- Selected depth
- 0
At least one number may lose precision as a JavaScript number. The preview keeps the number spelling from the input.
Selected path
Explore JSON as a tree
This value has no children.
Input diagnostics
Explore one strict JSON value
Paste one complete JSON value and choose Explore JSON. Parsing starts only
after that action. The tree initially shows the root; expand an object or array
to inspect its children. Large child lists are split into pages of 50 rows.
Previous and next page controls load children on demand. Empty objects and
arrays are identified as containers with no children. A primitive value such
as 42, true, null, or "hello" can be the root too.
Use the arrow keys to move through the tree. Select a row to see its type, depth, preview, and path. Choose Copy selected path to copy that readable path. For example, the following input has an array and a property whose name literally contains a period and brackets:
{"name":"Ada","tags":["json","tools"],"a.b[0]":{"enabled":true}}
The array item has path $.tags[0]. The special property has path
$["a.b[0]"], preserving its complete literal name. Simple property names use
dot notation, such as $.name; array positions use brackets. This path notation
identifies a location for display and copying. It does not execute a JSONPath
query.
Strict JSON, diagnostics, and number precision
The input must be strict JSON: comments, trailing commas, single-quoted strings, and duplicate property names are not accepted. Parser errors and warnings are shown with a source location or JSON path when available. The diagnostic list is bounded and indicates when not every diagnostic is shown.
JSON numbers are parsed to JavaScript number values for semantic inspection. A large integer or a number with many significant digits can therefore lose precision in that semantic value. When the parser detects this risk, the tool shows a warning. The number preview uses the original source lexeme, so it preserves the spelling from the input even when the represented value may have lost precision.
Browser and display limits
The tool accepts up to 1,000,000 UTF-16 code units, nesting up to 200 levels, 100,000 JSON values, 100 diagnostics, and 1,000,000 parser work units. Building the tree also allows up to 100,000 index visits. Each child page contains at most 50 rows; at most 500 rows are mounted at once. Row previews are limited to 120 UTF-16 code units. Parsing waits up to 15 seconds for a worker response, and a child page request waits up to 3 seconds. These limits keep work and the visible interface bounded; collapse branches or use a smaller input if a limit is reached.
Your JSON is processed locally in this browser. It is not sent to a server, placed in the URL, or saved by this tool. JSON Formatter & Validator checks or formats the input before exploration; JSON Diff compares two documents when you need to review changes between them.