Chrome JSON viewer

OmniJSON

Open 100MB+ JSON in a dedicated Chrome viewer—stream bytes, parse in Worker-backed Rust/WASM, and keep browsing while data loads.

Now available on the Chrome Web Store.

The viewer

Dedicated page for raw JSON at any scale

Open and explore JSON from anywhere—URLs, APIs, exports, or local files—in a dedicated extension workbench, not an in-tab page rewrite. Parsing runs in Worker/WASM off the UI thread, while a virtualized tree with fixed 24px rows remains responsive as data streams in. Browse, keyword-filter, or switch to field view during loading, run JSONPath after parse, and use phase timings to distinguish network download time from Worker parse time.

For 100MB+ JSON files, Row Window mode sends only visible rows to the tree while keeping the full dataset inside Worker/WASM memory. Large files support JSONPath Lite structural queries without rebuilding a full JSON object graph. All processing happens locally in your browser. No uploads, no analytics, and no data ever leaves your device.

OmniJSON viewer with a 189 MB JSON file, tree selection, and performance metrics.
Reference run: ~189 MB (~6.4M nodes), ~22 s ready, ~7 s Worker parse (desktop Chrome).
Collapse and expand nested structures without rendering the full document.
Format escaped JSON strings in value preview—parsed structure with copy raw or parsed.
Inspect progress and phase timing to understand parse behavior.
Parse errors include context for locating malformed JSON.
JSONPath to one element—focus on a single object’s fields (e.g. $.statuses[5].user).
JSONPath across all elements—one field from every match (e.g. $.statuses[*].user.id).

How it works

Open, Inspect, Filter, Copy

Install OmniJSON from the Chrome Web Store, then open raw JSON in a dedicated Chrome extension viewer. The original JSON tab stays unchanged except for an optional entry point to open the viewer.

Workflow

Open JSON

Use a detected raw JSON page or enter a supported JSON URL in the viewer.

Browse the tree

Expand only the branches you need while the source continues streaming.

Filter results

Use keyword search or field view immediately, then JSONPath after parse; large files use JSONPath Lite. Jump between matches with Prev/Next and a live match count.

Copy output

Copy paths, scalar values, or subtree JSON from the selected row.

Capabilities

Streaming parse

Byte-chunk streaming from HTTP/HTTPS fetch or a document fallback when re-fetch is unavailable.

Worker and WASM

Parse and JSONPath in Worker/WASM; keyword search runs async and stays off the UI thread.

Virtualized tree

24px rows with only visible nodes painted; subtree totals speed up collapse and expand.

Keyword filter

Case-insensitive substring match on keys and scalar values while parsing continues; field view accepts comma-separated exact keys; Prev/Next match navigation with live count after filtering.

JSONPath after parse

Full $ queries for regular documents; JSONPath Lite structural paths for large files.

Copy exact output

Copy JSONPath, JS, jq, or key paths, plus scalar values or subtree JSON from the selection.

Usage guide

Opening JSON

  • Open a raw HTTP or HTTPS JSON response and use the OmniJSON entry point when detected.
  • Use the viewer for HTTP and HTTPS JSON URLs entered manually.
  • Type oj in Chrome's address bar, or use the viewer URL field, to search recent JSON URLs opened by OmniJSON.
  • For local file:// JSON, enable "Allow access to file URLs" in Chrome extension settings.

Tree navigation

  • Expand and collapse objects or arrays to focus on relevant branches.
  • Select a row to view its path and scalar summary; large documents load a Value Inspector on demand for long strings, URLs, and timestamps.
  • Copy JSONPath, JavaScript path, jq path, key path, selected value, or subtree JSON.

Filtering and JSONPath

Plain text filter input runs keyword mode: case-insensitive substring matching on keys and scalar values. Fields mode accepts comma-separated exact key names and keeps necessary parent paths plus matched field subtrees. Queries beginning with $ run JSONPath after parsing completes; large documents use JSONPath Lite.

  • Keyword filtering can work against the current parsed snapshot while parsing continues.
  • Type a JSONPath expression that starts with $ to switch from keyword mode to structured matching.
  • JSONPath is disabled until the current document is finalized, so wait for parsing to finish before running structured queries.
  • Large-document mode supports JSONPath Lite for structural paths such as $.items[*].id, $.items[0], and $..id.
  • Predicates, slices, unions, functions, and comparisons are available only to full JSONPath on regular documents.
  • After filtering, use the toolbar stepper to move Prev/Next between matches; large-document mode keeps lookup in Worker/WASM.

Common JSONPath examples:

  • $.data.users[0].id selects one nested value by object key and array index.
  • $.data.users[*].name selects the name field from every item in an array.
  • $..id finds every id key anywhere in the document.

Reference performance

Paste a URL into the viewer. The header shows total time to Ready; the status panel breaks out network read vs Worker parse (desktop Chrome reference runs):

  • GEM submission.json — 4.9 MB, 54k nodes, 1.64 s total, 108 ms parse
  • 2023-04-12_oasst_alpaca_ready.trees.json (HF fetch) — 86.7 MB, 223k nodes, 10.1 s total, 3.06 s parse
  • twitter-sentiment test.json — 188.8 MB, 6.4M nodes, 26.3 s total, 6.84 s parse

Large files

OmniJSON streams source bytes into a Worker and Rust/WASM parser. From roughly 50 MB or 500k nodes, it keeps full node data in Worker/WASM and sends compact row windows to the viewer instead of transferring the entire node table to React. Large documents can still use keyword filter and JSONPath Lite without a full JS-side object graph.

Troubleshooting

  • If a raw JSON page is not detected, open the viewer and enter the JSON URL manually.
  • If a local file does not open, enable "Allow access to file URLs" for OmniJSON in Chrome.
  • If full JSONPath is unavailable, wait for parsing to complete, use JSONPath Lite, or use keyword filtering first.
  • If a document is very large, expect a shallow first view with visible rows loaded on demand.
  • If parsing fails, check the error line, column, and source preview in the viewer.

Privacy

Built without analytics or an upload path

Last updated: May 10, 2026

OmniJSON processes JSON locally in the browser extension runtime. It may fetch the same source URL you choose to view so it can stream bytes into the parser, but parsed JSON, scalar indexes, filter results, copied values, and usage data are not sent to OmniJSON servers.

Data processed

OmniJSON may process JSON document contents from pages you choose to open, including API responses, local files, logs, configuration files, or other visible JSON text.

Viewer features

Data is used only for streaming parse, tree rendering, keyword filtering, JSONPath queries, path and value copy tools, value previews, and parse error previews.

Data collection

OmniJSON does not collect, sell, transmit, or share user data. It does not include analytics, advertising SDKs, telemetry endpoints, or external tracking services.

Network access

When you open a raw JSON document, OmniJSON may fetch that same URL from the extension context to stream bytes to the Worker and WASM parser. It does not send contents to OmniJSON-operated servers.

Local files

For file:// documents, Chrome requires "Allow access to file URLs" to be enabled for the extension. Processing remains local in the browser.

Credentials, storage, and clipboard

Browser credentials may be included only for the same source request. Parsed documents are not persisted to extension storage. OmniJSON stores only recent JSON URLs for address bar and viewer URL suggestions, and clipboard writes happen only when you click a copy button.