tuitab
June 14, 2026 · View on GitHub
A fast, keyboard-driven terminal explorer for tabular data.
Open CSV · JSON · Parquet · Excel · SQLite · DuckDB straight from your shell — filter, sort, pivot, join, compute columns, and chart distributions without leaving the terminal.

tuitab data.csv # open a file
tuitab orders.csv customers.csv # browse several files as a list
cat data.csv | tuitab -t csv # read from a pipe
New to tuitab? Jump to the Quick start, or read the full Documentation — available in English and Русский.
Highlights
- Six input formats — CSV/TSV (auto-delimiter), JSON, Parquet, Excel (xlsx/xls), SQLite, DuckDB. Browse a whole directory, or pipe data in over stdin.
- Vim-style navigation —
hjkl,gg/G, page jumps, sticky pinned columns. - Instant analysis — per-column statistics, frequency tables, and charts (histogram, bar, line, grouped bar) rendered right in the terminal.
- Reshape on the fly — pivot tables, JOINs across files, transpose, computed columns from an expression language.
- Clean, fast, type-aware — Polars-backed engine, Everforest theme, undo/redo, currency / percentage / date column types.
- Export anywhere — write back to CSV, TSV, Parquet, JSON, Excel, or SQLite; yank rows to the clipboard as TSV, CSV, JSON, or Markdown.
See it in action
Charts — histogram, bar, line, grouped bar
Press V on any column. Numeric columns get a Freedman–Diaconis histogram;
categorical columns get a frequency bar chart. Pin a date or
category column first with ! to draw line charts and grouped bars.

Pivot tables
Pin the column(s) to group by, place the cursor on the column to spread across,
press W, and type an aggregation formula such as sum(revenue).

JOIN across files
Press J for a step-by-step wizard: pick another file (or an open sheet),
choose INNER / LEFT / RIGHT / OUTER, and select the key columns.

Computed columns
Press = and type an expression. Arithmetic, string and date functions, and
conditionals are all supported — the new column appears right next to the cursor.

Installation
Cargo (crates.io)
cargo install tuitab
Installs three commands: tuitab, plus the shorter aliases ttab and ttb.
Homebrew (macOS / Linux)
brew tap denisotree/tuitab
brew install tuitab
Arch Linux (AUR)
yay -S tuitab # pre-built binary: tuitab-bin
# or build from source:
git clone https://aur.archlinux.org/tuitab.git && cd tuitab && makepkg -si
Debian / Ubuntu
Download the .deb from the Releases page, then:
sudo dpkg -i tuitab_*_amd64.deb
Pre-built binaries
Grab a tarball for your platform (Linux / macOS, x86_64 / aarch64) from the Releases page.
Building from source
cargo build --release
The default build bundles DuckDB and SQLite from source, so the binary is fully self-contained — no system libraries required. This compiles DuckDB's C++ core (~5 min the first time).
To skip that and link a system DuckDB instead:
brew install duckdb # macOS
sudo apt install libduckdb-dev # Debian / Ubuntu
cargo build --release --no-default-features
| Feature | Default | Description |
|---|---|---|
bundled-duckdb | ✓ | Compile DuckDB from source; no system libduckdb needed |
Quick start
cargo install tuitab
tuitab data.csv
- Move with
hjkl; jump withgg/G. - Sort the current column:
[ascending,]descending,rto reset. - Chart it:
V. Per-column stats:I. Frequency table:F. - Select rows by an expression:
|!=amount > 1000. - Add a column:
=then e.g.revenue / units. - Save / export:
Ctrl+S. Quit:q. Help at any time:?.
Usage
tuitab [OPTIONS] [FILES]...
Arguments:
[FILES]... One or more files to open, a directory, or '-' for stdin.
Pass multiple files to browse them as a list.
Defaults to the current directory.
Options:
-d, --delimiter <CHAR> Column delimiter (auto-detected if omitted)
-t, --type <FORMAT> Format when reading from stdin: csv, tsv, txt, json
-h, --help Print help
-V, --version Print version
Browse several files
tuitab orders.csv customers.csv products.parquet
A directory-style listing opens with each file as a row. Press Enter to open
one; Esc or q to go back.
Pipe mode
psql -c "SELECT * FROM orders" --csv | tuitab -t csv
sqlite3 app.db ".mode csv" ".headers on" "SELECT * FROM users" | tuitab -t csv
Stdin accepts
csv,tsv,txt, andjson. For Parquet/Excel/SQLite, open the file directly.
Keybindings
The essentials — see the full keybinding reference for every command (column ops, clipboard, dedup, and more).
| Key | Action | Key | Action |
|---|---|---|---|
h j k l | Move cursor | [ / ] | Sort asc / desc |
gg / G | First / last row | r | Reset sort |
Ctrl+B / Ctrl+F | Page up / down | / | Search (regex) |
! | Pin / unpin column | | | Select rows by regex / expression |
= | Add computed column | , | Select rows by value |
V | Chart column | s / u | Select / unselect row |
I | Column statistics | + / - | Add / clear aggregator |
F | Frequency table | t | Set column type |
W | Pivot table | Enter | Transpose row / drill down |
J | JOIN with another table | T | Transpose table |
Ctrl+S | Save / export | U / Ctrl+R | Undo / redo |
? | Help | q | Quit / pop sheet |
Non-QWERTY layouts (ЙЦУКЕН, QWERTZ, AZERTY) are transparently remapped, so the hotkeys work regardless of your keyboard.
Documentation
Full guides, organised by topic, in two languages:
| 🇬🇧 English | 🇷🇺 Русский |
|---|---|
| Documentation index | Оглавление документации |
| Getting started | Начало работы |
| Keybindings | Горячие клавиши |
| Expressions | Выражения |
| Charts | Графики |
| JOIN | JOIN |
| Pivot tables | Сводные таблицы |
| Recipes | Рецепты |
Acknowledgements
tuitab is inspired by VisiData — a brilliant terminal spreadsheet multitool by Saul Pwanson. If you find tuitab useful, check out VisiData too. Built with ratatui, Polars, and crossterm.
Contributing
Bug reports, feature requests, and pull requests are welcome. See CONTRIBUTING.md.
License
Apache-2.0 — see LICENSE.