DOCS / GUI

Desktop app reference.

The jsonbolt desktop app is a viewer for JSON documents. This page covers loading a document, searching the tree, and copying or exporting values from the selection. For the command-line tool, see the CLI docs.

Windows GUI and CLI are generally available. macOS and Linux are in private beta — you can request access from the downloads page.

01Install

Pick the channel that matches your workflow. The GUI installer also bundles the jb CLI binary, so installing one gets you both.

Windows · winget

PS> winget install jsonbolt
# Adds the jsonbolt app, the `jb` CLI, and the .json file association.

Windows · installer

Download jsonbolt-1.4.2-x64.msi from the downloads page. The installer is signed and notarized.

macOS · private beta

$ brew tap jsonbolt/beta
$ brew install --cask jsonbolt

Linux · private beta

$ curl -fsSL https://get.jsonbolt.dev | sh
# Or grab the .deb / .rpm / .AppImage from GitHub Releases.

02Open a file

When jsonbolt starts with no document open, the window shows an empty state with the prompt Open, paste or drag and drop .json file here. There are five ways to load JSON:

MethodUse it when
Drag & drop The file is already visible in Explorer or Finder. Drop it onto the window. Dropping multiple files at once opens each in its own tab.
Paste from clipboard
Ctrl + V
The JSON is on your clipboard, copied from a browser, terminal, or API client. There is no save-to-disk step.
From URL
Ctrl + U
The JSON lives at a URL. The app fetches the response and parses it. Endpoints that need auth can use saved credentials — see Settings.
File picker
Ctrl + O
You know where the file is on disk. This opens the standard OS file picker.
Folder picker
Ctrl + Shift + O
You want every JSON file in a directory at once. Pick a folder and every .json, .ndjson, and .jsonl inside opens in its own tab.

Recently opened files appear under File → Open Recent (last ten, most recent first). To open a second window so you can compare two files side by side, press Ctrl + Shift + N.

After a document loads, the JSON tree fills the main pane. Every node with children can be expanded or collapsed. To expand the selected node by one level, press Alt + →. To expand the entire subtree under the selection, press Shift + Alt + →. The corresponding shortcuts collapse. F5 reloads the source if the file on disk (or the URL) has changed since you opened it.

How a freshly loaded document opens — fully expanded, only the root, or somewhere in between — is configurable. See the Expand mode setting.

To search the loaded document, press Ctrl + F. This focuses the search bar above the tree. As you type, the tree jumps to the first match, expanding any collapsed nodes on the way down so the match is visible.

Three toggles to the left of the search field change how the term is interpreted:

Aa .* K:V Search…
ToggleWhat it does
AaCase-sensitive match. Off by default — email matches Email. Flip on when capitalization carries meaning (e.g. distinguishing id from ID).
.*Treat the term as a regular expression. ^email$ for an exact match, \d{4}-\d{2}-\d{2} for ISO dates, (error|warn) for either word.
K:VSwitch from a single search field to separate Key and Value fields. Covered in Search modes below.

The toggles can be combined. With all three off, the search is at its most permissive: case-insensitive substring matching against both keys and values. Turn on whichever toggles you need to narrow the match.

To step through results, click the and buttons or press F3 and Shift + F3. The tree auto-scrolls to keep the current match in view, expanding nodes as needed.

04Extract

Once a node is selected in the tree, you can copy its value, path, or name to the clipboard, or write it out to a file. The selection is whatever node the cursor is on — a leaf value, an object, or an array.

ActionWhat it copiesShortcut
Copy Value The JSON value at the selection (string, number, object, or array). Single-press copies it as-is. To pick a specific format, use Edit → Copy Selection Value As — covered in Copy & export formats. Ctrl + C
Copy Path The jq-style path to the selection, for example .users[0].email. The path can be pasted directly into the CLI as in jb get .users[0].email file.json. Ctrl + P
Copy Name The leaf segment of the path on its own — for example email for a selection at .users[0].email. Ctrl + N

To write the value to a file instead of the clipboard, use File → Export Selection Value As. The format options are the same as Copy — see the next section.

From the GUI to the CLI. The path produced by Copy Selection Path is in the same form that jb get, jb search --path, and jb extract accept. Click around in the GUI to find what you want, then paste the path into a script. CLI docs →

05Copy & export formats

The Copy Selection Value As and Export Selection Value As submenus both ship the same six output formats. Copy lands on the clipboard; Export writes a file. Pick whichever fits where the data is going next.

FormatReach for it when
Minified JSONPasting into curl, scripts, or other JSON-aware tools where whitespace would be noise.
Formatted JSONDropping into a doc, a ticket, or a PR description where the reader needs to scan it.
Minified XMLOne-line XML for log lines or compact transport. JSON values map to elements named after their keys.
Formatted XMLReading XML in a browser or editor without an XML-aware viewer.
CSVAn array of flat objects you want to open in a spreadsheet. The first object's keys become the column headers.
YAMLConfig files, Kubernetes manifests, GitHub Actions — anywhere YAML is the lingua franca.
XML, CSV, and YAML are derived from the JSON selection, so the round-trip is best-effort. Arrays of heterogeneous objects won't produce clean CSV columns, and deeply nested structures don't always translate cleanly to XML attributes vs. elements. JSON in, JSON out is always lossless.

06Settings

Open the Options dialog from File → Options…. Settings persist to disk and survive restarts. Three panels are wired up today: Appearance, Expand mode, and Credentials.

Appearance

Two knobs:

Expand mode

Controls how a freshly loaded document is laid out before you touch it. Three modes:

ModeBehavior
Always Expand
default
Every node opens. Fine for small and medium documents.
AutoExpands everything when the document has fewer than ~100 leaf values, otherwise leaves only the root open.
Always CollapseOnly the root is open. The choice for huge documents where you want to drill in by hand.

Changing the mode does not retroactively re-collapse the current document — it takes effect the next time a file loads.

Saved URL credentials

For Open from URL, you can save auth per origin so you don't paste a token every time. Three kinds are supported:

On Windows, saved secrets are encrypted at rest with DPAPI. On macOS and Linux they sit in the config file as plain text — so prefer pasting the auth fresh each time if the machine is shared.

The Credentials panel lists everything saved, lets you edit a row, and asks for confirmation before deleting one. Editing a saved credential opens the form pre-filled; switching the type (Basic ↔ Bearer ↔ API Key) clears the previous fields.

07Search modes

The default search is intentionally broad: it matches case-insensitively, anywhere in a value or key, with no regex interpretation. The three toggles narrow the match when you need to be more specific.

Regex (.*)

With .* turned on, the search term is treated as a JavaScript regular expression and matched against keys and values. Some patterns that come up often:

PatternFinds
^email$Exact key or value email — no substring match
\d{4}-\d{2}-\d{2}ISO-like date strings (2026-05-08)
(error|warn|fatal)Any of three log levels
@acme\.(com|io)$Email addresses on a specific domain
^[A-Z]{2,}_[A-Z]+$SCREAMING_SNAKE_CASE constants

The Aa toggle controls case sensitivity in regex mode as well. Leave it off for case-insensitive matching; turn it on when case matters.

Key/Value mode (K:V)

With K:V turned on, the single search bar splits into two fields, Key and Value, side by side:

Aa .* K:V Key… : Value…

Three sub-modes are available depending on which fields you fill in:

FillBehaviorExample
Key only Match any property whose key matches. Value is ignored. Key=email → every property named email
Value only Match any property whose value matches. Key is ignored. Value=@acme → every property containing the string @acme
Key + Value Both fields filled. Both must match on the same property — not separately across the document. Key=email, Value=@acme → only properties named email whose value contains @acme

The Aa and .* toggles apply to both the Key and Value fields when K:V mode is on. For example, with regex turned on, setting Key to ^id$ and Value to E\d{5} finds properties whose key is exactly id and whose value matches a five-digit serial like E00001. The equivalent CLI invocation is jb search --key '^id$' --value 'E\d{5}' -r.

08Keyboard shortcuts

Every shortcut, in one table.

ActionShortcut
New windowCtrl + Shift + N
Open fileCtrl + O
Open folderCtrl + Shift + O
Open from clipboardCtrl + V
Open from URLCtrl + U
FindCtrl + F
Find nextF3
Find previousShift + F3
Copy selection valueCtrl + C
Copy selection pathCtrl + P
Copy selection nameCtrl + N
Expand allShift + Alt +
Expand next levelAlt +
Collapse allShift + Alt +
Collapse current levelAlt +
RefreshF5