Leviathan
Overview
A JSON viewer that survives large files. Streams and indexes multi-gigabyte JSON and NDJSON entirely on your machine.
Every JSON viewer in your browser does the same thing: JSON.parse(await file.text()). That holds your file as a UTF-16 string at twice its size, then builds an object graph three to ten times larger again. A 500 MB file asks for several gigabytes on the main thread, and the tab dies. Leviathan never parses the file into a value. It indexes it. A Rust engine compiled to WebAssembly streams the file in a Web Worker and records only where each node starts — 8 bytes each, 14 MB of index for a 500 MB file. Key names and values are re-read from the file at the moment a row is painted: microseconds each, instead of gigabytes to store them. MEASURED, NOT CLAIMED • 8 GB NDJSON: 28.2 million records indexed in 17.8 seconds, using 539 MB • Fifty rows from record 28,239,470: 2.5 milliseconds • 500 MB: first rows painted in 141 ms, indexed in 3.6-6.8 seconds, 22 MB of memory • Scrolling 100,000 rows: median 16.6 ms per frame, zero long tasks • A filter across 1.77 million records: 8.7 seconds, interactive throughout Every figure comes from running the shipped engine against a generated fixture. The full table, including the one criterion that is missed and the file shape that does not fit, is in the README. WHAT IT DOES • View — virtualized tree, breadcrumb, full keyboard navigation, dark mode • Find — literal search across the whole file, streamed, not just what is on screen • Filter — @.status == "error" && @.latency_ms > 1000, evaluated per record • Validate — byte, line and column accurate errors you can jump to, plus JSON Schema • Duplicates — repeated object keys, which are valid JSON that every parser resolves differently and nothing else warns you about • Export — JSON, NDJSON or CSV, streamed to disk, byte-faithful It survives broken files too. A truncated dump, one bad escape at 90% depth, a log rotation mid-record: every stage degrades instead of aborting. "It won't open" is the failure mode of the tools this replaces. ZERO PERMISSIONS Check the permissions list above: it is empty. Not "minimal" — empty. A Chrome extension cannot make a cross-origin request without a host permission, and this one declares none, so "your data never leaves your machine" is something you can verify in about ten seconds rather than something you have to believe. That costs a feature: Leviathan cannot fetch a URL you paste, because fetching one would need exactly the permission that makes the sentence above checkable. Download the file and drop it in. OPEN SOURCE MIT OR Apache-2.0. The engine is published separately on crates.io and npm, so you can use it without the extension. https://github.com/shadkhan/leviathan
0 out of 5No ratings
Details
- Version0.1.0
- UpdatedAugust 10, 2026
- Offered byshad.edims
- Size113KiB
- LanguagesEnglish
- Developer
Email
shad.edims@gmail.com - Non-traderThis developer has not identified itself as a trader. For consumers in the European Union, please note that consumer rights do not apply to contracts between you and this developer.
Privacy
This developer declares that your data is
- Not being sold to third parties, outside of the approved use cases
- Not being used or transferred for purposes that are unrelated to the item's core functionality
- Not being used or transferred to determine creditworthiness or for lending purposes
Support
For help with questions, suggestions, or problems, please open this page on your desktop browser