viewhack

JSON viewer: open a huge JSON file, JSON Lines or a Jupyter notebook

Drop a .json, .jsonl, .ndjson, .ipynb or .har file. A background thread parses it and the page shows it as a tree you open one level at a time, so a 300 MB API dump does not freeze the tab. Tap any value to get its path, such as $.items[42].name, and search every key and value at once.

The file is read on your device. It is never uploaded.

What it shows

How it stays responsive

The file goes to a Web Worker, a background thread. The worker reads it, parses it with the browser's own JSON.parse and keeps the result. The page never receives the whole parsed value; copying a 50 MB object tree between threads would block the page for seconds. It asks for one level of one node at a time (key, type, a short preview and the child count for up to 200 children) and draws only that. Search runs in the worker too, and only the matching paths come back.

The site's automated test builds a 58 MB JSON file of 320,000 records inside headless Chrome and drops it on this page. It then measures every moment the page could not respond. It requires none to last 200 ms or more. On the test server the tree was ready about 0.6 seconds after the drop, and no pause reached 50 ms, the shortest the browser's Long Tasks API reports. A search of every key and value in the file took about 0.3 seconds. In a separate run on the same server, a 202 MB file of 1.1 million records opened in about 2 seconds, also without a pause of 50 ms.

JSON Lines are read as a stream, line by line, without holding the file as one piece of text. The table fills in while the file is still being read.

What it cannot do