DATUI(1) User Commands DATUI(1)

datui - terminal UI for tabular data

datui [OPTION]... [PATH]...
command | datui [OPTION]... [-]
datui COMMAND [ARG]...

Datui is a terminal UI for tabular data: Parquet, CSV, JSON, Arrow and more, local or in S3, GCS, Azure and HTTP, from a few rows to a few billion. Run with no PATH for the home screen; datui formats lists what it reads.

Each PATH is a file, a directory, a glob, or an http://, https://, s3://, gs:// or az:// (abfss://) URL. Files of one shape are read as one table. - reads standard input, as does no PATH when data is piped in; with no PATH and nothing piped in, datui starts at its home screen.

A file is scanned where it is wherever its format allows, and only the rows on screen are read; sorting, queries and analysis read what they need. datui-formats(7) says how each format is read. On any screen, ? shows its keys; datui-keys(7) lists them all.

Files, directories, globs or URLs to open; files of one shape are one table. - reads standard input, as does no PATH when data is piped in. No PATH opens the home screen.

File format, when the extension does not say: parquet, csv, tsv, psv, json, jsonl, arrow, avro, orc, excel, safetensors, gguf, nmea, gpx, audio, midi, sqlite, vcd, fix, sdf, numpy, elf, ulog, dataflash, candump, text, journal; or a format spec: its name (datui formats lists them), its file (a path with a / or ending .toml), or its http(s), s3, gs or az URL (at most 1 MiB).
Table to open from a file that holds several. Excel: a worksheet by name, or by 0-based index when no worksheet is so named. NMEA: fixes (default), GGA, RMC, VTG, GSA, GSV, GLL, ZDA or sentences. SQLite: a table or view by name. NumPy: an array of an archive (.npz) by name. ELF: symbols (default) or sections. ULog: a topic. DataFlash: a message type. candump: frames (default), signals, or a message a dictionary names. Hugging Face cache and DatasetDict directories: a split (default train).
Read a glob as one partitioned table, or force partition columns on a directory whose layout does not say so. Ignored for a single file.
Compression, when the extension does not say: gzip, zstd, bzip2 or xz.
A dictionary to decode with, over those on the format search path: QuickFIX XML (.xml) for FIX logs, DBC (.dbc) for CAN logs, or TOML with kind = "fix" or "dbc". Repeatable.
Follow the file as it grows, as tail -f does: a local CSV, TSV, PSV or NDJSON file or Arrow IPC stream, or standard input (-). t pauses and resumes; Esc stops.
Record standard input to FILE while viewing it. With -, pass it on to standard output, as tee does, and draw on the terminal.
With --tee: keep FILE exactly as the bytes came. Otherwise a stream that left its header's sizes blank has them filled in when it ends.
With --tee: replace FILE if it is there.
Open in the hex view, whatever the file holds.
Bytes a row of the hex view holds, so records line up (default: 8, 16, 32 or 64, as many as fit).
Apply a saved view by name once the data is on screen.
Directory for decompression temp files. Unset: the system's. [config: read.temp_dir].

Column separator: one character, tab, \t or a code such as 0x1f (default: , for .csv, tab for .tsv, | for .psv).
Read the first row as data; columns are named column_1, column_2, ...
The line, or comma-separated lines, holding the header, counted from 1 before anything is skipped. Several are joined per column ([csv] header_join); the data starts after the last.
Skip this many rows at the end, such as a footer. Reads the whole file to count rows.
Skip this many rows at the start; the header is read after them. Quote-aware, unlike --skip-lines.
Skip this many raw lines at the start, split on newlines alone: a newline inside quotes counts.
Lines starting with this are comments, before the header and among the data. [config: csv.comment].
Ignore the spaces after a delimiter, so padded numbers are numbers and a cell of spaces is null. [config: csv.skip_initial_space].
Values read as null: VAL in every column, COL=VAL in column COL only. --null is repeatable and replaces this list. [config: csv.null_values].
Read string columns as dates, times, durations or numbers where every value parses, after trimming: true for all, false for none, or a list of columns. CSV, and dates in JSON. A column with a leading zero (02134) stays text; a later value that does not parse is null, and the Notes tab counts them. [config: read.infer_types].
Rows read to infer column types. [config: csv.infer_rows].
Skip rows that do not parse instead of failing. [config: csv.ignore_errors].

Number rows on the left by their place in the source, kept through a sort or filter (# toggles). auto: for text and logs; true or false: for all of them. [config: display.row_numbers].
Digit grouping: none, thousands, european, si, swiss, indian, underscore or system, or a [display.number_format] table (, toggles). [config: display.number_format].
Take the mouse: the wheel scrolls, a click selects. false leaves it to the terminal. [config: display.mouse].
Rows an analysis samples from a larger table, spread across all of it; 0 reads every row. [config: analysis.sample_rows].

Set a config key for this run, as in the file: -c display.row_numbers=true. Repeatable; a flag of the key's own still wins. datui config keys lists them.

Where the log goes. Unset: datui.log in the cache directory. [config: log.file].
How much the log says (default warn). DATUI_LOG beats a config file's; -c and --log-level beat DATUI_LOG. [config: log.level].

Print help: a summary with -h, more with --help.
Print the version.

datui formats
List the format specs and dictionaries (FIX, DBC) on the search path: each one's name, what it matches, its file, and the copies it overrides. See datui-formats(1).
datui config
Write the default config file, list the files read, or list every key. See datui-config(1).
datui catalog
Show the catalogs of named datasets on the home screen, or check a catalog file. See datui-catalog(1).
datui theme
List the themes, built in and in the config directory's themes/, or print one as a file to start from. See datui-theme(1).
datui cache
Clear the cache: recents, history, schemas and copies. See datui-cache(1).
datui views
List or remove saved views. See datui-views(1).
datui completions
Print the shell completion script for SHELL. See datui-completions(1).
datui man
Show a manual page, list them, or write them all under a directory. See datui-man(1).

0
Success: the session was quit (q, Ctrl+Q or Ctrl+C), or the command did what it was asked.
1
An error, printed to standard error: a PATH that is not there, a configuration file that cannot be used, nothing piped in for -, or a command that failed (datui formats check on a spec with errors).
2
A usage error: an unknown option or command, or a value an option does not take.
129
The terminal hung up (SIGHUP). The screen is restored and temporary files removed first.
130
Interrupted by SIGINT, as from kill -INT. The screen is restored and temporary files removed first.
143
Ended by SIGTERM. The screen is restored and temporary files removed first.

The config directory, in place of the platform's (~/.config/datui on Linux). Saved views and format specs live there too.
The cache directory, in place of the platform's (~/.cache/datui on Linux).
Directories of format specs and dictionaries, separated as PATH is, searched before [formats] path.
The log level: error, warn, info, debug, trace or off. Beats log.level in a file; -c and --log-level beat it.
1 shows the debug overlay.
The Google Cloud project to list when projects cannot be searched, as GOOGLE_CLOUD_PROJECT.
A file to write the time to, in Unix nanoseconds, once the first rows are drawn. For benchmarks.

Set to anything: no colors, the terminal's own for everything.
How many colors the terminal draws: 24-bit, 256 or 16. Theme colors are brought down to fit.
With theme.mode = "auto", says whether the background is light or dark, for a terminal that does not answer when asked.
With theme.mode = "auto", names the terminal whose last answer about its background picks the first frame's theme; TERM when unset.
With display.unicode = "auto", the first one set says whether the terminal takes UTF-8; when it does not, glyphs are ASCII. With none set, Windows draws Unicode and other systems ASCII.

The inspector's o opens text in the first one set, else less (on Windows, the system's opener).

Read as each provider's own tools read them; a variable set but empty counts as unset. [cloud] env_files can read them from .env files.

The AWS profile for s3://, else default.
AWS keys, and the token of temporary ones.
The AWS region.
An S3-compatible endpoint (MinIO, R2, Ceph); the first one set.
The AWS config and credentials files, in place of ~/.aws/config and ~/.aws/credentials.
A Google Cloud service account or credentials file for gs://.
The Google Cloud project to list buckets in, after DATUI_GCP_PROJECT; the first one set.
The gcloud configuration directory, in place of ~/.config/gcloud.
An Azure storage connection string, with AccountKey or SharedAccessSignature.
An Azure storage account and its key or SAS token.
An Azure service principal, or AKS workload identity.
The Azure CLI's directory, in place of ~/.azure.

CONFIG is $DATUI_CONFIG_DIR when it is set, else $XDG_CONFIG_HOME/datui (~/.config/datui) on Linux, ~/Library/Application Support/datui on macOS and %APPDATA%\datui on Windows.

CACHE is $DATUI_CACHE_DIR when it is set, else $XDG_CACHE_HOME/datui (~/.cache/datui) on Linux, ~/Library/Caches/datui on macOS and %LOCALAPPDATA%\datui on Windows.

The config file: see datui-config(5). datui config path prints the files read.
Your catalog, which Ctrl+D on the home screen adds to: see datui-catalog(1).
More catalogs, one *.toml each, named by its file; examples.toml replaces the bundled one.
Saved views: see datui-views(1).
Format specs and dictionaries, searched first: see datui-formats(7).
The recent datasets the home screen lists. datui cache clear --recents forgets them.
The prompts' history.
What the home screen has measured of datasets and listed of cloud sources, so it can show rows, columns and sizes without reading them again.
The log, unless log.file names another.

Open the home screen. Example datasets lists the catalog that comes with datui.

datui

Palmer penguins from the web.

datui https://vincentarelbundock.github.io/Rdatasets/csv/palmerpenguins/penguins.csv

NOAA daily highs for 2024, one table from public S3.

datui s3://noaa-ghcn-pds/parquet/by_year/YEAR=2024/ELEMENT=TMAX/

A glob, read as one partitioned table: every 2024 element starting with T.

datui --hive 's3://noaa-ghcn-pds/parquet/by_year/YEAR=2024/ELEMENT=T*/*.parquet'

Overture Maps releases in public Azure storage, listed on the home screen.

datui abfss://release@overturemapswestus2.dfs.core.windows.net/

A model's tensors, read from its header without downloading the weights.

datui https://huggingface.co/openai-community/gpt2/resolve/main/model.safetensors

Data piped in; the format is read from its first bytes.

printf 'id,amount\n1,9.50\n2,3.25\n' | datui

The last 1,000 systemd journal entries, a column per field.

journalctl -o json -n 1000 | datui

Rows as they arrive; t pauses, Esc stops following.

(echo time,value; while sleep 0.2; do echo "$(date +%s),$RANDOM"; done) | datui -f -

A file's bytes in the hex view.

datui --hex /bin/sh

Any config key, for this run.

datui -c display.row_numbers=true https://vincentarelbundock.github.io/Rdatasets/csv/palmerpenguins/penguins.csv

Write the config file, every key commented out at its default.

datui config init

List the format specs and dictionaries datui finds.

datui formats

The keys of every screen, as a manual page.

datui man keys

Print the catalog datui ships, the worked example of the format.

datui catalog show examples

datui-config(1), datui-catalog(1), datui-theme(1), datui-cache(1), datui-views(1), datui-formats(1), datui-completions(1), datui-man(1), datui-config(5), datui-keys(7), datui-query(7), datui-formats(7), jq(1), less(1), journalctl(1), vd(1)

The datui documentation: <https://derekwisong.github.io/datui/>

Report bugs at <https://github.com/derekwisong/datui/issues>.

Derek Wisong and the datui contributors.

Copyright © 2026 Derek Wisong

datui is free software under the MIT License.

2026-10-06 datui 0.4.1