Interactive JSON Data Explorer
Think jq meets a code editor — with AI.
$ cargo install jdx
Everything you need to explore, query, and transform structured data in the terminal.
Dot-notation paths like .users[0].name with filter predicates and compound && / || logic. Every keystroke updates the view instantly.
Chain :pick, :sort, :filter, :reverse, :upper, and 14 more transforms directly in your query.
Press Tab for fuzzy-matched key suggestions at current depth. Ghost text shows the top candidate inline, like fish shell.
Split panel with a collapsible tree view. Expand, collapse, and navigate nodes with arrow keys. Syncs with the query input.
Infers the shape of your data — types, optional fields, value ranges, and array lengths. Great for unfamiliar APIs.
Ask questions in plain English. The AI sees your data and answers directly. Supports OpenAI, Anthropic, and local Ollama models.
Auto-detects JSON, YAML, TOML, CSV, and NDJSON input. Output in any format with a flag.
Pipe a streaming source and explore immediately. Updates live as new lines arrive with a streaming indicator.
Copy values with Ctrl+Y, bookmark paths with Ctrl+D, and search through saved query history with Ctrl+R.
A few examples of what jdx can do.
# Pipe JSON from any source $ curl -s https://api.github.com/repos/rust-lang/rust | jdx # Open a file directly $ jdx data.json # YAML, TOML, CSV are auto-detected $ cat config.yaml | jdx
# Dot-notation with filter predicates .store.books[price < 10].title # Compound filters with && and || .items[price > 5 && price < 20] .users[role == "admin" || role == "mod"] # Chain transforms .users :pick name,age :filter age > 25 :sort age desc # Aggregations & string transforms .store.books :sum price .names :upper :reverse .date :split - :reverse :join /
# Press / to enter AI mode, then ask in plain English "what is the total price of all books?" "which books cost less than $10?" "who are the admin users?" # The AI answers directly and suggests a jdx query # Press Enter to apply the suggested query
# Convert between formats $ jdx data.json --output yaml $ cat data.csv | jdx --input csv # Stream NDJSON in real time $ tail -f logs.jsonl | jdx --input ndjson $ docker logs -f myapp | jdx --input ndjson
How jdx stacks up against other JSON tools.
| Feature | jdx | jq | jid | fx | jless |
|---|---|---|---|---|---|
| Interactive TUI | ✓ | — | ✓ | ✓ | ✓ |
| Fuzzy completion | ✓ | — | Prefix | — | — |
| Tree navigation | ✓ | — | — | — | ✓ |
| Schema inspector | ✓ | — | — | — | — |
| AI queries | ✓ | — | — | — | — |
| Inline transforms | ✓ | ✓ | — | ✓ | — |
| Filter predicates | ✓ | ✓ | — | ✓ | — |
| Multi-format input | ✓ | — | — | ✓ | — |
| Streaming NDJSON | ✓ | ✓ | — | ✓ | — |
| Clipboard copy | ✓ | — | — | — | — |
| Query history | ✓ | — | — | — | — |
| Written in | Rust | C | Go | Go | Rust |
Get started in seconds. Single binary, no dependencies.
From crates.io
cargo install jdx
macOS / Linux
brew install eladbash/jdx/jdx