Skip to main content

What is VisiData

VisiData is an interactive multitool for tabular data that runs entirely in your terminal. It reads virtually any structured data format, presents it as a navigable spreadsheet-like sheet, and lets you reshape, filter, and analyze data using only keyboard commands.

Learning Focus

Use this lesson to build VisiData's core mental model: everything is a sheet, every sheet lives in a stack, and every transformation generates a derived sheet — not a destructive edit.

Tool Snapshot
  • Command: vd or visidata
  • Language: Python (GPLv3)
  • Formats: CSV, TSV, JSON, SQLite, Parquet, Excel, fixed-width, logs, URLs, and more
  • Version (stable): v3.3 (2025)
  • Config file: ~/.visidatarc
  • Help inside VisiData: Ctrl+H (man page), Alt+H (menu)

The Problem VisiData Solves

Opening a large CSV in Excel or LibreOffice Calc:

Opening the same file in VisiData:

How VisiData Is Structured

LayerWhat it isAnalogy
SheetOne tabular view of dataSpreadsheet tab
Sheet StackList of all open sheetsBrowser tab history
Source SheetThe original loaded dataRaw file
Derived SheetTransformed view (frequency, pivot)Calculated report
CommandLogAudit trail of all actionsUndo history

Why Operators Use VisiData

NeedVisiData capabilityPractical effect
Fast large-file inspectionLazy loading, 1M+ rowsNo GUI freeze
Filter/slice dataRow selection, regex, Python exprReplace grep+awk pipelines
Data type casting~#%$@ type keysInstant int/float/date coercion
Frequency analysisShift+F frequency tableInstant histogram
Data exportCtrl+S to any formatCSV → JSON → SQLite in seconds
RepeatabilityCommandLog replayDocumented, reproducible transforms
Custom logicPython expressions in columnsFull pandas-like power in-terminal

VisiData vs Alternatives

FeatureVisiDatacsvkitMillerpandas
Interactive TUI
1M+ rows✅ (with RAM)
Multi-format✅ 40+LimitedTSV/CSV/JSON
Python expressions
In-terminal graphs
Learning curveMediumLowMediumHigh
tip

VisiData is the best choice when you need interactive, visual exploration of data without leaving the terminal.

The VisiData Interface

┌──────────────────────────────────────────────────────────┐
│ name │ age │ city │ salary │ ← Header row (column names)
│──────────────┼───────┼────────────────┼──────────────────│
│ Alice │ 29 │ Singapore │ 85000 │ ← Cursor row (highlighted)
│ Bob │ 34 │ Kuala Lumpur │ 72000 │
│ Carol │ 27 │ Jakarta │ 91000 │
│──────────────────────────────────────────────────────────│
│ visidata v3.3 │ data.csv │ 3 rows │ name │ ← Status bar
└──────────────────────────────────────────────────────────┘

Key interface elements:

  • Header row: column names (use ^ to rename)
  • Cursor row: highlighted row under your cursor
  • Status bar: sheet name, row count, current column

Basic Commands Overview

# Open a file
vd data.csv
vd server.log
vd database.sqlite

# Inside VisiData:
# q quit current sheet
# gq quit all sheets (exit VisiData)
# Ctrl+H open man page / full reference
# Alt+H open help menu
# Shift+S open Sheets Sheet (see all open sheets)

Common Beginner Mistakes

MistakeWhat happensFix
Pressing q to quit VisiDataOnly closes current sheetUse gq to quit all
Editing cells unintentionallyPressing e enters edit modePress Ctrl+C to cancel
Losing the source sheetNavigating derived sheetsPress Shift+S to see all sheets
Confusing column typesNumbers treated as stringsSet type with # (int) or % (float)

Hands-On Practice

# Download a sample CSV
curl -o /tmp/sample.csv https://people.sc.fsu.edu/~jburkardt/data/csv/addresses.csv

# Open in VisiData
vd /tmp/sample.csv

# Try these inside VisiData:
# hjkl or arrow keys — move around
# Shift+F — frequency table on current column
# q — return to source sheet
# gq — quit VisiData

What's Next