Large JSON Viewer
This large JSON viewer opens 10 MB and even multi-tens-of-MB files in your browser. Parsing runs on a background Web Worker and the tree uses session-based windowed rendering, keeping only rows near the viewport in the DOM and memory, so hundreds of thousands or millions of nodes scroll without lag. Text over 5 MB automatically switches to a read-only chunked view. It supports opening and dragging in local files, key/value search and jump, collapse and expand, JSONPath breadcrumbs and node copying — and files never reach a server.
How to use it
- 1
Open a large file
Click "Open file" to pick a local .json, or drag the file onto the workspace. Content is read locally through the browser File API and never uploaded. You can also paste large JSON text directly.
- 2
Browse the structure in the tree
The left tree shows nodes by container hierarchy. Click arrows to collapse or expand, or use "Expand all / Collapse all". However big the file, scrolling fetches and renders only rows near the viewport.
- 3
Search and jump to nodes
Type a key or value fragment in the search box (debounced, up to 500 hits). Use Up / Down to step through matches with the substring highlighted, and the ancestor path of each hit expands automatically.
- 4
Read paths, copy and edit
Click any node to see its JSONPath in the breadcrumb (for example $.items[12].id) and walk up the levels. Hover to copy a value or path, and edit primitive values inline with live sync back to the text pane.
Key features
Web Worker background parsing
A full JSON.parse runs on a background thread, so typing and scrolling stay responsive during parsing and the page never becomes unresponsive.
Tree session with windowed rendering
The Worker holds a single tree session and returns row pages (100 rows each) on demand, recycling off-screen pages. Main-thread memory and DOM nodes are independent of file size.
Automatic chunked view over 5 MB
When text exceeds 5 MB the editor switches to a read-only virtual row view: fixed row height, virtual scrolling, line numbers, JSON syntax colouring and error line location. Extremely long single lines are truncated with a prompt to format first.
Local files and drag-and-drop
Supports both a file picker and full-page drag-and-drop, showing file name and size in KB / MB — ideal for log exports and database dumps you cannot paste.
Search, breadcrumbs, inline editing
Key/value search with automatic ancestor expansion and up/down navigation; clickable path breadcrumbs; primitive nodes can be edited directly, with structured cloning and debouncing handled for you.
Files are never uploaded
Local files are read and parsed in memory, with no request carrying file content.
Common errors & troubleshooting
- ! An unformatted single-line huge JSON (millions of characters on one line) is not meant for direct reading: format it first, then browse it in the tree or chunked view.
- ! "Expand all" on a million-node file can still produce a huge number of rows. Search for the target node first (its ancestors expand automatically) — far faster than unfolding everything.
- ! The tree window keeps only pages near the viewport, so during fast scrolling a few rows may briefly appear blank. This is normal on-demand fetching and fills in once you stop.
- ! When data contains integers beyond 2^53-1 (such as snowflake IDs), enable big-integer mode in the formatter to avoid losing the last digits in a normal parse.
Frequently asked questions
What is the largest JSON file supported?
There is no artificial size limit; the practical ceiling is device memory. 10 MB files open quickly and files in the tens of MB usually browse smoothly. The key is that parsing runs in a Web Worker, the tree renders only visible rows, and the text view switches to read-only chunked mode above 5 MB, so file size does not translate directly into DOM nodes. For unformatted single-line giants, format first.
Will opening a large file freeze the browser?
No. JSON parsing runs on a separate Web Worker thread and does not occupy the main thread. The tree uses a session-based windowing protocol, so the main thread holds only the pages near the current scroll position and recycles off-screen pages. A "Parsing" status is shown and you can still scroll and interact.
Is my JSON file uploaded, and is it safe?
It is not uploaded. The file is read locally through the browser File API (file.text()), and parsing, search and formatting all happen on your machine with no network request carrying file content — suitable for API responses, logs and data containing personal information.
Why can I not edit directly in the editor above 5 MB?
The CodeMirror editor incrementally syntax-parses the whole document, which drops frames on very large documents (especially minified single-line JSON). Above 5 MB it switches to a read-only chunked view to keep browsing smooth. To make changes, use inline editing on tree nodes, or shrink / format the document first and return to edit mode.
Related tools
JSON Formatter
Format, beautify and validate JSON in your browser. Errors point to the exact line and column, and you can indent with 2 spaces, 4 spaces or a tab.
JSON Diff / Compare
Compare two JSON documents side by side. Additions, deletions and changes are colour-coded, and key or array order can be ignored.
JSONPath Query
Query JSON with JSONPath expressions, with a built-in syntax cheat sheet and one-click copy of each result.
jq Online
Run jq 1.8 in your browser (WebAssembly build) — no install required. Edit the expression and see the result instantly.