JSON viewer
Open a JSON file or paste JSON to explore it as a tree. Fold and unfold branches, search every key and value, and copy the exact path to anything you select.
- 100% free
- Runs in your browser
- No uploads
- Runs on your deviceEvery tool works directly in your browser. No files are uploaded.
- Your privacy mattersYour files never leave your device, so there's nothing for us to store.
- No limitsUse any tool as much as you need. No daily caps, no waiting.
- Completely freeNo signup and no trial to cancel. Ads keep the tools free.
How to view a JSON file
- Open or paste the JSON. Drop a .json file on the box, choose Open file, or paste text. Pasted JSON appears as a tree a moment after you stop typing.
- Fold and unfold. Click the arrow next to an object or array, or double-click its row. Expand all, Collapse all and Expand to level change the whole tree at once.
- Search. Type in the search box to find keys and values anywhere. Press Enter or Next to jump from one match to the next.
- Copy what you need. Select a row to see its path. Copy path gives you something like $.users[3].email; Copy value copies that part of the JSON.
Reading the tree
Each row is one value. Object keys are in bold, array positions are grey numbers starting at 0, and the grey label at the end tells you the type: string, number, boolean, null, or for objects and arrays how many keys or items they hold. A closed branch shows {…} or […]; an empty one shows {} or [].
Numbers are shown exactly as they are in the file. A 19-digit ID such as 12345678901234567890 stays intact; many viewers round it to 12345678901234567000 because they read it as a JavaScript number.
With the tree selected you can use the keyboard: Up and Down move between rows, Right opens a branch (or moves into it), Left closes it (or moves to its parent), and Enter toggles. Page Up, Page Down, Home and End jump further.
Example: find one order in an API response
This response lists orders with nested customers and items. Search for refund to find the order that has a refund note: the tree opens at $.orders[1].notes, and Copy value gives you that order's note.
{
"page": 1,
"orders": [
{ "id": "A-1001", "total": 42.5, "customer": { "name": "Ada", "country": "GB" }, "items": [{ "sku": "TEA-01", "qty": 2 }], "notes": null },
{ "id": "A-1002", "total": 18, "customer": { "name": "Alan", "country": "US" }, "items": [{ "sku": "MUG-07", "qty": 1 }], "notes": "Customer asked for a refund" }
]
}Working with large JSON files
Text editors and browser tabs often freeze on JSON files of tens of megabytes, because they try to lay out every line. This viewer parses the file in a background thread and keeps the result in compact arrays, then draws only the 30 or so rows that fit on screen. Folding a branch with a million items, or expanding everything, takes a fraction of a second.
- Start with the tree collapsed to level 2 and open only the branches you need; it's easier to read.
- Use search to find a record by ID or email, then copy its path to reach it again in code.
- If a file fails to open, the error shows the line and column. Check it with the JSON validator, which can repair common mistakes.
- Line-delimited JSON (one object per line, .jsonl) isn't one JSON document. Wrap the lines in [ ] and separate them with commas first.
Frequently asked questions
How big a JSON file can it open?
Files of 20 MB and more open in a few seconds on a typical laptop, and the tree stays smooth because only the rows on screen are drawn. The practical limit is your device's memory: as a rough guide, the viewer needs about five times the file size. Files up to 300 MB are accepted.
Is my file uploaded?
No. The file is read and parsed by your browser, in a background worker so the page doesn't freeze. Nothing is sent anywhere, so it's fine for logs, exports and API responses with private data.
What does the path mean?
It's the location of the selected value written in JSONPath style: $ is the whole document, .name picks a key and [3] picks the fourth item of an array (counting from 0). Keys with spaces or symbols are written as ["key name"]. You can paste the path into tools like jq (drop the $) or use it to explain where a value lives.
Does search look inside collapsed parts?
Yes. Search covers every key and value in the document, not only the rows you can see. Going to a match opens the branches above it. It ignores upper and lower case.
Why are some long strings cut off?
Strings longer than 400 characters are shortened in the tree so rows stay one line high. Copy value always copies the full value of the selected node, formatted as JSON.