JSONParse Open the viewer

Guides

Open a large JSON file without the editor freezing

Most tools fail on large JSON for the same two reasons: they build a JavaScript object for every value in the file, and they do it on the thread that also has to paint the window. JSONParse does neither.

What actually goes wrong

A 400 MB JSON file is not 400 MB in memory once it has been through JSON.parse. Every object becomes a hash map, every array a growable list, every string a separate heap allocation with its own header. A file that fits comfortably on disk routinely expands several times over in the heap, and the garbage collector then has tens of millions of live objects to trace.

The second problem is where the work happens. JSON.parse is synchronous and cannot be interrupted. Run it on the main thread and the tab stops responding to input, stops painting, and eventually earns a "page is not responding" dialog — not because the parse failed, but because nothing else got a turn.

What JSONParse does instead

  1. The file is read and scanned in a Web Worker, so the main thread never blocks. The window stays interactive while a large document is being indexed.
  2. The scanner builds a flat index of typed arrays — offsets, kinds and parent links — rather than a tree of JavaScript objects. Memory stays close to a fixed cost per node instead of a per-value object header.
  3. Values are read out of the original text on demand, by offset, when a row scrolls into view.
  4. The tree is virtualised: only the rows visible in the viewport exist in the DOM, so a document with millions of nodes renders the same handful of elements as a small one.

The practical effect is that the cost of opening a file scales with the size of the file, once, and the cost of everything afterwards — scrolling, expanding, selecting — is independent of it.

Limits worth knowing

LimitValueWhat happens at the edge
Indexed nodes40,000,000The viewer reports that the document has too many nodes to index rather than exhausting memory.
Search matches200,000Results are truncated and the status bar says so; narrow the query to see the rest.
File sizeBounded by available memoryThe raw text is held once; the index is typed arrays alongside it.

The honest constraint: the file still has to fit in the tab. A browser tab does not get unlimited memory, and a 64-bit desktop browser will give you far more headroom than a phone.

Formats it will open

Besides .json, the viewer accepts .jsonl, .ndjson, .geojson, .har and source maps (.map). Newline-delimited and concatenated documents are detected automatically — see the JSONL guide.

Open the viewerNo sign-up, no upload, no file size dialog.

Frequently asked questions

How large a JSON file can JSONParse open?

There is no fixed ceiling in the application below 40 million indexed nodes. The real limit is how much memory the browser tab can allocate, which on a 64-bit desktop browser is typically several gigabytes. Files in the hundreds of megabytes are the design target.

Is the file uploaded to a server?

No. The file is read with the browser File API and parsed in a Web Worker on your machine. Nothing is sent anywhere. You can confirm this by opening the Network tab and loading a file.

Why is my editor slow on the same file when JSONParse is not?

Most editors build a full JavaScript or in-memory object tree for the document and syntax-highlight the whole buffer. JSONParse builds a flat typed-array index instead and only materialises the rows currently on screen.

Does it work offline?

Once the page has loaded, yes. Parsing, searching and generation all run locally, so the tab keeps working without a network connection.

Last updated .