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.
01Install
Pick the channel that matches your workflow. The GUI installer also bundles the jb CLI binary, so installing one gets you both.
Windows · installer
Download jsonbolt-1.4.2-x64.msi from the downloads page and run it.
macOS
Download the .dmg from the downloads page, open it, and drag jsonbolt into your Applications folder (Apple Silicon, macOS 14+).
Linux
The Linux build isn't out yet. Drop your email and we'll let you know the moment it's ready.
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 six ways to load JSON:
| Method | Use 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⌘ 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⌘ 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⌘ O |
You know where the file is on disk. This opens the standard OS file picker. |
| Folder picker Ctrl + Shift + O⇧ ⌘ 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. |
| Global hotkey Win + J⌃ ⌥ J |
The JSON is on your clipboard and jsonbolt isn't even open. Press it from any app to bring up jsonbolt and open the clipboard in one step. Off by default — see below. |
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⇧ ⌘ 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⌘ R 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.
Global hotkey
jsonbolt can register a system-wide shortcut so clipboard JSON is one keypress away from any app:
| Shortcut | What it does |
|---|---|
| Win + J⌃ ⌥ J | Focuses jsonbolt — launching it if it isn't running — and opens the clipboard, the same action as in-app Ctrl + V⌘ V. |
| Win + Shift + J⌃ ⌥ ⇧ J | Focuses or launches jsonbolt without touching the clipboard. |
The hotkey is off by default. Turn it on under File → Options… → Launch → Register global hotkeyjsonbolt → Preferences… → Launch → Register global hotkey. Enabling it starts a small jsonbolt background helper (with a per-user startup entry on Windows, a login item on macOS) so the shortcut works anytime; turning the option off removes it again. On macOS the first enable may ask you to approve jsonbolt under System Settings → General → Login Items — no Accessibility permission is needed. On Windows, enabling fails with a message if another app already owns Win + J.
03Search
To search the loaded document, press Ctrl + F⌘ 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:
| Toggle | What it does |
|---|---|
| Aa | Case-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:V | Switch 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⌘ G and Shift + F3⇧ ⌘ G. 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.
| Action | What it copies | Shortcut |
|---|---|---|
| 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⌘ 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⇧ ⌘ P |
| Copy Name | The leaf segment of the path on its own — for example email for a selection at .users[0].email. |
Ctrl + NNo shortcut — use the Edit menu or right-click the node |
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.
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.
| Format | Reach for it when |
|---|---|
| Minified JSON | Pasting into curl, scripts, or other JSON-aware tools where whitespace would be noise. |
| Formatted JSON | Dropping into a doc, a ticket, or a PR description where the reader needs to scan it. |
| Minified XML | One-line XML for log lines or compact transport. JSON values map to elements named after their keys. |
| Formatted XML | Reading XML in a browser or editor without an XML-aware viewer. |
| CSV | An array of flat objects you want to open in a spreadsheet. The first object's keys become the column headers. |
| YAML | Config files, Kubernetes manifests, GitHub Actions — anywhere YAML is the lingua franca. |
06Settings
Open the Options dialog from File → Options….Open the Preferences dialog from jsonbolt → Preferences… in the app menu, or press ⌘ ,. Settings persist to disk and survive restarts. Four panels are wired up today: Appearance, Expand mode, Credentials, and Launch.
Appearance
Two knobs:
- Theme — Light, Dark, or System (the default, which follows the OS theme). Pin it to Light or Dark if you don't want the app shifting on you when the OS switches at sunset.
- Row colors — pick custom odd/even row colors for the JSON tree, separately for the light and dark themes. The Reset button restores the defaults for that theme.
Expand mode
Controls how a freshly loaded document is laid out before you touch it. Three modes:
| Mode | Behavior |
|---|---|
| Always Expand default | Every node opens. Fine for small and medium documents. |
| Auto | Expands everything when the document has fewer than ~100 leaf values, otherwise leaves only the root open. |
| Always Collapse | Only 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:
- Basic — username and password, sent as an HTTP Basic header.
- Bearer — a token sent as
Authorization: Bearer <token>. - API Key — an arbitrary header name and value (default header is
X-API-Key).
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.
Launch
Register the global hotkey (Win + J⌃ ⌥ J) that launches jsonbolt and opens the clipboard from anywhere. See Open a file for details.
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:
| Pattern | Finds |
|---|---|
^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:
Three sub-modes are available depending on which fields you fill in:
| Fill | Behavior | Example |
|---|---|---|
| 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.
| Action | Shortcut |
|---|---|
| New window | Ctrl + Shift + N⇧ ⌘ N |
| Open file | Ctrl + O⌘ O |
| Open folder | Ctrl + Shift + O⇧ ⌘ O |
| Open from clipboard | Ctrl + V⌘ V |
| Open from URL | Ctrl + U⌘ U |
| Find | Ctrl + F⌘ F |
| Find next | F3⌘ G |
| Find previous | Shift + F3⇧ ⌘ G |
| Copy selection value | Ctrl + C⌘ C |
| Copy selection path | Ctrl + P⇧ ⌘ P |
| Copy selection name | Ctrl + NNo shortcut — Edit menu or right-click |
| Expand all | Shift + Alt + →⌥ ⇧ → |
| Expand next level | Alt + →⌥ → |
| Collapse all | Shift + Alt + ←⌥ ⇧ ← |
| Collapse current level | Alt + ←⌥ ← |
| Refresh | F5⌘ R |
| Launch jsonbolt and open clipboard — global, opt-in | Win + J⌃ ⌥ J |
| Launch or focus jsonbolt — global, opt-in | Win + Shift + J⌃ ⌥ ⇧ J |
The last two are the only system-wide shortcuts, and they only work after the hotkey is enabled — see Global hotkey.