28 tools · nothing leaves your browser

JSON tools for files that are enormousunreadablemalformedenormous

View, format, validate, diff, convert and generate types from JSON — all running locally. Parsing happens in a Web Worker and the tree renders only what is on screen, so document size stops deciding whether the page survives.

orders.json · 42.6 MB
{
"orderId""ord_9f2a41"
"status""shipped"
"customer"{
"name""Ada Lovelace"
"tier""pro"
"verified"true
"items"[ 128 items ]
"totals"{
"grandTotal"1309.19
"currency""GBP"
"notes"null
}
17 MB
test fixture
63 ms
to analyse it
85 ms
to expand 120k rows
0 bytes
ever uploaded

Why large JSON stalls other viewers

One DOM node per value

The common approach builds an element for every key and value in the document. At 120,000 records that is well over a million elements before the browser has painted anything. JSONic keeps a flat row model and mounts only the rows inside the viewport.

Typical viewer~1,080,000 nodes
JSONic~40 nodes on screen

Parsed off the main thread

JSON.parse on a large string blocks every interaction until it finishes. Ours runs in a Web Worker, and superseded jobs are dropped by id so fast typing never renders a stale result.

Nothing is uploaded

There is no upload step and no server-side processing. That matters when the payload you are debugging contains production data.

Survives a reload

Drafts autosave to IndexedDB on a debounce and when the tab hides, so closing it by accident does not cost you the document you were working through.

Degrades on purpose

Above 1 MB live processing switches off; above 4 MB the editor becomes a read-only virtualized view. Guessing that a 50 MB textarea will stay responsive is what breaks other tools.

All 28 tools

Each one is its own page, and each one runs entirely in your browser.

Common questions

Is JSONic free?
All 28 tools are free, with no account, no sign-up and no usage limit. The site is open source and served as static files.
Is my JSON uploaded anywhere?
No. Every operation runs in your browser inside a Web Worker. There is no upload step and no server-side processing, so your data never leaves your machine.
How large a file can it open?
Files in the tens of megabytes. Above 1 MB live processing pauses until you press Run; above 4 MB the editor becomes a read-only virtualized view, because no browser keeps an editable textarea that large responsive.
Does my work survive a reload?
Yes. Each tool autosaves its draft to IndexedDB on a debounce and when the tab is hidden, and restores it the next time you open that tool.

What makes a JSON viewer slow

Three things decide whether a browser-based JSON tool survives a large file, and most online viewers get all three wrong at once.

Parsing on the main thread. Calling JSON.parse on a 40 MB string blocks the event loop for as long as it takes. Nothing repaints, no button responds, and the browser eventually offers to kill the page. Moving the parse into a Web Worker does not make it faster, but it keeps the interface alive while it runs — and lets a newer request supersede one already in flight, which is what makes live-as-you-type processing viable at all.

Rendering the whole document. A tree view that creates a component per value scales with the file rather than with the screen. Virtualization inverts that: keep the document as a flat list of rows, work out which slice of rows the viewport covers, and mount only those. Expanding a node becomes adding a path to a set, and collapsed branches are never walked at all — so a 40 MB document with everything collapsed costs about as much as an empty one.

Re-serialising to measure. Computing statistics by calling JSON.stringify at every node re-serialises the whole subtree once per node. A single traversal that counts as it goes gives the same numbers without the quadratic behaviour, and an explicit stack instead of recursion means a deeply nested document cannot overflow the call stack.

Past a certain size, the honest answer is to change what the tool offers rather than pretend. Above 1 MB, JSONic stops reprocessing on every keystroke and waits for you to press Run. Above 4 MB, the editor becomes a read-only virtualized view, because no browser keeps an editable textarea that large responsive. Being explicit about those thresholds is more useful than a spinner that never resolves.