Scroll to navigation

vd(1) 1 (quick reference guide) vd(1)


VisiDataa terminal utility for exploring and arranging tabular data


vd [options] [input ...]

vd [options] --play cmdlog [-w waitsecs] [--batch] [-i] [-o output] [field=value]

vd [options] [input ...] +toplevel:subsheet:col:row


VisiData is an easy-to-use multipurpose tool to explore, clean, edit, and restructure data. Rows can be selected, filtered, and grouped; columns can be rearranged, transformed, and derived via regex or Python expressions; and workflows can be saved, documented, and replayed.


, --play=cmdlog
cmdlog within the interface
, --replay-wait=seconds
seconds between commands
, --batch
replay in batch mode (with no interface)
, --interactive
launch VisiData in interactive mode after batch
, --output=file
save final visible sheet to file as .tsv
field}" in cmdlog contents with value

Commands During Replay

cancel current replay


All keystrokes are case sensitive. The ^ prefix is shorthand for .

Keystrokes to start off with

abort program immediately
cancel user input or abort all async threads on current sheet
abort all secondary threads
quit current sheet or menu
quit current sheet and free associated memory
quit all sheets (clean exit)

(Enter/ to expand submenu or execute command)
view this man page
view sheet of command longnames and keybindings for current sheet

open sidebar in a new sheet
toggle sidebar

(requires enabled options.undo)
(requires enabled options.undo)

open command palette; Enter to execute top command by its longname

Command Palette

Cursor Movement

go as expected
h j k l
go left/down/up/right
go all the way to the left/bottom/top/right of sheet
G gg
go all the way to the bottom/top of sheet
Ic. End Home
go all the way to the bottom/top of sheet
scroll one page back/forward
scroll one page left/right
scroll current row to center of screen

jump to previous sheet (swaps with current sheet)

regex forward/backward in current column
regex forward/backward over all visible columns
expr forward/backward in current column (with column names as variables)
n N
go to next/previous match from last regex search

< >
go up/down current column to next value
go up/down current column to next null value
{ }
go up/down current column to next selected row

c regex
r regex
number (0-based)

slide current row/column left/down/up/right
slide current row/column all the way to the left/bottom/top/right of sheet
number positions to the left/down/up/right

scroll one left/down/up/right

Column Manipulation

_ (underbar)
toggle width of current column between full and default width
toggle widths of all visible columns between full and default width
z_ number
adjust widths of all visible columns to Ar number

- (hyphen)
hide current column
reduce width of current column by half
unhide all columns

toggle/unset current column as a key column
set type of current column to str/int/float/currency/date/len
show more/less precision in current numerical column
rename current column
rename all unnamed visible columns to contents of selected rows (or current row)
rename current column to combined contents of current cell in selected rows (or current row)
rename all visible columns to combined contents of current column for selected rows (or current row)

= expr
expr, with column names, and attributes, as variables
g= expr
set current column for selected rows to result of Python expr
set current column for selected rows to the items in result of Python sequence expr
z= expr

add column with incremental values
set current column for selected rows to incremental values
zi step
add column with values at increment step
gzi step
set current column for selected rows at increment step

' (tick)
add a frozen copy of current column with all cells evaluated
open a frozen copy of current sheet with all visible columns evaluated
add/reset cache for current/all visible column(s)

: regex
add new columns from regex split; number of columns determined by example row at cursor
; regex
add new columns from capture groups of regex (also requires example row)
; expr
expr, with columnNames as variables
* regex/subst
add column derived from current column, replacing regex with subst (may include \1 backrefs)
regex with subst (may include \1 backrefs)

( g(
[3]) or dicts (e.g. {3}) one level
[3]) or dicts (e.g. {3}) to given depth (0= fully)
) g(
unexpand current/all visible column(s); restore original column and remove other columns at this level
[3]) or dicts (e.g. {3}) to given depth (0= fully)
[3]) or dicts (e.g. {3}) within that column

Row Selection

s t u
select/toggle/unselect current row
gs gt gu
select/toggle/unselect all rows
zs zt zu
select/toggle/unselect all rows from top to cursor
select/toggle/unselect all rows from cursor to bottom
| \ regex
regex in current column
regex in any visible column
expr in any visible column
, (comma)
select rows matching display value of current cell in current column
select rows matching display value of current row in all visible columns
z, gz,
select rows matching typed value of current cell/row in current column/all visible columns

Row Sorting/Filtering

[ ]
sort ascending/descending by current column; replace any existing sort criteria
g[ g]
sort ascending/descending by all key columns; replace any existing sort criteria
z[ z]
sort ascending/descending by current column; add to existing sort criteria
sort ascending/descending by all key columns; add to existing sort criteria
open duplicate sheet with only selected rows
open duplicate sheet with all rows
open duplicate sheet with deepcopy of selected rows

The rows in these duplicated sheets (except deepcopy) are references to rows on the original source sheets, and so edits to the filtered rows will naturally be reflected in the original rows. Use g' to freeze sheet contents in a deliberate copy.

Editing Rows and Cells

a za
append blank row/column; appended columns cannot be copied to clipboard
ga gza number
number blank rows/columns
d gd
delete current/selected row(s)
y gy
Memory Sheet
x gx
Memory Sheet
zy gzy
Memory Sheet
zd gzd
set contents of current column for current/selected row(s) to
zx gzx
Memory Sheet
p P
paste clipboard rows after/before current row
zp gzp
set cells of current column for current/selected row(s) to last clipboard value
zP gzP
paste to cells of current column for current/selected row(s) using the system clipboard
Y gY
zY gzY
fill null cells in current column with contents of non-null cells up the current column
e text
edit contents of current cell
ge text
set contents of current column for selected rows to text

Commands While Editing Input

Enter ^C
accept/abort input
open external $EDITOR to edit contents of current/selected rows in current column
reload initial value
go to beginning/end of line
go back/forward one character
go back/forward one word
delete previous/current character
transpose previous and current characters
clear from cursor to beginning/end of line
paste from cell clipboard
delete previous/current character
toggle insert mode
set contents to previous/next in history
Tab Shift+Tab
Arrow and re-enter edit mode

Data Toolkit

o input
open input in VisiData
open file or url from path in current cell
^S g^S filename
save current/all sheet(s) to filename in format determined by extension (default .tsv)
filename ends in a /, a directory will be created.
save current column only to filename in format determined by extension (default .tsv)
CommandLog to filename.vdj file
open new blank sheet with one column
open new sheet that has rows and columns of current sheet transposed

+ aggregator
aggregator to current column (see Frequency Table)
aggregator over values in selected rows for current column; store result in Memory Sheet
append top two sheets in Sheets Stack
append all sheets in Sheets Stack

w nBefore nAfter
add column where each row contains a list of that row, nBefore rows, and nAfter rows

Data Visualization

. (dot)

If rows on the current sheet represent plottable coordinates (as in .shp or vector .mbtiles sources), . plots the current row, and g. plots all selected rows (or all rows if none selected).

Canvas-specific Commands

+ -
increase/decrease zoom level, centered on cursor
_ (underbar)
zoom to fit full extent
set aspect ratio
x xmin xmax
xmin/xmax on graph
y ymin ymax
ymin/ymax on graph
s t u
select/toggle/unselect rows on source sheet contained within canvas cursor
select/toggle/unselect rows on source sheet visible on screen
delete rows on source sheet contained within canvas cursor
delete rows on source sheet visible on screen
open sheet of source rows contained within canvas cursor
open sheet of source rows visible on screen
1 - 9
toggle display of layers
redraw all pixels on canvas
show_graph_labels option
zoom in/out of canvas
set canvas cursor
scroll canvas

Split Screen


Split Window specific Commands

Other Commands

toggle sheet-specific visibility (multi-line rows on Sheet, legends/axes on Graph)

^E g^E
view traceback for most recent error(s)
view traceback for error in current cell

refresh screen
reload current sheet
suspend VisiData process
show cursor position and bounds of current sheet on status line
show version and copyright information on status line
Status History
m keystroke
keystroke , and complete recording. Macro can then be executed everytime provided keystroke is used. Will override existing keybinding. Macros will run on current row, column, sheet.
open an index of all existing macros. Can be directly viewed with Enter, and then modified with ^S.

^Y z^Y g^Y
open current row/cell/sheet as Python object
^X expr
expr and opens result as Python object
expr, in context of current row, and open result as Python object
module in the global scope

Internal Sheets List

browse properties of files in a directory
read documentation from within VisiData
(Alt+Shift+M) browse saved values, including clipboard
(Shift+C) edit column properties
(Shift+S) jump between sheets or join them together
(Shift+O) edit configuration options
(Shift+D) modify and save commands for replay
(Ctrl+E) view last error
(Ctrl+P) view history of status messages
(Ctrl+T) view, cancel, and profile asynchronous threads

(Shift+F) group rows by column value, with aggregations of other columns
(Shift+I) view summary statistics for each column
(Shift+W) group rows by key and summarize current column
(Shift+M) unpivot non-key columns into variable/value columns
(Shift+T) open new sheet with rows and columns transposed


Directory Sheet

(global commands)
open the Directory Sheet for the current directory
(sheet-specific commands)
Enter gEnter
open current/selected file(s) as new sheet(s)
^O g^O
open current/selected file(s) in external $EDITOR
^R z^R gz^R
reload information for all/current/selected file(s)
d gd
delete current/selected file(s) from filesystem, upon commit
y gy directory
directory, upon commit
e ge name
` (backtick)
open parent directory
commit changes to file system

Guide Index

Browse through a list of available guides. Each guide shows you how to use a particular feature. Gray guides have not been written yet.
(global commands)
open the Guide Index
(sheet-specific commands)
open a guide

Memory Sheet

Browse through a list of stored values, referanceable in expressions through their .
(global commands)
open the Memory Sheet
Memory Sheet under name
(sheet-specific commands)
edit either value or name, to edit reference


Columns Sheet (Shift+C)

Properties of columns on the source sheet can be changed with standard editing commands (e ge g= Del) on the Columns Sheet. Multiple aggregators can be set by listing them (separated by spaces) in the aggregators column. The 'g' commands affect the selected rows, which are the literal columns on the source sheet.
(global commands)
Columns Sheet with all visible columns from all sheets
(sheet-specific commands)
add column from appending selected source columns
toggle/unset selected columns as key columns on source sheet
add Ar aggregator No to selected source columns
hide selected columns on source sheet
set type of selected columns on source sheet to str/int/float/currency/date/len/floatsi
open a Frequency Table sheet grouped by column referenced in current row

Sheets Sheet (Shift+S)

open Sheets Stack, which contains only the active sheets on the current stack
(global commands)
Sheets Sheet, which contains all sheets from current session, active and inactive
(sheet-specific commands)
jump to sheet referenced in current row
push selected sheets to top of sheet stack
add row to reference a new blank sheet
gC gI
Columns Sheet/Describe Sheet with all visible columns from selected sheets
abort async threads for current/selected sheets(s)
save selected or all sheets
& jointype
merge selected sheets with visible columns from all, keeping rows according to jointype:
keep only rows which match keys on all sheets
keep all rows from first selected sheet
keep all rows from all sheets (union)
keep only rows NOT in all sheets
combine all rows from all sheets
similar to 'append' but keep first sheet type and columns
copy first selected sheet, keeping all rows and sheet type, and extend with columns from other sheets
keep all rows from first sheet, updating any False-y cells with non-False-y values from second sheet; add unique rows from second sheet

Options Sheet (Shift+O)

(global commands)
(sheet-specific commands)
Enter e
edit option at current row
remove option override for this context
save option configuration to

CommandLog (Shift+D)

(global commands)
open current sheet's CommandLog with all other loose ends removed; includes commands from parent sheets
open global CommandLog for all commands executed in the current session
open current sheet's CommandLog with the parent sheets commands' removed
(sheet-specific commands)
replay command in current row
replay contents of entire CommandLog
abort replay

Threads Sheet (Ctrl+T)

(global commands)
open global Threads Sheet for all asynchronous threads running
open current sheet's Threads Sheet
(sheet-specific commands)
abort thread at current row
Threads Sheet


Frequency Table (Shift+F)

A Frequency Table groups rows by one or more columns, and includes summary columns for those with aggregators.
(global commands)
open Frequency Table, grouped by all key columns on source sheet
open one-line summary for all rows and selected rows
(sheet-specific commands)
s t u
select/toggle/unselect these entries in source sheet
Enter gEnter
open copy of source sheet with rows that are grouped in current cell / selected rows

Describe Sheet (Shift+I)

A Describe Sheet contains descriptive statistics for all visible columns.
(global commands)
Describe Sheet for all visible columns on all sheets
(sheet-specific commands)
select/unselect rows on source sheet that are being described in current cell
toggle/unset current column as a key column on source sheet
open a Frequency Table sheet grouped on column referenced in current row
open copy of source sheet with rows described in current cell

Pivot Table (Shift+W)

Set key column(s) and aggregators on column(s) before pressing on the column to pivot.
(sheet-specific commands)
open sheet of source rows aggregated in current pivot row
open sheet of source rows aggregated in current pivot cell

Melted Sheet (Shift+M)

Open Melted Sheet (unpivot), with key columns retained and all non-key columns reduced to Variable-Value rows.
(global commands)
open Melted Sheet (unpivot), with key columns retained and regex capture groups determining how the non-key columns will be reduced to Variable-Value rows.

Python Object Sheet (^X ^Y g^Y z^Y)

(sheet-specific commands)
dive further into Python object
toggle show/hide for methods and hidden properties
gv zv
show/hide methods and hidden properties


Add -n/ to make subsequent CLI options sheet-specific (applying only to paths specified directly on the CLI). By default, CLI options apply to all sheets.

Options can also be set via the Options Sheet or a .visidatarc (see FILES).

longname before replay or regular launch; limited to bound commands
subsheet of toplevel at top-of-stack, and cursor at col and row; all arguments are optional
open Guide Index

, --filetype=filetype
tsv set loader to use for filetype instead of file extension
, --delimiter=delimiter
\t field delimiter to use for tsv/usv filetype
, --overwrite=y
y overwrite existing files without confirmation
, --overwrite=n
do not overwrite existing files
, --nothing=T
disable loading .visidatarc and plugin addons
=str ~/.visidata/
directory to load and store additional files
exit on error and display stacktrace
=bool True
enable undo/redo
=int 0
max number of cache entries in each cached column
note to display for pending cells
=str ?
cell note for an exception during formatting
=str !
cell note for an exception during computation
=str !
cell note for an exception during type conversion
=int -3
amount to scroll with scrollwheel
use 256 colors even if curses reports fewer
confirm before quitting modified sheet
=int 20
default column width
=int 4
default column height
=bool True
wordwrap text for multiline rows
=str _
string to join sheet or column names
string to join display values
wrap text to fit window width on TextSheet
=str tsv
specify default file type to save as
enable profiling on threads
=int 0
minimum memory to continue loading and async processing
=str utf-8-sig
encoding passed to when reading a file
=str surrogateescape
encoding_errors passed to
=int 1
max time between press/release for click (ms)
clear selected rows before new bulk selections
if no rows selected, if True, someSelectedRows returns all rows; if False, fails
regex of lines to skip in text sources
=str I
flags to pass to re.compile() [AILMSUX]
load subsheets always (False) or lazily (True)
=int 0
skip N rows before header
=int 1
parse first N rows as column names
field delimiter to use for tsv/usv filetype
" row delimiter to use for tsv/usv filetype
=str ?
replacement for newline character when saving to tsv
=str ?
replacement for tab character when saving to tsv
=int 0
visibility level
=int 100
number of rows to sample for regex.split (0=all)
=str %s.%s
format str to use for names of columns expanded from dict (colname, key)
=str %s[%s]
format str to use for names of columns expanded from list (colname, index)
=NoneType None
indent to use when saving json
sort object keys when saving to json
=bool True
ensure ascii encode when saving json
column name to use for non-dict rows
specify file type
=str #ERR
error string to use while saving
=str utf-8
encoding passed to when saving a file
clean column/sheet names to be valid Python identifiers
=float 0.0
time to wait between replayed commands, in seconds
string prefix for rowkey in the cmdlog
=str xclip -selection clipboard -filter
command to copy stdin to system clipboard
=str xclip -selection clipboard -o
command to send contents of system clipboard to stdout
a nicer selection interface for aggregators and jointype
=NoneType None
a value to be counted as null
=int 0
number of bins for histogram of numeric columns
bin numeric columns into ranges
list of distinct colors to use for plotting distinct objects
source of randomized startup messages
=int 0
folder recursion depth on DirSheet
load hidden files on DirSheet
=Path ~/.visidatarc
config file to exec in Python
file.vdj to replay
replay in batch mode (with no interface and all status sent to stdout)
=NoneType None
save the final visible sheet to output at the end of replay
longnames to preplay before replay
=str plugins
imports to preload before .visidatarc (command-line only)
no config, no plugins, nothing extra
run interactive mode after batch replay
=str c
overwrite existing files {y=yes|c=confirm|n=no}
=bool True
do not autoload plugins if False
display/color theme to use
Airtable API key from
matrix API token
matrix user ID associated with token
=str VisiData
device ID associated with matrix login
client_id for reddit api
client_secret for reddit api
=str 3.0.2
user_agent for reddit api
=int -100
number of messages to fetch per call (<0 to fetch before anchor)
=int 1000000000
message id to start fetching from
=float 1e-05
seconds to wait between calls (0 to stop after first)
Zulip API key
Email for use with Zulip API key
=str excel
dialect passed to csv.reader
=str ,
delimiter passed to csv.reader
=str "
quotechar passed to csv.reader
=bool True
skipinitialspace passed to csv.reader
=NoneType None
escapechar passed to csv.reader
" lineterminator passed to csv.writer
sanitize input/output to handle edge cases, with a performance cost
=NoneType None
A regex to perform on the object name, useful where object names have a structure to extract. Use the (?P<foo>...) named groups form to get column names.
=NoneType None
Override the default year used for log parsing. Use all four digits of the year (e.g., 2022). By default (None) use the year from the ctime of the file, or failing that the current year.
=str UTC
The timezone the source file is in, by default UTC.
=int 1000
number of rows to check for fixed width columns
=int 0
max number of fixed-width columns to create (0 is no max)
=bool True
whether to include edge labels on graphviz diagrams
=str <h2>{}</h2>
table header when saving to html
=int 0
max next.url pages to follow in http response
=dict {}
http headers to send to requests
=bool True
verify host and certificates for https
numpy allow unpickling objects (unsafe)
=str n
(y/s/n) if save_dot includes all internet hosts separately (y), combined (s), or does not include the internet (n)
parse PDF for tables instead of pages of text
=str public
The desired schema for the Postgres database
alternate S3 endpoint, used for local testing or alternative S3-compatible services
=bool True
enable glob-matching for S3 paths
show all object versions in a versioned bucket
sqlite statement to execute after opening a connection
include columns for cell objects, font colors, and fill colors
=bool True
allow very deep trees and very long text content
=str .
=str Set3
colorbrewer palette to use
IP address to listen for commands
=int 0
port to listen for commands
API Key for
=int 1
Cache days for currency conversions
=str mean stdev
numeric aggregators to calculate on Describe sheet
=str ¡Hola mundo!
shown by the hello-world command
=float 1.0
start value for column increments
=int 3
send this many pings to each host
=float 0.1
wait between ping rounds, in seconds
=int 0
maxsplit to pass to regex.split
cascade column renames into expressions
=str en_US
default locale to use for Faker
=NoneType None
list of additional Provider classes to load via add_provider()
Use a non-empty string to enable deterministic fakes
force mimetype for sysopen-mailcap
if unfurl includes rows for empty containers


Display options can only be set via the Options Sheet or a .visidatarc (see FILES).

show menu on top line when not active
show keystrokes inline in submenus
black on 68 blue
color of menu items in general
223 yellow on black
color of active menu items
black on 34 green
color of sheet-specific menu items
black italic on 68 blue
color of helpbox
box characters to use for menus
command submenu indicator
indicator if command pushes sheet onto sheet stack
indicator if input required for command
| VisiData {vd.version} | Alt+H for help menu
right-side menu format string
default fmtstr to format float values
default fmtstr to format int values
formatter to create the text in each cell (also used by text savers)
displayer to render the text in each cell
height of second sheet on screen
visible contents of a cell whose value is None
indicator that the contents are only partially visible
displayable character for odd whitespace
header note indicating more columns to the left
header note indicating more columns to the right
displayed contents for computation exception
width to use for unicode chars marked ambiguous
string to display in pending cells
bold magenta
color of note in pending cells
226 yellow
color of cell note for non-str types in anytype columns
220 yellow
color of row note on left edge
separator between columns
separator between key columns and rest of columns

characters for ascending sort
characters for descending sort
white on black
the default fg and bg colors
color of the column headers
color of the bottom header row
color of the cursor row
color of the cursor column
color of current cell, if different from color_current_row+color_current_col
bold reverse
color of the header for the cursor column
246 blue
color of column separators
81 cyan
color of key columns
color of hidden columns on metasheets
215 yellow
color of selected rows
color of internally clickable item
bold white on 237
color of code sample
bold 200
color of header
243 on black
color of unwritten guides in GuideGuide
{sheet.threadStatus} {sheet.keystrokeStatus} [:longname]{sheet.longname}[/] {sheet.nRows:9d} {sheet.rowtype} {sheet.modifiedStatus}{sheet.selectedStatus}{vd.replayStatus}
right-side status format string
[:onclick sheets-stack]{sheet.shortcut}› {}[/]|
status line prefix
maximum length of left status line
separator between statuses
bold white on 237
color of input keystrokes
bold 52 on 114 green
color of command longnames
color of keystrokes in help
bold on 238
status line color
202 1
error message color
166 15
warning message color
top window status bar color
black on 68 blue

active window status bar color
8 on black
inactive window status bar color
black on green
color of highlighted elements in statusbar
118 5
color of system running smoothly
238 on 110
display color for unfocused input in form
233 on 110
cell color to use when editing cell
edit field fill character
substitute character for unprintables
default fmtstr passed to strftime for date values
default fmtstr to format for currency values
color for negative values in currency displayer
status indicator for active replay
color of replay status indicator
histogram element character
show axes and legend on graph
charset to render 2x4 blocks on canvas
randomly choose attr from set of pixels instead of most common
amount to multiply current zoomlevel when zooming
238 blue
color of legend for hidden attribute
color of selected graph points
color for graph axis labels
character for graph x-axis ticks
show help panel during input
color for rows pending add
reverse yellow
color for cells pending modification
color for rows pending delete
whether to display sidebar
format string for default sidebar
max width for sidebar
max height for sidebar
black on 114 blue
base color of sidebar
black on yellow
color of sidebar title
color for matching chars in palette chooser
color of f5log monitor status up
color of f5log monitor status down
color of f5log monitor status unknown
color of monitor status checking
color of monitor status disabled
color of alarms
color of warnings
color of notice
color of info
color of active clue
black on 72
base color of command palette
max number of suggestions for command palette
21 on 114 green


minimum number of lines to keep visible above/below cursor when scrolling
characters to display sparkline



launch for current directory

vd foo.tsv
open the file foo.tsv in the current directory

vd -f ddw
open blank sheet of type ddw

vd new.tsv
open new blank tsv sheet named new

vd -f sqlite bar.db
open the file bar.db as a sqlite database

vd foo.tsv -n -f sqlite bar.db
open foo.tsv as tsv and bar.db as a sqlite database

vd -f sqlite foo.tsv bar.db
open both foo.tsv and bar.db as a sqlite database

vd -b countries.fixed -o countries.tsv
convert countries.fixed (in fixed width format) to countries.tsv (in tsv format)

vd postgres://username:passwordhostname:port/database
open a connection to the given postgres database

vd --play tests/pivot.vdj --replay-wait 1 --output tests/pivot.tsv
replay tests/pivot.vdj, waiting 1 second between commands, and output the final sheet to test/pivot.tsv

ls -l | vd -f fixed --skip 1 --header 0
parse the output of ls -l into usable data

ls | vd | lpr
interactively select a list of filenames to send to the printer

vd newfile.tsv
open a blank sheet named newfile if file does not exist

vd sample.xlsx +:sheet1:2:3
launch with at top-of-stack, and cursor at column and row

vd -P open-plugins
preplay longname before starting the session


At the start of every session, VisiData looks for $HOME/.visidatarc, and calls Python exec() on its contents if it exists. For example:

   options.min_memory_mb=100  # stop processing without 100MB free

   bindkey('0', 'go-leftmost')   # alias '0' to go to first column, like vim

   def median(values):
       L = sorted(values)
       return L[len(L)//2]

   vd.aggregator('median', median)

Functions defined in .visidatarc are available in python expressions (e.g. in derived columns).


Core VisiData includes these sources:

(tab-separated value)
Plain and simple. VisiData writes tsv format by default. See the option.

(comma-separated value)
.csv files are a scourge upon the earth, and still regrettably common.
See the --csv-dialect, --csv-delimiter, --csv-quotechar, and --csv-skipinitialspace options.
Accepted dialects are excel-tab, unix, and excel.

(fixed width text)
Columns are autodetected from the first 1000 rows (adjustable with --fixed-rows).

(single object) and // (one object per line).
Cells containing lists (e.g. [3]) or dicts ({3}) can be expanded into new columns with and unexpanded with .

May include multiple tables. The initial sheet is the table directory;
loads the entire table into memory. z^S saves modifications to source.

URL schemes are also supported:

(requires ); can be used as transport for with another filetype

For a list of all remaining formats supported by VisiData, see

In addition, , , , , , and files are decompressed on the fly.


VisiData was made by Saul Pwanson <>.

January 15, 2024 Linux/MacOS