Skip to content

Open large JSON files without freezing your browser

JSON Mill parses in a background thread, draws only the rows you can see, and tells you before it opens a file big enough to slow your tab.

Large files are opened and parsed on this device. Nothing is uploaded. How your data stays local.

Local
source
result
Loading the workspace...

JSON Mill opens large JSON files in your browser by parsing them in a background worker, so the page keeps responding while a big file is read. The tree and table views only create the rows on screen, so a document with hundreds of thousands of values scrolls like a short one.

Nothing is uploaded, which also means there is no server-side size cap: the limit is your device's memory. JSON Mill asks before it opens a file over 25 MB, because that is where a browser tab can start to slow down.

How to open a large JSON file

  1. Open the file. Press Open file or drop it anywhere on the workspace. Opening the file avoids pushing a huge block of text through the clipboard.
  2. Confirm big files. Above 25 MB, JSON Mill shows the size and asks before it opens the file. Press Open anyway to continue; nothing is uploaded either way.
  3. Get the outline first. The Tree view opens collapsed to the first level or two. Use Levels 1, 2 or 3 to see the shape of the document, with the item count of every array and object, before you expand anything.
  4. Search instead of scrolling. Type in Search keys and values and step through matches, or switch on Only matches to hide everything else.
  5. Switch to the table for arrays. Press Table to see a large array of records as a grid you can sort, filter and summarize, then export the part you need from Export.

Example: the outline of an API export

A small page of an events API. Levels 2 shows the top-level keys and one level below, with counts in brackets, without opening every event.

events-page-1.json
{
  "meta": { "source": "events-api", "page": 1, "generated": "2026-10-29T08:00:00Z" },
  "events": [
    { "id": "evt_01", "name": "signup", "user": { "id": 42, "plan": "free" } },
    { "id": "evt_02", "name": "upgrade", "user": { "id": 42, "plan": "pro" } },
    { "id": "evt_03", "name": "export", "user": { "id": 7, "plan": "pro" } },
    { "id": "evt_04", "name": "signup", "user": { "id": 99, "plan": "free" } }
  ],
  "next_cursor": "c2Vjb25kLXBhZ2U"
}
Tree view, expanded to level 2
$: {3}
  meta: {3}
    source: "events-api"
    page: 1
    generated: "2026-10-29T08:00:00Z"
  events: [4]
    0: {3}  signup
    1: {3}  upgrade
    2: {3}  export
    3: {3}  signup
  next_cursor: "c2Vjb25kLXBhZ2U"

Arrays show their length as [4] and objects their number of keys as {3}. Each collapsed event is labeled with its name field, because the tree labels objects by their title, name, handle, SKU or ID when they have one. On a large export the same outline shows how big each part is before you open any of it.

Measured engine times

We timed JSON Mill's parsing and export code on synthetic product catalogs of different sizes. These are engine times only, run in Node 26 on an Apple M5 Pro laptop with 64 GB of memory. In a browser tab, the editor, moving the text between threads and drawing the page come on top, and phones and older laptops are several times slower.

JSON Mill engine timings on synthetic catalogs (Node 26, Apple M5 Pro)
File sizeCheck and formatBuild the treeTree memoryCSV exportExcel export, linked sheets
10 MB 0.1 s 0.1 s about 40 MB 0.1 s 0.4 s
25 MB 0.3 s 0.2 s about 90 MB 0.1 s 1.0 s
50 MB 0.6 s 0.4 s about 190 MB 0.3 s 2.0 s
100 MB 1.1 s 0.8 s about 370 MB 0.5 s 4.0 s
200 MB 2.4 s 1.6 s about 740 MB 1.0 s 8.4 s

What changes for big files

  • Parsing runs in a Web Worker, a background thread, so typing, scrolling and the buttons keep working while a file is checked.
  • The Code view shows the first 2 MB of formatted output. Copy and Export always use the whole result.
  • Above about 3 MB, the source editor turns off syntax highlighting, code folding and bracket matching, which are the parts that slow down on long documents. Editing, search and error marks still work.
  • The Tree and Table views are virtualized: only the rows in view exist in the page, whatever the size of the document.
  • Checking waits for a pause in typing. On large documents JSON Mill waits up to about 1.5 seconds longer before re-checking, so it does not re-parse on every keystroke.
  • Drafts are kept for files up to 25 MB. Smaller documents are saved in this browser as you work and come back after a reload; larger ones are not stored.

Large JSON Lines and log files

Logs, database dumps and data exports often use JSON Lines (NDJSON): one JSON value per line. JSON Mill recognizes JSON Lines from the content or from a .jsonl or .ndjson name and checks each line on its own, so an error on line 9,812 is reported on line 9,812 and one bad line does not hide the others. A valid file shows as one array of records in the Tree and Table views, and To JSON array converts it.

Options

Settings in the workspace that matter for this job
Option What it does
Levels Expand the tree to level 1, 2 or 3, or All. Collapse all closes everything.
Search keys and values Finds text in keys and values, shows the match count and steps through matches with the arrow buttons.
Only matches Hides rows that do not match, keeping the parents of each match so you can see where it sits.

Limits

  • The real limit is memory. A browser keeps several copies of a big file at once: the editor's text, the worker's copy, the formatted output and the tree. Expect a file of a few hundred megabytes to be too much for many laptops, and much less on phones.
  • JSON Mill reads the whole file into memory; it does not stream it. Opening part of a file is not supported.
  • Pasting is the slow way in for very large documents, since the whole text goes through the clipboard and the source editor. Open the file instead.
  • Deeply nested documents (many thousands of levels) parse fine, but pretty printing them would produce an enormous output, so JSON Mill stops formatting with a message and offers Minify instead.

Questions

How do I open a JSON file that is too big for my editor?
Open it in JSON Mill with Open file. Parsing runs in a background thread and the tree only draws the rows on screen, so the tab stays usable on files that make text editors stall. Start with Levels 1 or 2 to see the structure, then search or switch to the Table view.
What is the largest file JSON Mill can open?
There is no fixed limit, because nothing is uploaded. JSON Mill asks before opening files over 25 MB, then opens them if you confirm. How far you can go depends on your device's memory: in our engine benchmark a 100 MB file took about 2 seconds to check and build a tree and used about 370 MB for the tree alone.
Is my large file uploaded to a server?
No. The file is read by your browser and parsed in a Web Worker on your device. JSON Mill sends document content to its server only if you choose to save or share it, which needs an account.
Why is the source editor plain text on my big file?
Above about 3 MB JSON Mill turns off syntax highlighting, folding and bracket matching in the editor, because those features slow down on long documents. The file is still checked, errors are still marked, and the Tree and Table views work as usual.
Can I export part of a large file?
Yes. For CSV, TSV, Excel or JSON Lines, type the path of the array you want into Records at in the export panel, such as data.items, and leave out columns you do not need. To take one branch as JSON, select it in the Tree view and press Copy value.

Last updated