JSON TUI
Json TUI is a terminal JSON viewer with columnar navigation, inspired by JSON Hero but working in your cli and respecting your privacy.
Why?
I love JSON Hero, but in real life, privacy is a serious issue. In some companies I've worked at, leaked client data can get you fired or worse. In my everyday work, unreadable JSON responses (very long ones) happen frequently, so this viewer gives me a similar experience without any data leak risk.
What's it solving?
- Offline - no data sent to any server
- Terminal-based - no need for a browser or GUI (works over SSH or inside pods/containers)
- Python-based - easy to install and extend
- Performance - using Python means I can extend it with Rust for performance-critical parts if needed
- UV compatibility - can be easily installed and run with UV
Features
- Columnar Navigation: Navigate nested JSON structures in a multi-column view
- Keyboard-driven: Vim-style keybindings (hjkl) and arrow keys
- Syntax Highlighting: Color-coded values by type (strings, numbers, booleans, null)
- Live Preview: See full values in the preview panel
- Path Breadcrumbs: Always know where you are in the structure
- Stdin Support: Pipe JSON directly from curl or other commands
Installation
# Easy with UV
uv tool install json-tui
# Also pip works
pip install json-tui
Usage
# View a JSON file
json-tui data.json
# Pipe from stdin
curl https://api.example.com/data | json-tui --stdin
# Or use echo
echo '{"hello": "world", "nested": {"key": "value"}}' | json-tui -s
Keybindings
| Key | Action |
|---|---|
↑ / k |
Move up in current column |
↓ / j |
Move down in current column |
← / h |
Focus previous column |
→ / l |
Focus next column / expand |
Enter |
Expand selected node |
Backspace / Esc |
Collapse / go back |
? |
Show help |
q |
Quit |
Development
# Run directly with UV
uv run json-tui sample.json
# Or activate the venv
source .venv/bin/activate
json-tui examples/sample.json
Next Steps
- parse json using rust for better performance or py threads
- improve long columns handling
- fuzzy search
- copy curent value/node to clipboard
Complementary Tools
Before start working on this project i've looked at existing tools, and here are some that helped me and i'm still using some of them:
- Visi Data : json and a lot more visualization on your terminal.
- fx : polished dropdown based viewer using go.
- jless : json reader and searcher in rust
- jq: the mature solution on json search and prettify, not "real time" or tui.
- jqp : the missing part of jq, tui + live preview.
- json-tui: using c++ similar to fx.
License
MIT
Release files for json-tui 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| json_tui-1.1.1.tar.gz | 463.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| json_tui-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:479.0 kB
Release files / json_tui-1.1.1.tar.gz
| Download URL | json_tui-1.1.1.tar.gz |
|---|---|
| Size | 463.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
838df2f1c062805e99921b16bedcf2373d302cf5c65962d7a3e6b59c65d30ee5
|
|
BLAKE2b-256 checksum How to use checksums |
5b3fdbce37704e2119ed223e20722c92c4493842713a80aec086caf95714a6bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / json_tui-1.1.1-py3-none-any.whl
| Download URL | json_tui-1.1.1-py3-none-any.whl |
|---|---|
| Size | 15.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9e9a599f9127c85819741c54fce2098b9614e17327ee394c1fe109f4a8d48048
|
|
BLAKE2b-256 checksum How to use checksums |
f9c4329c185213a84a3d181678f6352d26ef561ef8b0f7c608f628f7a62a5307
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|