Skip to main content

JSON Viewer

Paste JSON. Understand it instantly.

Reading raw JSON in a terminal or a browser network tab is slow. The Jsonviewpro viewer turns any document into a navigable tree: expand only what you need, search across keys, values and paths, and copy the exact JSON path of any node so you can use it in code.

Input JSON

Size: 0 BLines: 0

Paste JSON to get started

Try an example:

No JSON entered.

Why a tree instead of raw text

A 4,000-line API response in a terminal or a network tab is technically readable and practically opaque. You cannot see where one record ends and the next begins, you cannot tell how deep you are, and finding the one field you care about means scrolling and counting brackets.

A tree fixes the two things that actually slow you down: it collapses everything you have not asked to see, and it always knows the exact path of the row under your cursor. That path is the bridge back to code — it is what you paste into a JSONPath query, a jq filter or a property accessor.

Reading a row

Each row carries four pieces of information: the key, the value, the value type, and — for objects and arrays — how many children it holds. The child count is the one people underuse. It tells you at a glance that items has 340 entries without expanding it, and it is how you spot the empty array that should not be empty.

Right-click any row for the actions that matter when you are moving between the browser and an editor:

ActionCopies
Copy ValueThe scalar, or the whole subtree pretty-printed if you are on an object or array.
Copy KeyJust the property name.
Copy JSON Path$.users[3].email — the expression, not the value.
Copy ObjectThe selected node as formatted JSON.
Copy ParentThe node one level up, for when you need the record rather than the field.

Keys that are not valid identifiers are written in bracket form automatically, so a path like $['shipping-address'].city is always pasteable.

Searching with field prefixes

Plain text in the search box matches keys, values and paths at once, which is the right default when you are exploring. When it returns too much, narrow it with a prefix.

QueryMatches
emailAny key, value or path containing "email".
key:emailOnly property names.
value:gmailOnly values — useful when a term is common as a key.
path:usersOnly paths, so you can scope to one branch.
type:nullEvery null. Also string, number, boolean, object, array.
"two words"A quoted phrase, kept together.
key:status type:stringTerms combine — both conditions must hold.

Case sensitivity and regular-expression mode are toggles next to the box. type: on its own is a legitimate query: type:null with no search term is the fastest way to audit a document for missing data, and type:array shows you every collection in one list.

KeyDoes
↑ ↓Move between visible rows.
→Expand the selected node.
←Collapse it, or jump to its parent if it is already collapsed.
EnterToggle expand and collapse.
Home EndJump to the first or last row.
⌘/Ctrl + KFocus the search box.
Enter / Shift+EnterNext and previous match, while searching.
⌘/Ctrl + Shift + CCopy the selected node as JSON.
EscClear the search or close a dialog.

The ← behaviour is worth internalising: pressed repeatedly it walks you up the document, which is the fastest way to get out of a branch you have burrowed into.

The same document, five ways

The view tabs are not separate tools — they are different projections of the document already in memory, so switching costs nothing and loses nothing.

  • Tree — structure and paths. The default for exploring.
  • Table — an array of records as rows and columns. The fastest way to compare records to each other, and the basis of CSV export.
  • Analyze — counts, depth, and data-quality findings such as inconsistent types and duplicate identifiers. See the analyzer.
  • Schema — a JSON Schema inferred from the document.
  • Code — typed models in TypeScript, Python, Go, Rust and five more languages.

A useful habit: open an unfamiliar response in Tree, then switch to Analyze before you write any code against it. The findings usually tell you something the documentation did not.

Large documents

Three things keep a big file usable. Parsing and analysis run in a Web Worker, so the interface does not freeze while they work. The tree renders only the rows actually on screen, so a 200,000-node document scrolls like a short one. And collapsed branches are never walked at all — expanding is what costs, not loading.

SizeWhat happens
Up to 8 MBOpens directly.
8 MB to 200 MBYou are asked to confirm first, because it will use real memory.
Above 200 MBDeclined. A browser tab is the wrong place for it — stream it with jq instead.

Accepted file types are .json and .txt; you can also drop a file onto the editor or paste directly. The practical ceiling is your machine, not the page — a document that fits comfortably in memory will view comfortably.

Nothing leaves the browser

The viewer is a static page. Your document is parsed by JavaScript in your own tab, held in memory, and discarded when you close it — there is no upload, no request carrying your data, and no server-side copy to delete. You can verify that yourself: open DevTools, watch the Network tab, and paste a document.

That matters most for the documents people most need to inspect — production responses, exported records, anything with a customer in it.

Frequently asked questions

Is the JSON viewer free?
Yes, with no account and no usage limit. The page is free to run because it costs nothing to serve — everything happens in your browser.
Does my JSON get uploaded?
No. Parsing, searching and every conversion run locally in your tab. Watch the Network panel in DevTools while you paste a document if you want to confirm it.
How large a file can the viewer handle?
Files up to 8 MB open directly, 8–200 MB ask for confirmation first, and anything above 200 MB is declined because a browser tab will usually run out of memory. Rendering stays smooth at that size because only visible rows are drawn.
Can I copy the path to a value?
Right-click the row and choose Copy JSON Path. Keys that are not valid identifiers come out in bracket form, so the result is always a usable expression.
How do I find every null in a document?
Search for type:null. The same works for type:string, type:array and the other JSON types, with no search term needed.
Why do my collapsed sections reopen when I paste new JSON?
A new document is a new tree, so expansion state starts fresh. Within one document, expansion is remembered as you navigate.
Can I view a JSON file without uploading it anywhere?
That is exactly what this is. Drop the file onto the editor — the browser reads it from disk with the FileReader API and it never crosses the network.