CSV Data Profile
The report you want before you trust a file you didn't create. One row per column: what type it really holds, how much of it is actually populated, how many distinct values it has, the numeric range, and flags for the things that break downstream jobs — mixed types in one column, IDs with leading zeros, cells padded with invisible whitespace, columns that are 90% empty.
How to profile a CSV
- Paste the CSV or drop a file, then click Profile.
- Read the top row of stats first: rows, columns, duplicate rows, empty rows, parse errors, detected delimiter.
- Scan the Flags column — anything listed there is a concrete reason a load or a join might fail.
- Export the report as CSV for a spreadsheet, or as Markdown to paste into a ticket or a data-review doc.
What the flags mean
- mixed types — the column holds numbers and non-numbers. Classic cause of "invalid input syntax for type numeric" on import, and of averages that silently ignore half the rows.
- unique — key candidate — every row has a different, non-empty value. This is the column to join on.
- constant — one value for the whole file. Usually a column you can drop, or a sign the export filtered more than you expected.
- over half empty / always empty — sparse columns. Fine for optional fields, alarming for something you were about to rely on.
- leading-zero values — postcodes, product codes, phone numbers. These must stay text; converting them to numbers destroys them permanently.
- edge whitespace — values with leading or trailing spaces. They break exact joins, grouping, and deduplication while looking perfectly normal on screen.
Type inference is a guess, and says so
Types are inferred from the values present, not from a schema — integer, decimal, boolean, date, text, mixed, or empty. A column of years reads as integer; a column with a single N/A among 10,000 numbers reads as mixed, which is exactly the signal you want. For a formal contract you can hand to a validator, generate one with JSON Schema.
FAQ
What counts as empty?
An empty string. A cell containing N/A, -, or null is a value, not a blank — which is why those show up under top values, where you can spot them.
Why is mean blank for some columns?
Because nothing in the column parsed as a number. Mean and median are computed only over numeric values; a mixed column reports statistics for the numeric part only.
How big a file can it profile?
The whole file is parsed in memory, so tens of thousands of rows are comfortable and hundreds of thousands will be slow. For a quick shape check on a huge export, Row & cell count is much cheaper, or profile a random sample.
Is my data uploaded?
No. Profiling runs entirely in your browser — that's the point of doing it here rather than in a hosted tool.
Privacy
100% client-side. No upload. See the privacy policy.