json

FormatValidateConvert

Start over?

This clears both panes. Unsaved changes in either document are lost.

Replace that document?

This writes the matches into the other pane. What is there now is lost.

Load JSON from a URL

Your browser fetches it directly — the request goes to that site, never to us.

    ↑ ↓ to move · Enter to run · Esc to close

    Keyboard shortcuts

    Send feedback

    Questions, bug reports and feature requests are all welcome. A bug report is easiest to act on with the shape of the document that caused it — never send anything confidential.

    Email us

    Contact page, in a new tab, so this page stays as it is.

    Settings

    Indent

    Format and Sort keys write it, and Tab in Code view types it.

    Code text size
    14 px

    Code view and generated code.

    Wrap long lines
    Left pane opens in
    Right pane opens in

    In a new tab and after New. A view you choose in a pane is still remembered.

    JSON Viewer

    On the left pane · one documentOn one document
    0
    0

    About the viewer

    JSON Viewer: read, explore and search JSON.

    Your document never leaves the browser.

    Open a JSON document and read it as a tree, a table or a graph, in your browser, with nothing uploaded. Need to change it, compare two versions or format the text? Open the JSON editor, which is the same app with the text beside the structure.

    What a JSON viewer is for

    JSON is easy for a program to write and hard for a person to read once it grows past a screen. An API response arrives as one long line; a configuration file nests six levels deep; an export holds ten thousand records that all look alike. A viewer turns that text into a structure you can walk: objects and arrays you open and close, every value labelled with its key and its type, and the size of each container shown before you open it.

    That is what this page is for. It opens on a single, full-width pane in Tree view, so the structure has the whole screen, and it leaves the text one click away for the moment you need it.

    Open a file, paste, or load a URL

    There are three ways in. Open a .json file from disk with Open in the pane’s toolbar, or drop one onto the page; choose From URL… in the same menu and give it the address of an API or a file on the web; or switch the pane to Code and paste. The document you had open in the editor is already here too: both pages share this tab’s workspace, so moving between them never loses your place.

    A document that does not parse is not thrown away. The tree shows as much of it as could be read and says that it is incomplete, the text is kept exactly as it arrived, and Repair offers to fix the usual damage — a trailing comma, a single-quoted string, a response cut off halfway.

    Tree, Table and Graph

    1

    Document

    [
      {"name":"Ada","role":"editor"},
      {"name":"Lin","role":"reader"}
    ]
    2

    Table as Markdown

    |    # | name | role   |
    | ---: | ---- | ------ |
    |    0 | Ada  | editor |
    |    1 | Lin  | reader |
    

    Tree is the default because it suits the widest range of documents: every key and value on a row of its own, indented by depth, with a type chip beside each one. Arrow keys move through it, Right and Left open and close, and a tree of two hundred thousand nodes scrolls as smoothly as one of twenty, because only the rows on screen are ever drawn.

    Table is for records. An array of objects becomes rows and columns, the columns the union of every row’s keys, and a nested object or array becomes a badge you can open, with a breadcrumb to find your way back. A wrapper like {"users": [...]} opens straight onto the users. Graph draws the same document as a diagram, root on the left and one column per level, which is the quickest way to see the shape of something you have never met; you can pan, zoom and fit it to the pane.

    Each view, and when to reach for it: Four ways to read a JSON document.

    Find a value, or ask with JSONPath

    1

    Document

    {
      "users": [
        {"name":"Ada","active":true},
        {"name":"Lin","active":false},
        {"name":"Mia","active":true}
      ]
    }
    2

    JSONPath

    $.users[?@.active == true].name
    3

    Matches

    $.users[0].name  "Ada"
    $.users[2].name  "Mia"

    Find, in the editor band or with Ctrl/Cmd-F, searches keys and values as you type and marks every match in the tree. Switch it to JSONPath to ask a question instead — $.orders[*].total, or every item whose price is over a hundred — and the filter hides everything that is not a match or on the way to one, so a large document shrinks to the part you care about. Clear the query and the whole document comes back as it was.

    Copy the path to a value

    1

    Document

    {
      "user": {
        "name": "Ada",
        "roles": ["reader", "editor"],
        "display name": "Ada L."
      }
    }
    2

    Paths

    $.user.name
    $.user.roles[1]
    $.user['display name']
    7 nodes · depth 3

    Select a row in the tree and the bar above it shows where you are: root › users › 3 › email, each step a button that takes you back up to it. Copy path copies that location in the form you need next — as JSONPath, $.users[3].email, ready to paste into Find, or as JavaScript, data.users[3].email, ready for your own code. Keys that are not plain names are quoted for you, so a key with a space or a hyphen still copies as a path that works.

    Open what you need, fold the rest

    A large document opens with its first rows expanded and everything else folded, so the first screen is readable rather than a wall. Open a branch with a click or the Right arrow; Expand all and Collapse all, in the pane’s toolbar, do the whole document at once, and the 1 · 2 · 3 buttons beside them open it to exactly that many levels and fold everything deeper. Tree and Graph share what is open, so a branch you fold in one is folded when you switch to the other.

    Big files, and nothing uploaded

    The parser, the tree and the search are JavaScript running in your browser, written for this site. There is no server behind the page and no account, so a file full of customer records or API keys is read on your own machine and never sent anywhere. Once the page has loaded it keeps working with the connection off. The practical limit on size is your browser’s memory rather than a cap we set. Because the tree draws only the rows on screen, a document of a few megabytes scrolls as easily as a small one; past 10 MB the tree asks before it builds, since building it holds the page for a moment.

    FAQ

    Frequently asked questions

    Didn’t find your answer?Write to us on the contact page →
    What is the difference between this page and the JSON editor?

    Nothing but the way it opens. Both pages are the same app with the same document: this one starts on one pane showing a tree, and the editor starts in whichever mode you left it, with the text beside its structure. Choose Mirror or Compare here and you have the editor. Opening this page never changes the mode the editor opens in; a mode you choose yourself is remembered, as it is anywhere.

    Can I view a JSON file without uploading it?

    Yes, and there is no other way this page works. Opening or dropping a file reads it with your browser’s own file APIs, and the tree is built by JavaScript on your machine. Loading from a URL asks that site for the document directly from your browser; nothing passes through us.

    Why does the tree say my JSON is invalid?

    Because a view of the structure needs a document that parses. The tree still shows what it could read, says how many errors it found and pauses editing until they are fixed; switch the pane to Code and each error is marked where it occurs. Repair, in the editor band, fixes the common cases — trailing commas, single quotes, comments, a response that stopped mid-word — as one step you can undo.

    Can I edit the document from the viewer?

    Yes. A viewer that refused would send you somewhere else for a one-character fix. Click a value in the tree to change it, a key to rename it, or switch to Code and type; every change is one undo, and the document is kept in your browser across a reload.