Results pane
Stop manually typing long jq paths to explore nested JSON — navigate the output visually and let jiq build the path for you.
You guess at paths, hit errors, retype, try again:
Move the cursor to the row you want, press >:
To focus the results pane, press Shift+Tab or click it.
Navigate the output
Use j and k (or arrow keys) to move the cursor one line at a time.
| To move | Press |
|---|---|
| 1 line | j k ↑ ↓ |
| 10 lines | J K |
| Half page | Ctrl+d Ctrl+u PgDn PgUp |
| First line | g Home |
| Last line | G End |
| 1 column left/right | h l ← → |
| 10 columns left/right | H L |
| Left edge | 0 |
| Right edge | $ |
A two-finger horizontal trackpad swipe also scrolls the output left/right, on terminals that emit horizontal scroll events (Ghostty, kitty, WezTerm; inside tmux requires tmux 3.4+). See Mouse.
The title bar shows the result type and the jq path of the value on the cursor row.
Zoom into a nested value
When you see a nested object or array you want to inspect, move the cursor to that row and press >.
jiq appends the path of that value to your current query and re-runs it. The output now shows only that piece of data.
Step back to the previous query
Press < to undo the last zoom. jiq restores the previous query, cursor position, and scroll offset.
A clickable [ < Back ] badge also appears on the top-left of the results pane border whenever there is something to step back to. Click it to undo the last zoom — same effect as the keyboard chord.
You can zoom in multiple levels — each > is remembered, and each < steps back one level.
Expand an array
When the cursor is on an element inside an array and you want to see all elements at once, press *.
jiq replaces the array index in the path with [], showing every element.
Step up one level
Press ^ to remove the last segment from the path — moving up the hierarchy.
Unlike <, pressing ^ does not push to the history ring — you cannot < back through it.
Show a value alongside its key
When a value like "alice" is useful but you also want to see its key, move the cursor to that value and press }.
jiq rewrites the query to wrap the value in an object: .users[0].name becomes .users[0] | {name}, showing {"name": "alice"}.
Walk between siblings
When the cursor is on a child of an object or array, hop to the next or previous sibling without scrolling line by line:
- Press ] to jump to the next sibling
- Press [ to jump to the previous sibling
The cursor lands on the sibling’s row — the query is not rewritten. Wraps around at the boundaries.
Use this to scan an object’s keys or array elements quickly, then press > to zoom into the one you want.
Select and copy specific lines
To copy only part of the output:
To copy the entire result without selecting, press Ctrl+Y or Ctrl+O from anywhere.
Decode an error
When a query fails, the ⚠ Syntax Error badge appears and the last successful result stays on screen. Press Ctrl+E to open the error overlay.
jiq rewrites jq’s terse stderr into a plain-language explanation plus a concrete fix, so you rarely have to decode the raw message yourself:
The overlay recognizes the common failure modes — incomplete queries, type and index mismatches, iterating over a non-collection, unusable field names, and unknown functions (with a “did you mean” suggestion). Anything it doesn’t recognize is shown verbatim, so no detail is lost.
This works across jq 1.6 and newer. Older jq releases phrase errors differently and append a misleading (Unix shell quoting issues?) hint; jiq normalizes those so the overlay reads the same regardless of which jq you have installed.
The AI assistant still receives jq’s raw error message, which language models read fluently.
Read the status indicators
| Indicator | What it means |
|---|---|
L1-20/100 (0%) (top-right border) |
Line/position indicator: visible line range, total lines, and scroll percentage. It lives in the top-right corner of the results border so it stays visible even when the AI or help box overlays the bottom of the screen. During an active search the match count takes this slot instead. |
Syntax Error |
The query has a syntax error; the previous result stays visible |
No Results |
The query is valid but produces no output |
No Matches |
A search is active but nothing matched |
| Execution time in yellow | The query took 200ms-1s |
| Execution time in red | The query took over 1s |
All keys
| Key | Action |
|---|---|
j k ↑ ↓ |
Move cursor 1 line |
J K |
Move 10 lines |
Ctrl+d PgDn |
Half page down |
Ctrl+u PgUp |
Half page up |
g Home |
First line |
G End |
Last line |
h l ← → |
Scroll 1 column |
H L |
Scroll 10 columns |
0 |
Left edge |
$ |
Right edge |
> |
Zoom into value at cursor |
< |
Step back to previous query |
* |
Expand array at cursor |
^ |
Remove last path segment |
} |
Wrap leaf value as {key} object |
] [ |
Jump cursor to next / previous sibling (wraps) |
v V |
Enter visual line selection |
y |
Copy selection (or full result if none) |
| Horizontal swipe (two fingers) | Scroll left/right (terminal-dependent) |