Getting started

August 18, 2026 Β· View on GitHub

πŸ‡·πŸ‡Ί Π­Ρ‚Π° страница Π½Π° русском Β· ← Documentation index

Install

The quickest route is Cargo:

cargo install tuitab

This installs three identical commands β€” tuitab and the shorter aliases ttab and ttb. Other options (Homebrew, AUR, Debian, pre-built binaries) are in the main README.

Open a file

Pass any supported file as the first argument:

tuitab data.csv
tuitab report.parquet
tuitab books.xlsx
tuitab app.db
FormatExtensionsNotes
CSV / TSV.csv, .tsvDelimiter auto-detected; override with -d
JSON.jsonOpens as a tree over the real document
JSONL / NDJSON.jsonl, .ndjsonOne record per line
YAML.yaml, .ymlTree, like JSON
TOML.tomlTree, like JSON
Parquet.parquetColumnar, fast
Arrow / Feather.arrow, .feather, .ipcRead and written
Excel.xlsx, .xlsMulti-sheet workbooks open as a sheet list
Markdown.md, .markdownA page is one row: frontmatter fields are columns, the text is body, the path is file
SQLite.sqlite, .sqlite3, .dbTables open as a table list
DuckDB.duckdb, .ddb, .dbWhich engine a .db is comes from the file's own header, not its name

For workbooks and databases, tuitab first shows an overview (sheets or tables); press Enter on a row to open it, Esc / q to go back. Tables can be edited and saved back β€” see Databases.

JSON, YAML and TOML are not flattened into a copy: the sheet is a view over the document itself, Enter dives into a nested object or list, and saving re-serialises the tree. Converting between them is just a different extension on Ctrl+S.

A TOML file edited in place and saved as YAML

Force a format

-t is required for stdin, and for a file it overrides the extension:

tuitab -t yaml deploy.conf     # a YAML file that is not called .yaml

An unknown extension is decided by the contents, so deploy.conf usually opens correctly with no flag at all.

Open a database that does not exist yet

tuitab inventory.sqlite        # nothing there β€” a blank sheet opens

Add columns, give them types, add rows, Ctrl+S, and tuitab writes a real typed table. See Databases.

Override the delimiter

When auto-detection guesses wrong (or you have a ;-separated file):

tuitab data.csv -d ';'

Browse several files

Pass more than one path and tuitab opens a file list instead of a single table:

tuitab orders.csv customers.csv products.parquet

Each file becomes a row showing its name, size, and modified time. Enter opens the highlighted file; Esc / q returns to the list.

Browse a directory

Point tuitab at a folder (or run it with no arguments to use the current one):

tuitab ./reports/
tuitab               # current directory

You get a navigable file browser β€” open files with Enter, step back out with Esc / q.

Read from a pipe

tuitab reads from stdin when data is piped in. Tell it the format with -t:

cat data.csv | tuitab -t csv
psql -c "SELECT * FROM orders" --csv | tuitab -t csv
echo '[{"id":1,"name":"Alice"}]'   | tuitab -t json

Stdin understands csv, tsv, txt, json, jsonl/ndjson, yaml/yml and toml. (txt is treated as CSV.) To read Parquet, Arrow, Excel, Markdown, SQLite, or DuckDB, open the file by path instead of piping it. - works as an explicit stdin path: cat data.csv | tuitab -t csv -.

The screen

β”Œ sample.csv ───────────────────────────────────────┐
β”‚  id  sβ”‚ name        sβ”‚ age #β”‚ salary  ~β”‚ department sβ”‚   ← header row (name + type icon)
β”‚β–Œ 1    β”‚ Alice Johnsonβ”‚ 30   β”‚ 75000.00 β”‚ Engineering β”‚   ← cursor row (highlighted)
β”‚  2    β”‚ Bob Smith    β”‚ 45   β”‚ 92000.50 β”‚ Management  β”‚
β”‚  …                                                  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ NORMAL   Loaded 20 rows                  row 3/20 col 3/5 β”‚  ← status bar
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
  • The header shows each column name plus a small type icon (s string, # integer, ~ float, d date, t datetime, % percentage, $ currency, B file size, ? boolean).
  • The status bar shows the current mode, a message, and your position.
  • Press ? at any time for the in-app help overlay.

Next steps