
Profile a CSV dataset
Per column: null count, a heuristic majority type (integer/float/boolean/date/string, over non-empty cells), cardinality, and, for integer/float columns, min/max/mean/median/population stddev, or, for ISO-8601 date/timestamp columns, min/max. Read-only. Nothing is changed. Quote-aware. A record with a quoted field containing a literal newline counts as one record. Runs entirely on your device.
Profile a CSV dataset prints a row per column: name, empty-cell count, inferred type and cardinality. Type is a majority vote over non-empty cells, one of integer, float, boolean, date or string. Integer, float and date columns add min and max; integer and float columns also get mean, median and population stddev. An empty cell is the only thing counted as null.
Questions
What does it tell me about each column?
As a table: the column name, how many cells are empty, one inferred type (integer, float, boolean, date or string), and the cardinality, meaning the number of distinct non-empty values. A numeric or date column earns extra columns of its own: a low and a high value for either kind, plus an average, a midpoint and a population spread for the numeric ones. Below the table it prints the shape of the file, its row count and column count. Nothing is written to a file; the report is the output.
How reliable is the type it reports?
It is a majority vote, not a schema. Each non-empty cell is matched against simple patterns for integer, float and boolean, and anything else counts as string; whichever bucket wins is what the column is called. CSV has no type system, so a column of mostly numbers with a few words in it still reports as integer. A column with nothing but empty cells reports as empty.
Does it change my file?
No. This is read only. It parses the CSV, counts what it finds and prints a report, and produces no output file at all, so it is safe to point at anything you have not looked at yet. If you want a file back rather than a report, the CSV tools that rewrite, such as Reorder / insert CSV columns, are the ones to reach for.
What counts as a null?
An empty cell. There is no notion of a NULL keyword or a placeholder such as NA, so a column full of the text NA reports zero nulls and a cardinality of one. Missing cells in short rows are read as empty and counted as nulls too.
What if my file has no header?
Turn hasHeader off and the columns are named col1, col2 and so on, with every row treated as data. With hasHeader on, which is the default, the first row supplies the names and is excluded from the counts. A file with a header and no data rows is refused with "no data rows".
How large a dataset can it profile?
There is no fixed limit, but the whole CSV is parsed into memory and a set of distinct values is held per column while cardinality is counted, so a wide file of mostly unique values is the heaviest case. Everything runs on your device with no upload, so your own memory is the ceiling.
Compare
| Tool | Runs on the CLI | Live as you type |
|---|---|---|
| Profile a CSV dataset | Yes | Yes |
| Query a SQLite database | Yes | No |
| Diff two CSV datasets | Yes | No |
| JSONL processor | Yes | Yes |
| Filter / grep a log file | Yes | Yes |
| Flatten / unflatten JSON | Yes | Yes |