VisiData (vd): Explore CSV, JSON and Parquet
VisiData (the vd command) is an interactive terminal explorer for tabular and structured data across many formats, with a batch mode that runs a saved command sequence non-interactively.
For eyeballing a large CSV or a JSON export, vd loads it into a spreadsheet-like view where you sort, filter, and pivot with keystrokes. Its batch mode (-b) replays a recorded command file so the same steps can run in CI.
What it does
vd opens a data file (CSV, TSV, JSON, JSONL, Parquet, SQLite, XLSX, and more) in an interactive TUI where you navigate, filter, aggregate, and reshape. It records your keystrokes to a command log you can replay later with -p, and -b runs headless to convert or summarize.
Common usage
vd report.csv
vd data.json
# batch mode: convert CSV to JSONL without the TUI
vd -b report.csv -o report.jsonl
# replay a saved command sequence
vd -b -p analyze.vdj input.csv -o out.csvOptions
| Flag | What it does |
|---|---|
| -b, --batch | Run non-interactively (no TUI) |
| -o <file> | Save/convert output to a file |
| -p <cmdlog> | Replay a recorded command log (.vd/.vdj) |
| -f <format> | Force the input filetype |
| --delimiter <char> | Set the CSV delimiter |
In CI
Interactive vd needs a terminal, but -b makes it scriptable: vd -b in.csv -o out.jsonl converts formats, and -p log.vdj replays a reshape you designed interactively. Explore the data locally, save the command log, then run that exact log in CI so the transformation is reproducible.
Common errors in CI
Running interactive vd headless fails with a curses/terminal error like "setupterm: could not find terminfo database"; always add -b in CI. "Error: no such file" or a loader error means the format was not detected; pass -f. If -f names the wrong type, vd reports a parse error such as an "csv" decode failure. A replayed .vdj that references a column not present in the new input errors mid-replay.