Introduction
VisiData is a terminal-based tool for rapid exploration and manipulation of tabular data. It opens virtually any structured data format instantly and provides a keyboard-driven interface for sorting, filtering, aggregating, and joining datasets without writing code.
What VisiData Does
- Opens CSV, TSV, JSON, SQLite, Postgres, Excel, Parquet, HDF5, and 30+ other formats
- Provides instant frequency analysis, histogram, and pivot table generation
- Supports regex search, column transformations, and Python expressions inline
- Saves modified data back to any supported format
- Handles datasets with millions of rows via lazy loading and streaming
Architecture Overview
VisiData is a pure-Python application built on the curses library. Each data source is loaded through a format-specific loader plugin that yields rows lazily. The sheet abstraction manages columns, types, and sort state. A command system maps single keystrokes to operations, and users can extend functionality with Python snippets in a .visidatarc file.
Self-Hosting & Configuration
- Install via pip, pipx, conda, or your distro's package manager
- No external dependencies for CSV/JSON; install optional packages for databases (psycopg2) or Parquet (pyarrow)
- Customise keybindings and default options in
~/.visidatarc - Set
options.color_defaultand theme options for terminal colour schemes - Use
--playto replay saved command logs for reproducible analyses
Key Features
- Opens any data format with a single command and no schema definition
- Keyboard-driven workflow is faster than GUI tools for exploratory analysis
- Frequency sheets and pivot tables are one keystroke away
- Command logging enables fully reproducible data exploration sessions
- Extensible via Python plugins and inline expressions
Comparison with Similar Tools
- pandas — requires writing Python code; VisiData is interactive and visual
- csvkit — focused on CSV command-line operations; VisiData adds an interactive TUI
- Miller — streaming record processor; VisiData adds spreadsheet-style navigation
- q — SQL on CSV files; VisiData supports SQL and many more formats interactively
- Tad — GUI CSV viewer; VisiData runs in any terminal without a display server
FAQ
Q: Can it handle very large files? A: Yes. VisiData streams rows lazily and can handle multi-gigabyte files if sufficient memory is available for the visible window.
Q: Is it scriptable?
A: Yes. Command logs can be saved and replayed, and .visidatarc supports arbitrary Python.
Q: Does it modify the source file? A: No. Changes exist in memory until you explicitly save to a file.
Q: What Python version is required? A: Python 3.8 or later.