csvkit is composed of command-line tools that can be divided into three major categories: Input, Processing, and Output. Documentation and examples for each tool are described on the following pages.


To deduplicate and merge CSV files, consider csvdedupe.

To change field values (i.e. to run sed or awk-like commands on CSV files), consider csvsed or miller (mlr put).

To transpose CSVs, consider csvtool. Install csvtool on Linux using your package manager, or on macOS using:

brew install ocaml
opam install csv
ln -s ~/.opam/system/bin/csvtool /usr/local/bin/
csvtool --help

Output and Analysis

  • To draw plots, consider jp.
  • To diff CSVs, consider daff.
  • To explore CSVs interactively, consider VisiData.

Alternatives to csvsql are q and textql.