HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
johnkerl
miller
Go2015–2026
johnkerl / miller

miller

Miller is like awk, sed, cut, join, and sort for name-indexed data such as CSV, TSV, and tabular JSON

31Distinct people
83Mentions
1Explicit recommenders
10.1KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Miller is like awk, sed, cut, join, and sort for name-indexed data such as CSV, TSV, and tabular JSON

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

One of my favorite tools. However, I don’t think that Visidata is a spreadsheet, even though it looks like one and is named after one. It is more spreadsheet adjacent. It is…

leonim used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year83 dated mentions

Observed mentions: 2015-08-17 02:45:41 UTC to 2026-07-04 19:50:17 UTC.

0510152015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 8 mentions; 6 submissions, 2 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 9 mentions; 9 submissions, 0 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 7 mentions; 4 submissions, 3 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 9 mentions; 3 submissions, 6 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 8 mentions; 3 submissions, 5 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 6 mentions; 5 submissions, 1 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 14 mentions; 1 submissions, 13 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 12 mentions; 1 submissions, 11 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 2 mentions; 2 submissions, 0 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC862
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC990
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC743
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC936
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC835
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC651
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC14113
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC514
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC12111
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC202
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC220

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
What is Miller? Miller is like awk, sed, cut, join, and sort for data formats such as CSV, TSV, JSON, JSON Lines, and positionally-indexed. What can Miller do for me? With Miller, you get to use named fields without needing to count positional indices, using familiar formats such as CSV, TSV, JSON, JSON Lines, and positionally-indexed. Then, on the fly, you can add new fields which are functions of existing fields, drop fields, sort, aggregate statistically, pretty-print, and more. Miller operates on key-value-pair data while the familiar Unix tools operate on integer-indexed fields: if the natural data structure for the latter is the array, then Miller's natural data structure is the insertion-ordered hash map. Miller handles a variety of data formats, including but not limited to the familiar CSV, TSV, and JSON/JSON Lines. (Miller can handle positionally-indexed data too!) In the above image you can see how Miller embraces the common themes of key-value-pair data in a variety of data formats. Installing There's a good chance you can get Miller pre-built for your system: OS Installation command Linux yum install miller apt-get install miller snap install miller Mac brew install miller port install miller Windows choco install miller winget install Miller.Miller scoop install main/miller See also README-versions.md for a full list of package versions. Note that long-term-support (LtS) releases will likely be on older versions. See also building from source. Features Miller is multi-purpose: it's useful for data cleaning, data reduction, statistical reporting, devops, system administration, log-file processing, format conversion, and database-query post-processing. You can use Miller to snarf and munge log-file data, including selecting out relevant substreams, then produce CSV format and load that into all-in-memory/data-frame utilities for further statistical and/or graphical processing. Miller complements data-analysis tools such as R, pandas, etc.: you can use Miller to clean and prepare your data. While you can do basic statistics entirely in Miller, its streaming-data feature and single-pass algorithms enable you to reduce very large data sets. Miller complements SQL databases: you can slice, dice, and reformat data on the client side on its way into or out of a database. You can also reap some of the benefits of databases for quick, setup-free one-off tasks when you just need to query some data in disk files in a hurry. Miller also goes beyond the classic Unix tools by stepping fully into our modern, no-SQL world: its essential record-heterogeneity property allows Miller to operate on data where records with different schema (field names) are interleaved. Miller is streaming: most operations need only a single record in memory at a time, rather than ingesting all input before producing any output. For those operations which require deeper retention (sort, tac, stats1), Miller retains only as much data as needed. This means that whenever functionally possible, you can operate on files which are larger than your system’s available RAM, and you can use Miller in tail -f contexts. Miller is pipe-friendly and interoperates with the Unix toolkit. Miller's I/O formats include tabular pretty-printing, positionally indexed (Unix-toolkit style), CSV, TSV, JSON, JSON Lines, and others. Miller does conversion between formats. Miller's processing is format-aware: e.g. CSV sort and tac keep header lines first. Miller has high-throughput performance on par with the Unix toolkit. Miller is written in portable, modern Go, with zero runtime dependencies. You can download or compile a single binary, scp it to a faraway machine, and expect it to work. Getting started Miller in 10 minutes A Guide To Command-Line Data Manipulation A quick tutorial on Miller Miller Exercises Tools to manipulate CSV files from the Command Line www.togaware.com/linux/survivor/CSV_Files.html MLR for CSV manipulation Linux Magazine: Process structured text files with Miller Miller: Command Line CSV File Processing Miller - A Swiss Army Chainsaw for CSV Data, Data Science and Data Munging Pandas Killer: mlr, the Scientist More documentation links Full documentation Miller's license is two-clause BSD Notes about issue-labeling in the Github repo Active issues Community Discussion forum: https://github.com/johnkerl/miller/discussions Feature requests / bug reports: https://github.com/johnkerl/miller/issues How to contribute: https://miller.readthedocs.io/en/latest/contributing/ Build status Building from source First: cd /where/you/want/to/put/the/source git clone https://github.com/johnkerl/miller cd miller With make: To build: make. This takes just a few seconds and produces the Miller executable, which is ./mlr (or .\mlr.exe on Windows). To run tests: make check. To install: make install. This installs the executable /usr/local/bin/mlr and manual page /usr/local/share/man/man1/mlr.1 (so you can do man mlr). You can do ./configure --prefix=/some/install/path before make install if you want to install somewhere other than /usr/local. Without make: To build: go build github.com/johnkerl/miller/v6/cmd/mlr. To run tests: go test github.com/johnkerl/miller/v6/pkg/... and mlr regtest. To install: go install github.com/johnkerl/miller/v6/cmd/mlr@latest will install to GOPATH/bin/mlr. See also the doc page on building from source. For more developer information please see README-dev.md. For developers README-dev.md How to contribute License License: BSD2 What people are saying about Miller Today I discovered Miller—it's like jq but for CSV: https://t.co/pn5Ni241KM Also, "Miller complements data-analysis tools such as R, pandas, etc.: you can use Miller to clean and prepare your data." @GreatBlueC @nfmcclure— Adrien Trouillaud (@adrienjt) September 24, 2020 Underappreciated swiss-army command-line chainsaw. "Miller is like awk, sed, cut,
Read the full README on GitHub

What Hacker News says

83 sources
leonim·Apr 1, 2025Recommendation phrase
One of my favorite tools. However, I don’t think that Visidata is a spreadsheet, even though it looks like one and is named after one. It is more spreadsheet adjacent. It is focused on row-based and column-based operations. It doesn’t support arbitrary inter-cell operation(s), like you get in Excel-like spreadsheets. It is great for “Tidy Data’, where each row represents a coherent set of information about an object or observation. This is very much like Awk, or other pipeline tools which are also line/row oriented. For CLI tools, I’m also a big fan of Miller (https://github.com/johnkerl/miller) to filter/modify CSV and other data sources.
In A love letter to the CSV format
Also, there is the VisiData Tutorial by Jeremy Singer-Vine. This is a very helpful introduction to VisiData. https://jsvine.github.io/intro-to-visidata/index.html I am a big fan of VisiData for working with data in the terminal. I also like John Kerl's miller[1] and Simon Willison's sqlite-utils [2] when I want to do queries. These are useful for working with data in simple shell scripts. [1] https://github.com/johnkerl/miller [2] https://github.com/simonw/sqlite-utils
In Using command line to process CSV files (2022)
Everyone is out here making fancy AI projects and talking about high tech stuff. In the mean time, I wrote this plain bash script to convert .ics files (a format from 1998) to CSV files. This lets you explore your calendar data without needing to setup API access and deal with authorization to your calendar software's API. (common ones all have .ics exports readily available) Combine this with CSV tooling and you got yourself some quick and easy calendar data analysis / exploration setup. Hope you like it! CSV utilities (still haven't pick a favorite one...): https://github.com/harelba/q https://github.com/BurntSushi/xsv https://github.com/wireservice/csvkit https://github.com/johnkerl/miller
In icsp – Command-line iCalendar (.ics) to CSV parser

Showing the 15 most recent of 83 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.