Comparatifs

csvlens vs Miller: Which Terminal CSV Tool Do You Actually Need?

Two free, open-source terminal tools for CSV files — one lets you browse a huge file like `less`, the other reshapes it like `awk`. Here's when you actually need each one.

If you work with CSV files from the terminal, you've probably hit one of two annoying moments: a file too big to open in Excel without your laptop fan spinning up, or a quick data cleanup that doesn't justify writing a whole Python script. Two free, open-source command-line tools solve these — but they solve different problems, and picking the wrong one means fighting the tool instead of your data.

The short version: csvlens is for looking at a CSV — scrolling, searching, filtering, exactly like the `less` pager you already use for logs. Miller is for changing a CSV — filtering rows, joining files, converting formats, the way `awk` and `sed` operate on plain text. One is a viewer, the other is a processor. Below is what each is actually good at, and where each one runs out of road.

csvlens — a `less` for spreadsheets

csvlens exists for a very specific moment: you have a CSV — maybe a few hundred megabytes, maybe multiple gigabytes — and you just want to see what's in it. Excel chokes or refuses to open it. Writing `pandas.read_csv().head()` in a scratch script feels like overkill for a 10-second check. csvlens opens the file instantly, in the terminal, and lets you scroll and search it the same way you'd page through a log file with `less`.

Under the hood it's a single Rust binary (installable via Homebrew, winget, Cargo, or your Linux/BSD package manager), with vim-style navigation (hjkl and arrow keys), regex search with highlighting, row/column/cell filtering, multiple selection modes, column freezing so headers stay visible while you scroll sideways, natural-language-aware sorting, and clipboard integration for pulling out a value. It auto-detects the delimiter, so semicolon-separated exports from European tools open just as cleanly as comma-separated ones. It's free, MIT-licensed, and has 3.9k GitHub stars with active maintenance.

What it won't do: csvlens is read-only by design. It doesn't edit cells, transform columns, join files, or convert formats — it's a viewer, full stop. If your actual task is reshaping the data rather than reading it, you'll open csvlens, confirm what you're looking at, then reach for something else anyway.

Pick csvlens if: you regularly get handed CSV exports too large for a spreadsheet app and just need to inspect, search, or spot-check them without ceremony.

Miller — awk and sed, but for structured data

Miller solves a different, older frustration. Classic Unix tools like `awk`, `sed`, and `cut` are fast and available everywhere, but they treat a CSV as raw text with no concept of column names — so a script built around "field 3" silently breaks the moment someone reorders the columns in the source export. You could reach for a Python + pandas script instead, but that means pulling in a Python environment and its dependencies just to filter a file.

Miller sits between those two options: a single, fast, dependency-free Go binary that understands CSV, TSV, JSON, and JSON Lines structurally, so you filter, sort, join, and aggregate using actual column names instead of fragile positional indexes. It converts between formats natively (CSV in, JSON out, no glue script required), and its streaming architecture processes files larger than available RAM using single-pass algorithms — genuinely useful for log post-processing or ETL jobs where the file won't fit in memory. It's mature: 10,000+ GitHub stars, commits as recently as this week, and full documentation at miller.readthedocs.io.

What it won't do: Miller has its own DSL (domain-specific language) for the more advanced operations, and that's a real learning curve if you're used to plain awk one-liners or pandas syntax. It's also not an exploratory-analysis environment — for genuinely digging through data interactively, pandas or R still give you more. And everything runs on a single machine; there's no distributed processing story if your "CSV" is actually a 200GB dataset spread across files.

Pick Miller if: you need to filter, reshape, join, or convert CSV/TSV/JSON data as part of a script or pipeline, and want to avoid spinning up Python for what's fundamentally a text-processing job.

How they actually compare

csvlensMiller
What it's forBrowsing / inspecting a CSVFiltering, reshaping, converting data
Closest classic-Unix analogylessawk + sed + join
FormatsCSV (auto-detects delimiter)CSV, TSV, JSON, JSON Lines
Edits the file?No — read-only viewerYes — filters, transforms, converts
Handles files bigger than RAM?Yes, for viewingYes, streaming single-pass processing
Learning curveLow — vim-style keys if you know `less`Higher — has its own DSL for advanced use
Language / installRust binary — Homebrew, winget, CargoGo binary — zero runtime dependencies
PriceFree, open source (MIT)Free, open source

They're not really competitors — most people who need both will end up with both installed, the same way you keep `less` and `awk` around even though neither replaces the other. If you had to pick just one to start with: reach for csvlens first if your problem is "I can't even see what's in this file," and reach for Miller first if your problem is "I know what's in this file and I need it to look different."