JSON Viewer: Explore Large JSON as a Tree
View JSON as a collapsible tree with search, type badges, JSONPath copy and stats. Handles files of tens of megabytes in a worker. No upload.
Runs in your browser. Nothing is uploaded.
WebJSON Viewer
JSON source
Max 100MB each
Paste JSON or choose a file above to explore it as a collapsible tree with search and copyable paths.
Example
{"users":[{"id":1,"name":"Ada"}]}Select name in the tree: JSONPath $.users[0].name Dot path users[0].name
A tree built for big documents
Paste JSON or choose a file of up to 100 MB and explore it as a collapsible tree. Each row shows the key, a type badge (obj, arr, str, num, bool, null) and a short preview: a child count for containers and the value for primitives. Large arrays are paged 200 items at a time, and only the rows in view are drawn, so a list of a hundred thousand records scrolls smoothly.
The document is parsed and held in a Web Worker, a background thread, and the page asks it for just the rows it needs. Parsing a big file therefore does not freeze the interface, and the browser never has to copy the whole structure into the page. If workers are unavailable the same code runs on the page instead, and very large files may then make it pause briefly; the stats panel says which mode was used. Nothing is uploaded either way.
Search, paths and levels
Search keys, values or both, with optional case matching. Results are listed (up to 500 are found) and clicking one opens its ancestors and scrolls it into view. Click any row to select it and see a breadcrumb; from there copy its JSONPath such as $.users[0].name, its dot path such as users[0].name, or the value itself as formatted JSON. Keys that are not plain identifiers use bracket notation, for example $['first name'].
Expand to level N opens the tree down to the depth you choose, stopping after 5,000 rows so the page stays quick, and Collapse all folds it back. The tree works from the keyboard: arrow keys move, right and left expand and collapse, Enter selects. The stats panel reports size, maximum depth, number of values, keys, objects, arrays and each primitive type, and names the longest array.
Invalid JSON and limits
If the text is not valid JSON, the viewer reports the line and column of the first problem with a plain explanation, such as a trailing comma, single quotes, an unquoted key or a string that is never closed, and shows the offending text with a caret. It parses strict JSON as JSON.parse does, so comments, NaN and trailing commas are errors. Large integers beyond 9,007,199,254,740,991 lose precision when parsed by JavaScript, a limit of the language rather than of this tool.
Duplicate keys in an object keep the last value, as in JavaScript. Newline-delimited JSON (JSONL) is not a single JSON document, so paste or load one record at a time. For files beyond 100 MB, a command-line tool such as jq is a better fit.
Frequently asked questions
How large a JSON file can it open?
Files up to 100 MB are accepted. Tens of megabytes parse in the background without freezing the page; very large files need enough free memory in the browser, and for anything bigger a command-line tool such as jq is better.
What is the difference between JSONPath and a dot path?
JSONPath starts with $ and is a query language standardised as RFC 9535, for example $.users[0].name. A dot path is the property-access form used in JavaScript code, users[0].name. The viewer copies either.
Why does it say my JSON is invalid when it works in my code?
JSON is stricter than a JavaScript object literal: double quotes only, no trailing commas, no comments, no undefined or NaN. The error shows the exact position.
Can it edit the JSON?
No, it is a viewer. To reformat, minify or sort keys, use the JSON formatter, and to generate types from a sample use the JSON to TypeScript tool.
Is my JSON uploaded?
No. The file is read and parsed in your browser, inside a worker, and nothing is sent to a server.
