GoodWebTools

JSON Viewer

beta

This free JSON viewer turns raw JSON into a collapsible tree you can explore. Expand only what you need, search across keys and values, and copy any value or its path (like $.items[3].id). It also reads JSON Lines (.jsonl/.ndjson) as a list of records, JSON with comments and JSON5 (.jsonc/.json5, tsconfig, VS Code settings), and JSON-based files like .har, .ipynb and .webmanifest. It handles large files and API responses, and everything runs on your device, so nothing is uploaded.

How to use JSON Viewer

  1. 1 Paste JSON, load a .json file, or enter an API URL and press Fetch.
  2. 2 Click the arrows to expand or collapse objects and arrays, or use Expand all.
  3. 3 Type in the search box to highlight matching keys and values; their parents open automatically.
  4. 4 Hover a row to copy its path or value. Invalid JSON shows the exact line and column of the error.

Frequently asked questions

Is my JSON uploaded anywhere?

No. The JSON is parsed and displayed entirely in your browser. When you fetch a URL, your browser requests it directly — it never passes through our server.

Can it open very large JSON files?

Yes. Only the parts you expand are drawn, and big arrays show 100 items at a time with a “Show more” button, so files with tens of thousands of entries stay responsive.

Does it open JSON Lines, NDJSON, JSONC or JSON5?

Yes. .jsonl, .ndjson and log files with one JSON object per line are shown as a list of records — a bad line is reported with its line number. Files with comments or trailing commas (tsconfig.json, VS Code settings, .jsonc) and JSON5 (.json5) are read too, as are JSON-based files like .har, .ipynb, .webmanifest and source maps.

What is the copied path format?

Paths use JSONPath-style notation starting at $, for example $.users[0].name or $["odd key"] for keys with spaces — ready for jq-like tools or code.

Why does fetching a URL fail?

The server must allow requests from other websites (CORS). Many public APIs do; if one doesn’t, download the file and load it instead.