Getting Started

← Contents

Installing

TableSkim is distributed as native packages with all libraries built in, so nothing else needs to be installed.

PlatformPackages
Linux.deb (Ubuntu 24.04 or later), .rpm (RHEL 10 and its rebuilds), or a .zip for any distribution
macOS.dmg disk image or .zip containing TableSkim.app
WindowsInstaller (.exe) or .zip

The .deb and .rpm packages are built on Ubuntu 24.04 and Rocky Linux 10 and install only on distributions at least as new. For other or older distributions (glibc 2.28 or later: RHEL 8, Debian 10, Ubuntu 20.04 and newer), use one of the Linux ZIPs, which need no installation: unpack one anywhere and run bin/tableskim in it.

ZIPContents
tableskim-<version>-Linux-x86_64.zipGUI (Wayland and X11) and terminal UI
tableskim-<version>-Linux-x11-x86_64.zipGUI for X11 only, which needs no Wayland libraries, and terminal UI
tableskim-tui-<version>-Linux-x86_64.zipTerminal UI only, for servers without a desktop

The macOS app is not signed with a developer certificate, so macOS asks for your permission the first time: Control-click (right-click) TableSkim.app and choose Open, or allow it under System Settings → Privacy & Security. If macOS says the app is damaged, remove the download mark in a terminal:

xattr -dr com.apple.quarantine /Applications/TableSkim.app

The web app is tableskim-<version>-web.zip: a folder of static files to put on a web server, which runs TableSkim in the browser of anyone who opens it. See Using the Web App.

To build TableSkim yourself, see the Building section of the README.

The tableskim command on each platform

This manual

The manual comes with TableSkim. In the GUI, open it with Help → User Manual (F1). It is also installed as HTML pages for a web browser, which is handy when you use the terminal UI:

PlatformLocation
Linux/usr/share/doc/tableskim/html/README.html (ZIP: share/doc/tableskim/html/README.html)
macOSThe Manual folder next to TableSkim.app in the .dmg or .zip
WindowsManual\README.html in the installation folder; the installer also adds TableSkim User Manual to the Start menu

Starting TableSkim

tableskim [options] [files...]

You can also open files from the GUI with File → Open... (Ctrl+O), and on macOS by dropping files on the application icon or using Open With in the Finder.

tableskim sales.xlsx               # GUI (or TUI without a display)
tableskim a.csv b.parquet          # two GUI windows
tableskim -t data.csv.gz           # terminal UI
tableskim --encoding cp932 old.csv # read a Shift_JIS CSV file

Command-line options

OptionDescription
-t, --tuiUse the terminal UI even if a graphical display is available
--encoding <name>Encoding of CSV / TSV files: auto (default), utf-8, utf-16le, utf-16be or cp932 (shift_jis)
--header <when>Whether the first row of CSV / TSV files and Excel sheets holds the column names: auto (default), yes or no
--log <file>Write log messages to a file
-v, --verboseEnable verbose (debug) logging
-V, --versionShow version information and exit
-h, --helpShow the list of options and exit

The terminal UI writes log messages only with --log, because they would otherwise be drawn over the screen.

Printing a summary

--summary and --head print a summary of each file to standard output and exit, without a window, for a quick look from a script, a pipeline or an AI agent. Any file TableSkim can open works, compressed CSV files included.

tableskim --summary data.xlsx               # columns, statistics, first 10 rows
tableskim --head 20 data.csv.gz             # columns and the first 20 rows
tableskim --summary --format json db.duckdb # the same as JSON
tableskim --summary --sheet Sales book.xlsx # one sheet only

For each sheet, the summary has:

The first row of a CSV / TSV file or an Excel sheet is taken as the column names when it looks like a header, as in the windows (--header, above).

OptionDescription
--summaryPrint the columns, their types and statistics, and the first rows
--head <N>Print the columns and the first N rows (with --summary: N rows instead of 10)
--format <format>markdown (default) or json
--sheet <name>Only this sheet (may be repeated)
--scan-rows <N>Compute the statistics over the first N rows only

Markdown cells are cut at 80 bytes. JSON keeps every value: numbers and booleans as such, dates and date-times as ISO text, empty cells as null. Each file is an object with file, encoding (text files) and sheets; each sheet has name, rows, rows_exact, columns (name, type, stats) and head, an array of rows. Several files make an array of objects. When a file or a sheet cannot be read, its object has an error, the error is also written to standard error, and the exit status is 1.

A first look

The window shows the table with row numbers on the left and column headers on top. Rows appear as soon as they are read; you can scroll, sort and search while a large file is still loading.

A CSV file in the GUI

The first row of a CSV / TSV file or an Excel sheet is taken as the column names when it looks like a header: every cell is text, none is empty, and no two are the same. Otherwise it is shown as data, and the columns are named A, B, C, ... like a spreadsheet. If the guess is wrong, choose View → First Row → Header or Data (H in the terminal UI switches between the guess and the other choice; --header decides on the command line). Parquet files and databases always use their own column names.

Continue with Using the GUI or Using the Terminal UI.