Skip to content
Tools

JSON Viewer

Explore JSON in an interactive tree view. Expand nested objects, search keys, inspect values and navigate large JSON documents with ease.

Visible pane

Paste JSON or upload a .json file to begin exploring.

Waiting for input

Everything happens inside your browser. Your JSON is never uploaded.

What is a JSON viewer?

A JSON viewerturns a JSON document into something you can walk through. Instead of a wall of text, you get a collapsible outline: objects and arrays become branches you open and close, and every value sits on its own row beside the key it belongs to — the same idea as a file explorer, or the object inspector in your browser’s developer tools.

The distinction that matters is that a viewer reads. It does not rewrite your document, reorder anything or hand you a new version to copy. It builds a picture of the data in memory and gives you the controls to move around it: expand, collapse, search, select, copy a path.

Take a response with two users in it. As text you have to track brackets to know where one record ends and the next begins:

As raw text
{"users":[{"id":1042,"address":{"city":"London"}},{"id":1043,"address":{"city":"New York"}}]}
As a tree — the same data, collapsed to its shape
▾ "users" [ ] 2 items
  ▸ 0 { } 2 keys      { id: 1042, address: {…} }
  ▸ 1 { } 2 keys      { id: 1043, address: {…} }

Nothing has changed except what you can see. The second record is still there — it is simply closed, because right now the question was how many users came back, not what is inside each one.

Why use a JSON viewer?

Formatting solves the problem of a document being unreadable. It does not solve the problem of a document being large. A well-indented 4,000-line response is still 4,000 lines, and scrolling through them to find one field is not reading — it is searching by hand. A viewer changes what the work is:

  • You see structure before detail.A collapsed tree answers “what shape is this?” in one glance: how many top-level keys, which of them are collections, how deep the nesting goes.
  • You only open what you need. Everything else stays folded away, so a deeply nested branch is three clicks rather than three screens of scrolling.
  • Searching keeps its context. Finding text in an editor gives you a line number. Finding a key in a tree shows you the value, its siblings and the branch it sits in — which is usually the thing you actually wanted to know.
  • Paths come out ready to use. Selecting a row gives you $.users[0].address.city without counting brackets, which is what you need to paste into a JSONPath tester, a test assertion or a line in a bug report.
  • Types stop being guesswork. The tree distinguishes the number 0 from the string "0", an absent field from one set to null, and an empty array from an empty object — the exact distinctions that produce bugs when they are missed.
  • Size stops being a barrier. Only the rows on screen are drawn, so opening a multi-megabyte export costs about what opening a small one does.

Key features

Everything below runs in your browser. There is no upload step, no queue and no account.

Interactive tree view

Objects, arrays, strings, numbers, booleans and nulls each render distinctly, with a child count on every container and a one-line preview of what a collapsed branch holds. Expand a single node, expand a whole branch, jump to a nesting level, or open the entire document at once. Very wide arrays load in blocks so a hundred-thousand-item list cannot stall the page.

Search across keys and values

Matches are found as you type, counted, and highlighted where they sit. Step through them with the arrows or with Enter and Shift+Enter — each jump opens whatever branches are needed and scrolls the result into the middle of the view. Restrict the search to keys or to values when a common word appears in both.

JSON paths

Every row carries its own path. Select one and it appears along the bottom of the explorer, ready to copy. Ordinary keys use dot notation, array indexes and awkward keys use brackets, so the result is a valid expression rather than an approximate one.

Node actions

Right-click any row — or use its button — to copy the key, the value, the JSON path or the entire enclosing object, and to expand or collapse that node’s children without touching the rest of the tree.

Display options

Line numbers, word wrap, data-type tags, quotation marks, array indexes and a compact row height are each switchable. They change what is drawn, never the data: turn quotes off to skim a large document, turn types on when a value’s type is the thing in question.

Statistics

How many objects, arrays and keys the document contains, how deeply it nests, and its characters, lines and size on disk — the numbers that tell you whether a payload is reasonable before you build anything on top of it.

Files, clipboard and print

Open a .jsonfile with the upload button or by dropping it anywhere on the panel. Copy the document, download it as it arrived or re-indented for reading, or print it. Files are read with the browser’s own FileReader — they are never transmitted.

Keyboard control

The tree is fully navigable from the keyboard: arrow keys move between rows, Right and Left open and close branches, Enter toggles, and Home and End jump to the ends of the document. Ctrl+F searches, Ctrl+Shift+E and Ctrl+Shift+C expand and collapse everything, and Ctrl+Shift+D downloads.

How to view JSON

  1. 1. Add your JSON. Paste it into the source panel, drag a .json file anywhere onto the tool, or use the upload button. A sample document is loaded to begin with — replace it, or press Load example for a richer one.
  2. 2. Check that it parses. The status bar reads Valid JSON as soon as the document is well-formed. If it does not, the message underneath names the problem with its line and column, and the button beside it jumps the cursor there.
  3. 3. Open the branches you care about. The tree starts two levels deep. Click an arrow to open one node, use the numbered Level buttons to open every branch down to a given depth, or press Expand all.
  4. 4. Search for what you are looking for. Type a key or a value into the search box. Use the arrows to step between matches; each one is revealed and centred as you reach it.
  5. 5. Take what you need. Select a row to see its JSON path, or right-click it to copy the key, the value, the path or the whole enclosing object. The Statistics tab summarises the document, and the toolbar downloads or prints it.

For a long session, press the fullscreen button — the explorer takes the whole window, which on a deeply nested document is the difference between reading and squinting.

Tree view vs raw JSON

Both views show the same document, and this tool keeps both a keystroke apart. What differs is the question each one answers well.

Raw JSON is text. It is what you copy, commit, diff and send. It is the honest representation: every byte is there, including the whitespace, and what you see is exactly what a parser will read. When you need to hand the document to something else, you need the text.

The tree is the data. It is the parsed document, drawn as the structure it describes. Nesting becomes indentation you can fold, arrays announce their length, and each value carries its type. When you need to understand the document rather than transport it, you need the tree.

The practical differences:

  • Finding something. Raw text search matches characters, so searching id also matches video and validity. Tree search can be limited to keys or to values, and each hit arrives with its surroundings intact.
  • Hiding what you do not need. Raw text shows everything, always. A tree collapses a 900-line branch into one row and gives you a preview of what is inside it.
  • Knowing where you are. Raw text gives you a line number, which means nothing outside the file. A tree gives you a path, which addresses the same value in any copy of the document.
  • Handling size.A megabyte of text is a megabyte of text. A tree renders only the rows in view, so the document’s size stops determining how it feels to read.
  • Seeing formatting problems. This is where raw wins outright. Trailing commas, duplicate keys and stray characters are text problems, and you fix them in the text — which is why the source panel stays open beside the tree, and why the JSON validator is the better place to work when the document will not parse at all.

In practice the two are complementary: explore in the tree until you know what you are looking at, then switch to raw when you need to take something away with you.

When should you use a JSON viewer?

Any time the document is bigger than the question you are asking of it. These are the situations where that is almost always true.

API responses

Paste the body of a request straight out of your terminal, your HTTP client or a browser network panel. The tree shows which fields came back, which are nested, which are arrays and which returned null — before you write a single line of code against them.

Configuration files

Open a package manifest, a service definition or a feature-flag file and read its shape rather than its punctuation. Searching keys finds the setting you half-remember the name of; copying its path tells you exactly where it lives.

Debugging

When a value is not what you expected, the question is usually where it went wrong, not what the file looks like. Search for the value, step through every occurrence, and copy the path of the one that is wrong straight into your bug report.

Web development

Inspect the props a page is hydrated with, the payload behind a chart, or the analytics event you just fired. Comparing what you meant to send against what actually arrived is a matter of opening two branches side by side.

Mobile development

Mobile clients are strict about types and unforgiving about nulls. Reading the response as a tree makes it obvious that an id came back as a string, that an optional object is missing rather than empty, or that an array arrived with no items.

Backend development

Inspect webhook bodies, queue messages, structured log entries and database exports. Statistics give you the object, array, key and depth counts that tell you whether a payload is about to be expensive to process downstream.

Common JSON structures

Every JSON document is built from four arrangements of the same six types. Knowing how each one appears in a tree is most of what it takes to read an unfamiliar payload quickly.

Object

An unordered set of key and value pairs wrapped in braces. Keys are always double-quoted strings; values can be any JSON type. Objects are what most API responses and configuration files are at the top level.

JSON
{  "id": 1042,  "username": "ada.lovelace",  "active": true}
In the tree
▾ { } 3 keys
    "id": 1042
    "username": "ada.lovelace"
    "active": true

Array

An ordered list wrapped in square brackets. Position matters, and the items do not have to share a type — although in practice a well-designed payload keeps them uniform so consumers can loop over them.

JSON
{  "roles": ["admin", "editor"]}
In the tree
▾ "roles" [ ] 2 items
    0: "admin"
    1: "editor"

Nested object

An object held as the value of a key. This is how JSON expresses belonging — an address belongs to a user, a country belongs to an address — and it is where reading raw text starts to get hard and a tree starts to pay off.

JSON
{  "address": {    "city": "London",    "country": { "code": "GB" }  }}
In the tree
▾ "address" { } 2 keys
    "city": "London"
  ▾ "country" { } 1 key
      "code": "GB"

Nested array

An array of objects, or an array of arrays. Collections of records arrive this way, and each item gets an index you can follow into a JSON path: users[0] is the first record, users[1] the second.

JSON
{  "users": [    { "id": 1, "city": "London" },    { "id": 2, "city": "New York" }  ]}
In the tree
▾ "users" [ ] 2 items
  ▾ 0 { } 2 keys
      "id": 1
      "city": "London"
  ▸ 1 { } 2 keys

Frequently asked questions

Is this JSON viewer free?

Yes. The tree view, search, expand and collapse controls, JSON paths, statistics, uploads and downloads are all free, with no account, no usage cap and no paid tier. Nothing is held back.

Is my JSON uploaded anywhere?

No. Everything happens inside your browser. The document you paste, drop or open is parsed by JavaScript running on your own machine — it is never sent over the network, never stored and never logged. You can confirm this by watching your browser's network panel, or by disconnecting from the internet after the page loads: the viewer keeps working.

Can I open large JSON files?

Yes. Documents up to roughly 20 MB are supported, and files over about 120 KB are parsed in a background Web Worker so the page never freezes. The tree itself only renders the rows currently on screen, so a 10 MB document scrolls as smoothly as a 10 KB one, however many branches you open.

How do I search inside the JSON?

Type in the search box above the tree, or press Ctrl+F (Cmd+F on a Mac) with the tool focused. Matches are highlighted in place and counted, and the up and down buttons — or Enter and Shift+Enter — step through them one at a time, opening whatever branches are needed to reveal each result. Use the All, Keys and Values buttons to restrict the search to property names or to values only.

Can I copy the JSON path to a value?

Yes. Select any row and its path appears along the bottom of the explorer, in the form $.users[0].address.city, with a button to copy it. The same action is on every row's hover menu and in the right-click menu. Paths use dot notation for ordinary keys and bracket notation for array indexes and keys that are not valid identifiers, so what you copy can be pasted straight into a JSONPath query or adapted for code.

What is the difference between a JSON viewer and a JSON formatter?

A formatter rewrites the text: it re-indents, minifies, sorts keys and hands you a new document to copy. A viewer leaves the text alone and gives you a way to move through the data — expanding branches, following nesting, searching keys, reading one value at a time. Reach for a formatter when the output is what you need, and a viewer when understanding the structure is what you need.

Does it support deeply nested JSON?

Yes. The parser and the tree are both iterative rather than recursive, so nesting depth is limited by available memory rather than by the JavaScript call stack. Documents thousands of levels deep open without error, and each level is indented in the tree so you can always see where you are.

Why does the tree only open the first couple of levels?

Opening everything at once on an unfamiliar document buries the shape you were trying to see, and on a large file it produces hundreds of thousands of rows. Starting two levels deep shows the top-level structure immediately. From there you can open one branch at a time, jump to a level with the numbered buttons, or press Expand all.

Can I view a .json file without uploading it?

Yes — that is the only way this tool works. Use the upload button or drag the file anywhere onto the panel and it is read locally with the browser's FileReader API. The file never leaves your device; "upload" here means "open", not "send".

Does the viewer change my data?

No. The viewer only reads. Expanding, collapsing, searching and copying leave the document exactly as you supplied it, and the display options — quotes, data types, array indexes, compact rows — change what is drawn on screen, not what the data contains. Downloading gives you back the same values, re-indented for readability.

What happens if my JSON is invalid?

The tree cannot be built from a document that does not parse, so the viewer reports the problem instead: what went wrong, the exact line and column, and a plain-language explanation of what the parser expected. The offending line is underlined in the source panel and a button jumps the cursor straight to it.

Can I view JSON on a phone or tablet?

Yes. On narrow screens the source and explorer panels stack behind a switch, the tree scrolls in both directions, and every row action is available from the "…" menu as well as from a right-click, so nothing depends on having a mouse.

Does the viewer work offline?

Once the page has loaded, yes. All parsing and rendering is local, so you can disconnect and keep exploring. A connection is only needed to load the page in the first place.

What are the keyboard shortcuts?

Ctrl+F focuses the search box, Ctrl+Shift+E expands every branch, Ctrl+Shift+C collapses them, and Ctrl+Shift+D downloads the document (use Cmd instead of Ctrl on a Mac). Inside the tree, the arrow keys move between rows, Right opens a branch, Left closes it or steps up to the parent, Enter toggles, and Home and End jump to the first and last row.

Which JSON standard does this follow?

RFC 8259, the current specification, which matches what JSON.parse accepts in browsers and Node.js. Extensions such as JSON5, comments and trailing commas are rejected rather than quietly tolerated. Formats built on top of JSON — JSON Lines and NDJSON, where each line is its own document — need to be wrapped in an array before they will open here.

Popular tools

↑ ↓NavigateOpenEscClose