Withdata Software

Open a 1.2 GB JSON or 700 MB XML File Without a Hex Editor

The two questions on Stack Overflow are old and enormous: “Is there any JSON viewer to open large json files (windows)?” has 130,128 views, 62 votes and no accepted answer; “Lightweight XML viewer that can handle large files” has 180,242 views and 183 votes. The answers are the tell: the top-voted JSON answer (29 votes) says to open the file in a hex editor — Hex Fiend on a Mac — and “disable the hex view”. The 19-vote answer says to use Sublime Text. The accepted XML answer is a free editor from 2008, last active in 2014.

So the real answer, for a decade, has been: look at the bytes, or squint at the text. That works for a log file. It does not work for JSON or XML, where the data is structure as much as text — and where a single 1.1 GB file can be one line.

1. Why a text editor is the wrong tool for this

Problem What it looks like in an editor
JSON Lines / minified JSON one enormous line; wrapping it makes scrolling unusable
Deep nesting you can see {"registry": {"charity": {..., not the fields of record 900,000
“Record 900,000” there is no row number; the concept does not exist in the text
Memory editors either load the file (1–3 GB of RAM) or give up
XML tags dominate; a table of 30 fields reads as pages of angle brackets

A hex editor makes it worse: it shows you that the file is 1.1 GB, not what is in it.

2. What you actually want: the structure, and the rows

JSON and XML are tree-shaped; the data people need is a repeated record inside that tree — an array of objects, or a repeated element like . A viewer that understands the shape can do what a text editor cannot:

  1. open the file as a stream (memory stays flat),
  2. show a tree of the record collections it found (arrays / repeated nodes),
  3. render the chosen collection as a grid: one record per row, one field per column,
  4. let you jump to a row, search the whole file, and export what you see.

That is what BigDataFileViewer does with JSON and XML, and the numbers below are from the real files on the machine that wrote this.

3. The GUI route

  1. File → Open File… (Ctrl+O), or drag the .json / .xml onto the window.
  2. The left panel is the structure tree: for JSON it lists the arrays it found — the file above is

{"organizations": [ ...1,900,000 objects... ]}, so the tree shows JSON Lines / top-level array and the array name. For XML it lists the repeated record nodes ().

  1. Click the collection you want. The grid on the right becomes one row per record; the status bar

shows rows × cols, the file size, the open time and the memory in use.

  1. Go to row (Ctrl+G) takes a record number; Search → Find… (Ctrl+F) scans the whole file and

lists the hits — for JSON and XML it scans raw bytes, which is why it is fast.

  1. View → Expand Nested Values turns nested objects and arrays into separate columns

(profile.city, tags[0], or dims/w for XML) when you need them flat.

  1. File → Export View as CSV… writes the grid as CSV or TSV, header row included.

If the tree offers a node you do not want (XML with several kinds of repeated elements), click another node — the row count and the columns follow.

4. Measured on real files

File Shape Open Memory Jump to a random record
synthetic_orgs.json 1.21 GB, one top-level array, 1,900,000 records × 30 fields 4.47 s 35.7 MB 50 ms average (12 jumps)
organizations-1000000.json 264 MB, JSON Lines, 1,000,000 records × 9 1.86 s 25 MB 16 ms average
records.xml 271 MB, 2,000,000 records × 6 0.80 s 24.5 MB 35 ms average

Memory does not follow the file size: the viewer keeps one page of 50,000 rows and moves it as you scroll (smooth scrolling measured at 10.7 ms per step on the 1.2 GB file). jq, xmlstarlet and grep can find things in these files, but they cannot show you a table, and they cannot tell you “record 900,000”.

For scale: the large-file JSON viewers people share in r/json tend to be Mac or browser tools, and one of them advertises “opens a 1 GB file in ~700 MB of RAM”. The numbers above are 35.7 MB for a 1.21 GB file — because the file is read as a stream instead of being loaded.

5. From the command line

For a scheduled check that the nightly export is still readable, the same program answers from a shell:

“ BigDataFileViewer.exe "dump.json" --selftest BigDataFileViewer.exe "dump.json" --find "ACME" BigDataFileViewer.exe "dump.json" --export "dump-view.csv" “

--selftest opens the file, jumps around, re-reads rows and exits non-zero if anything is wrong.

6. What it will not do

exports what you need.

unrelated top-level arrays needs one click per array.

used for the numbers above.

FAQ

Can a hex editor really open a 1.1 GB JSON file?

It can open the bytes. It cannot show you rows, fields or record numbers, which is what the file is for.

Why not just use jq?

jq is excellent for filtering and for JSON Lines, and it is the right tool when you already know what you are looking for. It prints text. It will not page through 1,900,000 records, and it cannot open a 1.2 GB file interactively.

What about xmllint / xmlstarlet?

Same answer: they query, they do not display. And most of them load the document into memory.

Does it handle JSON with nested objects?

Yes — the grid shows the top-level fields, and View → Expand Nested Values adds the nested ones as columns (profile.city, tags[0], …). The same switch works for XML (dims/w).

Can I get the data into Excel afterwards?

Export the view as CSV, or the records you need as a smaller file; Excel’s 1,048,576-row ceiling still applies to whatever you hand it.

Is a 1.1 GB JSON file normal?

It is common in public data dumps and API exports — registries, scrapes, API pagination dumps. They are usually one top-level array, which is exactly the case that breaks editors. (The file in the screenshot is a synthetic sample of that shape: same number of records, same 30 fields, no real organisations.)

Opening the file instead of staring at it

If the job is see the records, find one, export a slice, BigDataFileViewer opens JSON, XML, CSV and Excel files of any size in a grid: the 1.21 GB JSON above is 1,900,000 rows in 4.5 s and 36 MB. There is a 30-day trial, and the download page has Windows, Linux and macOS builds.