#json-query #jq #tui #interactive

app jiq

Interactive JSON query tool with real-time output

33 stable releases

Uses new Rust 2024

new 2.20.3 Dec 2, 2025
2.20.2 Dec 1, 2025
2.19.3 Nov 30, 2025

#38 in Development tools

25 downloads per month

MIT/Apache

770KB
15K SLoC

jiq — Interactive JSON query tool with real-time output

Features

  • Real-time query execution - See results as you type
  • [EXPERIMENTAL] Context-aware autocomplete - Intelligent suggestions with JSON type information for fields and functions
  • Function tooltip - Quick reference help for jq functions with examples
  • Search in results - Find and navigate text in JSON output with highlighting
  • Query history - Searchable history of successful queries
  • Clipboard support - Copy query or results to clipboard (also supports OSC 52 for remote terminals)
  • Floating error overlay - Syntax errors appear in a non-disruptive overlay
  • VIM keybindings - VIM-style editing for power users
  • [EXPERIMENTAL] Syntax highlighting - Colorized JSON output and jq query syntax (experimental)
  • Stats bar - Shows result type and count (e.g., "Array [5 objects]", "Stream [3 values]")
  • Flexible output - Export results or query string

Demo

Installation

Requirements

Install via Script (macOS/Linux)

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/bellicose100xp/jiq/releases/latest/download/jiq-installer.sh | sh

Install via Homebrew (macOS)

brew install bellicose100xp/tap/jiq

Install via Cargo

cargo install jiq

Download Binary

Download pre-built binaries from GitHub Releases

From Source
git clone https://github.com/bellicose100xp/jiq
cd jiq
cargo build --release
sudo cp target/release/jiq /usr/local/bin/

Quick Start

# From file
jiq data.json

# From stdin
cat data.json | jiq
echo '{"name": "Alice", "age": 30}' | jiq
curl https://api.example.com/data | jiq

Usage

Workflow:

  1. Start typing your jq query (begins in INSERT mode)
  2. Use autocomplete suggestions for functions and fields (Tab to accept)
  3. See results update in real-time
  4. Press Shift+Tab to navigate results
  5. Press Enter to output results, or Ctrl+Q to output query

VIM users: Press ESC to enter NORMAL mode for advanced editing.

Keybindings

Global Keys (work anywhere)
Key Action
F1 or ? Toggle keyboard shortcuts help popup
Shift+Tab Switch focus between Input and Results
Ctrl+Y Copy current query or results to clipboard
yy Copy current query or results to clipboard (NORMAL mode)
Ctrl+T Toggle function tooltip (when cursor is on a function)
Ctrl+E Toggle error overlay (when syntax error exists)
Enter Exit and output filtered JSON
Ctrl+Q Exit and output query string only (Shift+Enter may also work in some modern terminal emulators)
q / Ctrl+C Quit without output
Input Field - INSERT Mode (cyan border)
Key Action
Type characters Edit jq query (real-time execution)
Tab Accept autocomplete suggestion
/ Navigate autocomplete suggestions
/ Move cursor
Home / End Jump to line start/end
Backspace / Delete Delete characters
ESC Switch to NORMAL mode / Close autocomplete
Input Field - NORMAL Mode (yellow border)

Navigation

Key Action
h / Move left
l / Move right
0 / ^ / Home Line start
$ / End Line end
w Next word start
b Previous word start
e Word end

Editing

Key Action
i Enter INSERT at cursor
a Enter INSERT after cursor
I Enter INSERT at line start
A Enter INSERT at line end
x Delete char at cursor
X Delete char before cursor

Operators (delete/change + motion)

Key Action
dw / db / de Delete word forward/back/end
d$ / d0 / d^ Delete to end/start
dd Delete entire line
D Delete to end of line (same as d$)
cw / cb / ce Change word forward/back/end
c$ / c0 / c^ / cc Change to end/start/entire line
C Change to end of line (same as c$)

Undo/Redo

Key Action
u Undo
Ctrl+r Redo
Results Pane (when focused)
Key Action
j / k / / Scroll 1 line
J / K Scroll 10 lines
h / l / / Scroll 1 column
H / L Scroll 10 columns
0 / ^ Jump to left edge
$ Jump to right edge
Ctrl+d / PageDown Scroll half page down
Ctrl+u / PageUp Scroll half page up
g / Home Jump to top
G / End Jump to bottom
Search in Results
Key Action
Ctrl+F Open search (from any pane)
/ Open search (from results pane)
Enter Confirm search and jump to next match
n / Enter Next match
N / Shift+Enter Previous match
Ctrl+F / / Re-enter edit mode
ESC Close search

Note: Search is case-insensitive.

Query History (last 1000 entries)

Successful queries are saved to your platform's application data directory:

  • Linux: ~/.local/share/jiq/history
  • macOS: ~/Library/Application Support/jiq/history
  • Windows: %APPDATA%\jiq\history

Quick Cycling (without opening popup):

Key Action
Ctrl+P Previous (older) query
Ctrl+N Next (newer) query

History Search Popup:

Key Action
Ctrl+R or Open history search
/ Navigate entries
Type characters Fuzzy search filter
Enter / Tab Select entry and close
ESC Close without selecting

Examples

Filter active users:

cat users.json | jiq
# Type: .users[] | select(.active == true)
# Press Enter to output results

Extract query for scripts:

cat data.json | jiq
# Experiment with: .items[] | select(.price > 100) | .name
# Press Ctrl+Q to get just the query string

Pipeline integration:

# Build query interactively, then reuse
QUERY=$(echo '{}' | jiq)  # Press Ctrl+Q after building query
echo $QUERY | xargs -I {} jq {} mydata.json

Tips

  • Empty query shows original JSON (identity filter .)
  • Invalid queries display Syntax Error message above input while preserving last successful output.
  • Results auto-scroll to top when query changes

Configuration

jiq looks for a configuration file at ~/.config/jiq/config.toml (or the platform default location).

[clipboard]
# Clipboard backend: "auto" (default), "system", or "osc52"
# - auto: tries system clipboard first, falls back to OSC 52
# - system: use only OS clipboard (may not work in SSH/tmux)
# - osc52: use terminal escape sequences (works in most modern terminals over SSH)
backend = "auto"

Known Limitations

  • Autocomplete - Suggestions are based on output visible in results area. Editing in the middle of a query may produce suboptimal or no suggestions.
  • Syntax highlighting - Basic keyword-based only, does not analyze structure like tree-sitter.

Contributing

See CONTRIBUTING.md for guidelines on code architecture, testing, and pull requests.

License

Dual-licensed under MIT OR Apache-2.0

Dependencies

~15–32MB
~475K SLoC