A local JSON workbench for Chrome

Large JSON.
Room to explore.

OmniJSON is a Chrome extension for exploring large JSON from URLs and local files. Parse locally, search keys and values, filter fields, and copy exact paths—even in 100MB-class documents.

Practical guides

A clear path from file to answer.

Steps, working queries and limits for the questions that come up when exploring large JSON.

The viewer

Find what matters in your JSON.

Open a raw JSON URL or local file in a dedicated viewer. Your original tab stays in place. Expand a branch, search keys and values, or keep only a few named fields—even while the document is still loading.

Once parsing finishes, use JSONPath to reach a specific object or the same field across an array. Large documents use JSONPath Lite for structural queries. Select any row to inspect its value and copy a JSONPath, JavaScript, jq, or key path.

18-second walkthrough

From JSON content to the value you need.

Six steps. Play when you’re ready. View full size Download GIF

Expand, search, choose fields, query, and inspect. An edited walkthrough of real screenshots using synthetic data.

Search keys and values. Search for paid and move between matching values with Prev/Next.
Keep the fields you need. Fields mode keeps id, status, and total, along with the parent paths that give them context.
Query a large document. JSONPath Lite selects 60,000 order IDs from a synthetic 100 MiB document. Screenshot timings describe this local demo run, not a benchmark.
More viewer examples Inspect values, browse branches, diagnose errors and query large files
Look inside a value. Inspect an escaped JSON string as formatted JSON. Copy value or Copy parsed uses the complete value within the copy limits.
Choose how much to see. Use the depth control to collapse nested objects, then expand the branches you need.
Locate malformed JSON. A parse error includes line, column, and source context to help you find the problem.
One query, every matching field. Select customer names across an array with $.items[*].customer.name after parsing completes.

How it works

Open. Find. Copy.

Start with a URL or a local file. Browse, narrow the view, then take the value or path you need.

  1. Open a URL or a local file

    After installing, click the OmniJSON extension icon in Chrome. In version 0.1.13 and later, choose Open viewer in the launcher; earlier versions open the viewer directly. Paste a source into the viewer’s address field and choose Open.

    From a URL

    https://example.com/data.json

    Use an HTTP or HTTPS address that serves raw JSON. On a detected JSON page, you can also choose Open in OmniJSON.

    From your computer

    /Users/you/data.json C:\Users\you\data.json

    Paste an absolute path or a file:/// URL. In Chrome’s extension details for OmniJSON, first enable Allow access to file URLs.

    The viewer opens separately and leaves your original tab in place. To reopen a recent source, type oj then Space or Tab in Chrome’s address bar. Suggestions come from OmniJSON’s local recent-URL list.

  2. Narrow the view

    Expand a branch or use the depth control to collapse nested content. Then choose a filter for the question you are asking.

    Three ways to filter your JSON
    Mode & exampleWhat it finds
    Searchpaid Case-insensitive substring matches in keys and scalar values.Available while loading
    Fieldsid, status, total Exact key names, separated by commas. Keeps parent paths and each matched field’s subtree.Available while loading
    JSONPath$.items[*].id Structured matches, such as every item’s ID. In Search mode, start with $ to run a JSONPath query.Available after parsing finishes

    Use Prev/Next to jump between matches. Large documents use JSONPath Lite for structural paths such as $.items[0] and $..id.

  3. Inspect a value. Copy what you need.

    Select a row to see its path and inspect its value. Long text is paged; escaped JSON can be viewed in a formatted form.

    Copy a path
    Choose JSONPath or JS path beside the path, then click the copy button. The ⋯ menu adds jq path and key path.
    Copy content
    Use Copy value or Copy subtree JSON in the ⋯ menu. For an escaped JSON string, the inspector also offers Copy parsed.

    Copy actions use the complete selected value within the limits below, even when the inspector shows one page or a shortened preview.

Questions and limits

Which JSON formats can I open?

Open one raw JSON object or array per document, from an HTTP/HTTPS URL, a local file, or a supported extension-resource URL. API data, exported datasets, and configuration files all fit this workflow.

JSONL / NDJSON, multiple documents in one stream, editing, and saving are outside the current scope. OmniJSON copies jq-style paths; it does not execute jq queries.

What if a URL or local file will not open?

For a URL, check that it opens as raw JSON in Chrome. If automatic detection misses it, enter the URL directly in the viewer.

For a local file, check Allow access to file URLs in OmniJSON’s extension details, then reopen the viewer. Use an absolute path or a file:/// URL; relative paths and ~/ shortcuts are not supported. You can also open the file in a Chrome tab and use Open in OmniJSON when detected.

If parsing fails, the viewer shows the line, column, and source context to help locate malformed JSON.

After an extension update, refresh the original JSON tab. Version 0.1.13 introduced a toolbar launcher with connection checks, recovery steps and Copy diagnostics. See the opening and recovery guide.

Why is a JSONPath query unavailable?

Wait for the current document to finish parsing. Keyword search and Fields mode can work on the data already loaded.

Regular documents use full JSONPath, subject to query limits. Large documents use JSONPath Lite: keys, array indices, wildcards, and recursive key lookup. Predicates, slices, unions, functions, and comparisons are not supported in Lite mode.

How much can I preview or copy?

Regular mode lets you page through the complete selected value. Large-document mode may shorten the inspector preview; it labels this and shows the full value size. The visible page does not determine what is copied.

  • Copy value: up to 4 MiB of decoded scalar text (UTF-8). JSON escaping can make the copied literal larger.
  • Copy parsed: formats the complete escaped JSON value, with a 4 MiB formatted-output limit. Number text and duplicate keys are preserved.
  • Copy subtree JSON: up to 1 MiB and 10,000 nodes.

Requests over these limits show an error instead of silently copying a partial value.

What changes for large documents?

From roughly 50 MB or 500,000 nodes, the viewer switches to a lighter mode that loads visible rows on demand. The first view may be shallow; expand the branches you need. Search, Fields, match navigation, path copying, and JSONPath Lite remain available.

Select a scalar to load its details in the inspector. Hover or click the status area to see where time is spent reading and parsing the source.

What do the loading times mean?

The header shows the total elapsed time for the current load. Hover or click the status area for the available phase metrics.

  • Total: time spent reading the source, parsing, and preparing the result.
  • Worker parse: parser work, not the complete loading time.
  • Network read / Download stream: source reading when available. Local-file and fallback loads can report different phases.
  • Finalize / index ready: the final preparation step.

Streaming phases can overlap, so their durations should not be added together. Document structure, node count, hardware, source, and cache all affect loading time. Timings shown in demo screenshots describe those individual runs.

Privacy

Your JSON is processed locally

Last updated:

Parsing, filtering, and JSONPath run in your browser. The extension does not upload documents, query results, recent sources, clipboard output, or usage data to OmniJSON-operated servers. It includes no analytics, advertising SDKs, telemetry, or remote formatting.

What the extension processes

The content script checks page content locally to detect raw JSON and offer the Open action. JSON you choose to open from a URL, file, or accessible extension resource is used for tree browsing, Search, Fields, JSONPath, previews, and copy tools. Parsed documents and indexes stay in memory; they are not saved to extension storage.

Source requests and sign-in

Opening a web source requests the URL you choose. Chrome may include applicable cookies or authentication credentials and follow server redirects, including to another host. Source servers receive those requests. OmniJSON does not inspect Chrome’s cookie store or upload the returned JSON to a separate processing service. If fetching fails, the original JSON tab can supply its visible content as a fallback.

Local files

Reading file:// sources or absolute local paths requires Chrome’s Allow access to file URLs setting. Paths are converted to file URLs for direct reading, with an already-open JSON tab available as a fallback. File contents are parsed locally.

Recent sources saved on your device

For oj and viewer suggestions, OmniJSON saves up to 50 complete source URLs, derived display titles, and last-opened timestamps in local extension storage, even if loading fails. URLs retain query parameters, fragments, and file paths, including any tokens or sensitive text in them. This list does not separately store parsed JSON, copied content, browser cookies, or filter/JSONPath expressions. OmniJSON does not use Chrome sync or read Chrome browsing history.

Removing recent records

Records have no time-based expiry; new sources beyond the 50-entry limit replace the oldest. Type oj then Space or Tab in Chrome’s address bar and use a suggestion’s delete control to remove it from both suggestion lists. Reopening that source saves it again. Uninstalling OmniJSON clears its local storage; clearing Chrome’s browsing history or cache does not.

Clipboard

Choosing Copy writes the selected path or content to your system clipboard. OmniJSON does not read the clipboard programmatically. Copied content is then handled by your system clipboard and any destination where you paste it.

Local diagnostics

Version 0.1.13 and later retain up to 20 local startup failure records: timestamp, extension version, failure stage, error code and elapsed time. Copied reports also include the browser version. These reports exclude JSON, source URLs, credentials and raw error text, and are never uploaded automatically. New records replace older ones after the limit; uninstalling the extension clears its local storage.

Chrome’s local developer console can contain source URLs, filter/JSONPath expressions, status, and errors. The extension does not upload these logs or send automatic error reports.

This website and external links

This site’s own code has no analytics scripts and sets no cookies or browser storage. Visiting it still sends web requests to the hosting service; hosting-level logs or analytics depend on deployment settings. Install links carry UTM campaign labels to the Chrome Web Store, including source, medium, or campaign values from the page URL. They do not include extension documents or recent-source records. Following a JSON value link or the help link also opens that destination, whose own privacy policy applies.

Contact

For privacy questions, use the publisher’s support channel on the Chrome Web Store listing. Recent-source records are stored on your device and can be removed as described above.

Version notes

Recent changes and support

These notes describe versioned changes. Check the Chrome Web Store listing for the currently available version and the publisher’s support channel.

0.1.14 — Wider toolbar launcher
The launcher opens at 480px wide, with more room for recovery instructions and diagnostics.
0.1.13 — Startup recovery
A toolbar launcher provides a direct viewer link, connection checks and local diagnostics. After an update, refresh an existing JSON tab to reconnect.

For help, start with opening and recovery steps. When contacting support, include your installed extension version, Chrome version and reproduction steps. Do not include private JSON or source URLs containing credentials.