CSV Profiler
Profile a CSV file column by column — inferred type, empty and distinct counts, value range, mean and the most common value — plus a data-quality report naming ragged rows, duplicate rows, mixed-type columns and candidate primary keys. Detects the delimiter automatically and runs entirely in your browser.
Input
Options
With this off, columns are profiled as "Column 1", "Column 2", … and the first row counts as data.
Also makes a field of only spaces count as empty, which is usually what you want when profiling an export.
Output
| Metric | Value |
|---|---|
| No data yet | |
| # | Column | Type | Non-empty | Empty | Distinct | Range | Mean | Most common |
|---|---|---|---|---|---|---|---|---|
| No data yet | ||||||||
Range and Mean are values for numeric columns, earliest → latest for dates, and character lengths for everything else.
Guides
Paste a CSV — or drop the file in — and get a column-by-column profile of what's actually in it before you import it anywhere. This free online CSV profiler infers each column's type, counts empty and distinct values, reports the value range and mean, names the most common value, and then writes a plain-English data-quality report calling out ragged rows, duplicate rows, mixed-type columns and candidate primary keys. The delimiter is detected automatically, and nothing is uploaded.
How to use it
- Paste your CSV into CSV Input, or upload a
.csvfile. - Leave Delimiter on Auto detect unless the guess is wrong — comma, semicolon, tab and pipe can also be forced.
- Leave First row contains headers on if your file has a header row; with it off, columns are profiled as "Column 1", "Column 2", … and the first row counts as data.
- Read the Dataset overview for shape and file-level problems, the Column profile for per-column statistics, and the Data-quality report for the specific things worth fixing.
Both tables can be copied or downloaded as CSV, so a profile can go straight into a ticket or a spreadsheet.
What does each column of the profile mean?
Type is inferred from every non-empty value: integer, number, boolean, date, text, or mixed when the values don't agree (a column of 1 and 1.5 is number, not mixed — integers widen). Non-empty and Empty count filled and blank cells. Distinct is the exact number of different values, not an estimate. Range and Mean are the numeric minimum/maximum and average for numeric columns, the earliest → latest value for dates, and character lengths for text. Most common shows the most frequent value and how often it occurs — blank when no value repeats.
What is a "ragged" row?
A row with a different number of fields from the header. It almost always means a delimiter or line break appeared inside a value without being quoted, which is exactly the kind of bug that turns into shifted columns after an import. The overview counts them and the quality report calls them out.
Why does it flag "candidate primary key"?
A column where every row holds a different, non-empty value is a natural unique identifier — worth knowing before you design a table or a join. It's only reported on files with at least five rows, since uniqueness across three rows is usually a coincidence.
Does the parser handle quoted fields?
Yes. Quoted values containing the delimiter, embedded line breaks, and doubled "" escapes are all parsed correctly — this is a real RFC 4180-style parser, not a split on commas. That matters for profiling, because a naive split would report ragged rows that don't exist.
Is my data private?
Completely. Parsing and profiling run in your browser; the file is never uploaded, logged or stored. That's the point of profiling a customer export here rather than in a hosted data tool.
What should I do with the results?
If a column is mostly empty or mixed-type, clean it before importing. If you only need some columns, use the CSV Column Extractor. To reshape the file for another system, try CSV to JSON or CSV to SQL; to tidy the formatting itself, use the CSV Formatter.