A fast CSV viewer in your terminal - peek at your data instantly ⚡
Csvpeek is a snappy, memory-efficient CSV viewer built for speed. Powered by DuckDB for fast SQL-backed querying and Urwid for a lean terminal UI.
- Fast - DuckDB streaming with LIMIT/OFFSET keeps startup instant, even with huge files
- Large File Support - Pagination handles millions of rows without breaking a sweat
- Cell Selection - Select and copy ranges with keyboard shortcuts
- Column Sorting - Sort by any column instantly
- Keyboard-First - Every action is a keystroke away
uv tool install csvpeekOr install from source:
git clone https://github.com/giantatwork/csvpeek.git
cd csvpeek
pip install -e .Install the Microsoft Visual C++ Redistributable to ensure DuckDB works on Windows
csvpeek your_data.csv| Key | Action |
|---|---|
/ |
Open filter dialog |
r |
Reset all filters |
Ctrl+D |
Next page |
Ctrl+U |
Previous page |
s |
Sort current column |
c |
Copy selection to clipboard |
w |
Save selection to file |
Shift+Arrow |
Select cells |
Arrow Keys |
Navigate (clears selection) |
q |
Quit |
Open any CSV file and start navigating immediately:
csvpeek data.csv- Press
/to open the filter dialog - Enter filter values for any columns
- Press
Enterto apply - Filter matches are highlighted in red
Filter modes:
- Literal mode: Case-insensitive substring search (e.g.,
scrantonmatches "Scranton") - Regex mode: Start with
/for regex patterns (e.g.,/^Jmatches names starting with J)/\d+- Contains digits/sales|eng- Contains "sales" OR "eng"/^test$- Exactly "test"- All regex patterns are case-insensitive
- Navigate to any column
- Press
sto sort by that column - Press
sagain to toggle ascending/descending
- Position cursor on starting cell
- Hold
Shiftand use arrow keys to select a range - Press
cto copy selection as tab-separated values - Paste anywhere with
Ctrl+V
- Python 3.12+
- DuckDB >= 1.1.0
- Urwid >= 2.1.0
- Pyperclip >= 1.9.0
MIT License - see LICENSE file for details
Built with amazing open-source tools:
Found a bug? Have a feature request? Open an issue!