Explore tabular data in your terminal.
Parquet, CSV, JSON, Arrow, Excel, SQLite, logs, audio, model files and more, including binary formats you describe in a format spec.
Open it from local disk, S3, GCS, Azure, HTTP(S), a pipe, or a Polars frame in Python.
Website · Documentation · Quick start · Formats
datui # home screen: your files, and Example datasets to open with no logindatui s3://noaa-ghcn-pds/parquet/by_year/YEAR=2024/ # 38 million rows of NOAA weather, no loginPress ? for the keys on any screen. Esc backs out; Ctrl+Q quits.
curl -fsSL https://raw.githubusercontent.com/derekwisong/datui/main/scripts/install/install.sh | sh| Platform | Command |
|---|---|
| Windows, WinGet | winget install derekwisong.datui |
| Debian, Ubuntu | Apt repository |
| Fedora, RHEL | Dnf repository |
| Arch Linux, AUR | yay -S datui-bin # or: paru -S datui-bin |
| macOS, Linux, Homebrew | brew tap derekwisong/datui && brew trust derekwisong/datui && brew install datui |
| Python, PyPI | pip install datui |
| Rust, crates.io | cargo install datui --locked |
| Binaries | Linux, macOS and Windows binaries, .deb, .rpm and Arch tarballs on the latest release |
More ways to install, and how to uninstall: the installation guide.
- Rust on Polars. Every table is a
LazyFrameuntil it is drawn. - Only the rows on screen and a lookahead buffer are collected. Sort, filter and query build on the lazy plan.
- A Parquet file in S3, GCS or Azure is read in place. datui reads the footers for the schema and row count, then only the row groups the screen needs.
- Rows are counted in the background, so you can use the table before the count is done.
First rows in milliseconds on local files, under a second from S3. Performance has the numbers.
| Task | Key or command | Guide |
|---|---|---|
| Find text, a regex or letters in order | / |
Find |
| Run SQL or q | : |
Queries |
| Sort by the cursor's column; keep or drop its value | [ ], + - |
Sort and filter |
| Value counts of a column | F |
Value counts |
| Chart; export it to PNG, SVG or PDF | c, then e |
Charts |
| Pivot or melt | p |
Reshaping |
| Change a column's type | i, Enter on the Schema tab |
Column types |
| Copy (OSC 52 over SSH) or export | y, e |
Copy · Export |
| Save the steps as a view for the next file | v |
Views |
| Read your own binary or delimited format | datui --format SPEC.toml FILE |
Format specs |
| Follow a growing file; view a pipe as it arrives | datui -f FILE, COMMAND | datui |
Pipes |
| Add a dataset to your catalog; read its documentation | Ctrl+D, Ctrl+E on the home screen |
Catalogs |
| Pick a theme | datui theme list |
Configuration |
| Click, scroll, drag a column, right-click a cell | Mouse | Mouse |
| Source | Open it with |
|---|---|
| A file, a directory of files, a glob | datui sales.parquet, datui events/, datui --hive 'logs/*/*.parquet' |
| S3, GCS, Azure | datui s3://BUCKET/KEY, gs://…, abfss://…, or browse it from the home screen |
| HTTP(S) | datui https://… |
| Hive partitions | A key=value tree opens as one table, partition columns first |
| Standard input | COMMAND | datui |
| Python | datui.view(frame) on a Polars DataFrame or LazyFrame |
The home screen lists your recent files, your directories, your catalogs, the cloud accounts it finds logins for, and Example datasets: public data that opens with no login. Home screen · Cloud storage
pip install datui installs the command and the module:
import datui
import polars as pl
url = "https://vincentarelbundock.github.io/Rdatasets/csv/palmerpenguins/penguins.csv"
penguins = pl.scan_csv(url)
datui.view(penguins)
# Return the current query, filters and sort as a LazyFrame.
result = datui.view(penguins, capture=True)
if result is not None:
print(result.collect())- An editor: you cannot change cells, and datui does not write to the files it opens unless you export over one. To keep a result, export or copy it.
- A service: no telemetry, no update check. datui connects only to the data and the cloud accounts you open or browse.
Open an issue for bugs and feature requests. The developer guide covers building, testing and contributing. Report security issues using SECURITY.md.
Built with Polars and Ratatui. Released under the MIT license.
