5 items
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
Aug 10, 2026
rating_count is the Chrome Web Store ratings count, not a written-review count.
Media assets
Screenshots and videos on the listing.
Has promo video
Whether the listing includes at least one video.
Languages
Declared language locales.
Developer website
Listing exposes a developer website URL.
Contact email
Listing exposes a contact email.
Keyword in name
Case-insensitive substring match in the name.
Keyword in description
Case-insensitive substring match in the description.
Keyword occurrences in description
Count of case-insensitive occurrences in the description.
Category user-count percentile
Share of same-category extensions with fewer users (null if unknown).
These are transparent listing completeness / keyword signals, not a prediction of Chrome Web Store search ranking.