{"id":49681345,"url":"https://github.com/denisotree/tuitab","last_synced_at":"2026-06-15T22:00:52.625Z","repository":{"id":350213216,"uuid":"1205805722","full_name":"denisotree/tuitab","owner":"denisotree","description":"A fast, keyboard-driven terminal explorer for tabular data. Open CSV, JSON, Parquet, Excel and SQLite files directly in your terminal — filter, sort, pivot, compute new columns, and visualise distributions without leaving the shell","archived":false,"fork":false,"pushed_at":"2026-06-14T14:01:10.000Z","size":3457,"stargazers_count":23,"open_issues_count":5,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-14T15:27:58.944Z","etag":null,"topics":["cli","csv","data-analysis","data-exploration","dataframe","duckdb","excel","parquet","polars","ratatui","rust","spreadsheet","sqlite","tabular-data","terminal","tui","vim"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/denisotree.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-09T09:44:49.000Z","updated_at":"2026-06-14T13:58:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/denisotree/tuitab","commit_stats":null,"previous_names":["denisotree/tuitab"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/denisotree/tuitab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denisotree%2Ftuitab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denisotree%2Ftuitab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denisotree%2Ftuitab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denisotree%2Ftuitab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/denisotree","download_url":"https://codeload.github.com/denisotree/tuitab/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/denisotree%2Ftuitab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34348302,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","csv","data-analysis","data-exploration","dataframe","duckdb","excel","parquet","polars","ratatui","rust","spreadsheet","sqlite","tabular-data","terminal","tui","vim"],"created_at":"2026-05-07T07:00:51.524Z","updated_at":"2026-06-15T22:00:52.619Z","avatar_url":"https://github.com/denisotree.png","language":"Rust","funding_links":[],"categories":["SQL Clients and IDE that Support DuckDB","Rust"],"sub_categories":["Web Clients (WebAssembly)"],"readme":"# tuitab\n\n\u003cdiv align=\"center\"\u003e\n\n[![CI](https://github.com/denisotree/tuitab/actions/workflows/ci.yml/badge.svg)](https://github.com/denisotree/tuitab/actions/workflows/ci.yml)\n[![crates.io](https://img.shields.io/crates/v/tuitab.svg)](https://crates.io/crates/tuitab)\n[![docs.rs](https://img.shields.io/docsrs/tuitab)](https://docs.rs/tuitab)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](https://github.com/denisotree/tuitab/blob/master/LICENSE)\n\n**A fast, keyboard-driven terminal explorer for tabular data.**\n\nOpen **CSV · JSON · Parquet · Excel · SQLite · DuckDB** straight from your shell —\nfilter, sort, pivot, join, compute columns, and chart distributions without\nleaving the terminal.\n\n![tuitab demo — open, sort, chart, describe](https://raw.githubusercontent.com/denisotree/tuitab/master/.github/assets/demo.gif)\n\n\u003c/div\u003e\n\n```sh\ntuitab data.csv                   # open a file\ntuitab orders.csv customers.csv   # browse several files as a list\ncat data.csv | tuitab -t csv      # read from a pipe\n```\n\n\u003e **New to tuitab?** Jump to the [Quick start](#quick-start), or read the full\n\u003e [**Documentation**](#documentation) — available in **English** and **Русский**.\n\n---\n\n## Highlights\n\n- **Six input formats** — CSV/TSV (auto-delimiter), JSON, Parquet, Excel (xlsx/xls),\n  SQLite, DuckDB. Browse a whole directory, or pipe data in over stdin.\n- **Vim-style navigation** — `hjkl`, `gg`/`G`, page jumps, sticky pinned columns.\n- **Instant analysis** — per-column statistics, frequency tables, and charts\n  (histogram, bar, line, grouped bar) rendered right in the terminal.\n- **Reshape on the fly** — pivot tables, JOINs across files, transpose, computed\n  columns from an expression language.\n- **Clean, fast, type-aware** — Polars-backed engine, Everforest theme, undo/redo,\n  currency / percentage / date column types.\n- **Export anywhere** — write back to CSV, TSV, Parquet, JSON, Excel, or SQLite;\n  yank rows to the clipboard as TSV, CSV, JSON, or Markdown.\n\n---\n\n## See it in action\n\n### Charts — histogram, bar, line, grouped bar\n\nPress `V` on any column. Numeric columns get a Freedman–Diaconis histogram;\ncategorical columns get a frequency bar chart. [Pin](#keybindings) a date or\ncategory column first with `!` to draw line charts and grouped bars.\n\n![Charts](https://raw.githubusercontent.com/denisotree/tuitab/master/.github/assets/charts.gif)\n\n### Pivot tables\n\nPin the column(s) to group by, place the cursor on the column to spread across,\npress `W`, and type an aggregation formula such as `sum(revenue)`.\n\n![Pivot](https://raw.githubusercontent.com/denisotree/tuitab/master/.github/assets/pivot.gif)\n\n### JOIN across files\n\nPress `J` for a step-by-step wizard: pick another file (or an open sheet),\nchoose `INNER` / `LEFT` / `RIGHT` / `OUTER`, and select the key columns.\n\n![JOIN](https://raw.githubusercontent.com/denisotree/tuitab/master/.github/assets/join.gif)\n\n### Computed columns\n\nPress `=` and type an expression. Arithmetic, string and date functions, and\nconditionals are all supported — the new column appears right next to the cursor.\n\n![Computed columns](https://raw.githubusercontent.com/denisotree/tuitab/master/.github/assets/compute.gif)\n\n---\n\n## Installation\n\n### Cargo (crates.io)\n\n```sh\ncargo install tuitab\n```\n\nInstalls three commands: `tuitab`, plus the shorter aliases `ttab` and `ttb`.\n\n### Homebrew (macOS / Linux)\n\n```sh\nbrew tap denisotree/tuitab\nbrew install tuitab\n```\n\n### Arch Linux (AUR)\n\n```sh\nyay -S tuitab          # pre-built binary: tuitab-bin\n# or build from source:\ngit clone https://aur.archlinux.org/tuitab.git \u0026\u0026 cd tuitab \u0026\u0026 makepkg -si\n```\n\n### Debian / Ubuntu\n\nDownload the `.deb` from the [Releases page](https://github.com/denisotree/tuitab/releases), then:\n\n```sh\nsudo dpkg -i tuitab_*_amd64.deb\n```\n\n### Pre-built binaries\n\nGrab a tarball for your platform (Linux / macOS, x86_64 / aarch64) from the\n[Releases page](https://github.com/denisotree/tuitab/releases).\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eBuilding from source\u003c/b\u003e\u003c/summary\u003e\n\n```sh\ncargo build --release\n```\n\nThe default build bundles DuckDB and SQLite from source, so the binary is fully\nself-contained — no system libraries required. This compiles DuckDB's C++ core\n(~5 min the first time).\n\nTo skip that and link a **system** DuckDB instead:\n\n```sh\nbrew install duckdb                # macOS\nsudo apt install libduckdb-dev     # Debian / Ubuntu\ncargo build --release --no-default-features\n```\n\n| Feature | Default | Description |\n|---------|:-------:|-------------|\n| `bundled-duckdb` | ✓ | Compile DuckDB from source; no system `libduckdb` needed |\n\n\u003c/details\u003e\n\n---\n\n## Quick start\n\n```sh\ncargo install tuitab\ntuitab data.csv\n```\n\n- Move with `h` `j` `k` `l`; jump with `gg` / `G`.\n- Sort the current column: `[` ascending, `]` descending, `r` to reset.\n- Chart it: `V`. Per-column stats: `I`. Frequency table: `F`.\n- Select rows by an expression: `|!=amount \u003e 1000`.\n- Add a column: `=` then e.g. `revenue / units`.\n- Save / export: `Ctrl+S`. Quit: `q`. Help at any time: `?`.\n\n---\n\n## Usage\n\n```text\ntuitab [OPTIONS] [FILES]...\n\nArguments:\n  [FILES]...  One or more files to open, a directory, or '-' for stdin.\n              Pass multiple files to browse them as a list.\n              Defaults to the current directory.\n\nOptions:\n  -d, --delimiter \u003cCHAR\u003e   Column delimiter (auto-detected if omitted)\n  -t, --type \u003cFORMAT\u003e      Format when reading from stdin: csv, tsv, txt, json\n  -h, --help               Print help\n  -V, --version            Print version\n```\n\n### Browse several files\n\n```sh\ntuitab orders.csv customers.csv products.parquet\n```\n\nA directory-style listing opens with each file as a row. Press `Enter` to open\none; `Esc` or `q` to go back.\n\n### Pipe mode\n\n```sh\npsql -c \"SELECT * FROM orders\" --csv | tuitab -t csv\nsqlite3 app.db \".mode csv\" \".headers on\" \"SELECT * FROM users\" | tuitab -t csv\n```\n\n\u003e Stdin accepts `csv`, `tsv`, `txt`, and `json`. For Parquet/Excel/SQLite, open\n\u003e the file directly.\n\n---\n\n## Keybindings\n\nThe essentials — see the [full keybinding reference](https://github.com/denisotree/tuitab/blob/master/docs/en/keybindings.md)\nfor every command (column ops, clipboard, dedup, and more).\n\n| Key | Action | Key | Action |\n|-----|--------|-----|--------|\n| `h` `j` `k` `l` | Move cursor | `[` / `]` | Sort asc / desc |\n| `gg` / `G` | First / last row | `r` | Reset sort |\n| `Ctrl+B` / `Ctrl+F` | Page up / down | `/` | Search (regex) |\n| `!` | Pin / unpin column | `\\|` | Select rows by regex / expression |\n| `=` | Add computed column | `,` | Select rows by value |\n| `V` | Chart column | `s` / `u` | Select / unselect row |\n| `I` | Column statistics | `+` / `-` | Add / clear aggregator |\n| `F` | Frequency table | `t` | Set column type |\n| `W` | Pivot table | `Enter` | Transpose row / drill down |\n| `J` | JOIN with another table | `T` | Transpose table |\n| `Ctrl+S` | Save / export | `U` / `Ctrl+R` | Undo / redo |\n| `?` | Help | `q` | Quit / pop sheet |\n\n\u003e Non-QWERTY layouts (ЙЦУКЕН, QWERTZ, AZERTY) are transparently remapped, so the\n\u003e hotkeys work regardless of your keyboard.\n\n---\n\n## Documentation\n\nFull guides, organised by topic, in two languages:\n\n| 🇬🇧 English | 🇷🇺 Русский |\n|------------|------------|\n| [Documentation index](https://github.com/denisotree/tuitab/blob/master/docs/en/README.md) | [Оглавление документации](https://github.com/denisotree/tuitab/blob/master/docs/ru/README.md) |\n| [Getting started](https://github.com/denisotree/tuitab/blob/master/docs/en/getting-started.md) | [Начало работы](https://github.com/denisotree/tuitab/blob/master/docs/ru/getting-started.md) |\n| [Keybindings](https://github.com/denisotree/tuitab/blob/master/docs/en/keybindings.md) | [Горячие клавиши](https://github.com/denisotree/tuitab/blob/master/docs/ru/keybindings.md) |\n| [Expressions](https://github.com/denisotree/tuitab/blob/master/docs/en/expressions.md) | [Выражения](https://github.com/denisotree/tuitab/blob/master/docs/ru/expressions.md) |\n| [Charts](https://github.com/denisotree/tuitab/blob/master/docs/en/charts.md) | [Графики](https://github.com/denisotree/tuitab/blob/master/docs/ru/charts.md) |\n| [JOIN](https://github.com/denisotree/tuitab/blob/master/docs/en/join.md) | [JOIN](https://github.com/denisotree/tuitab/blob/master/docs/ru/join.md) |\n| [Pivot tables](https://github.com/denisotree/tuitab/blob/master/docs/en/pivot.md) | [Сводные таблицы](https://github.com/denisotree/tuitab/blob/master/docs/ru/pivot.md) |\n| [Recipes](https://github.com/denisotree/tuitab/blob/master/docs/en/recipes.md) | [Рецепты](https://github.com/denisotree/tuitab/blob/master/docs/ru/recipes.md) |\n\n---\n\n## Acknowledgements\n\ntuitab is inspired by [VisiData](https://www.visidata.org) — a brilliant terminal\nspreadsheet multitool by [Saul Pwanson](https://github.com/saulpw). If you find\ntuitab useful, check out VisiData too. Built with\n[ratatui](https://github.com/ratatui/ratatui), [Polars](https://www.pola.rs),\nand [crossterm](https://github.com/crossterm-rs/crossterm).\n\n## Contributing\n\nBug reports, feature requests, and pull requests are welcome.\nSee [CONTRIBUTING.md](https://github.com/denisotree/tuitab/blob/master/CONTRIBUTING.md).\n\n## License\n\nApache-2.0 — see [LICENSE](https://github.com/denisotree/tuitab/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdenisotree%2Ftuitab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdenisotree%2Ftuitab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdenisotree%2Ftuitab/lists"}