Summarize CSV Columns
Summarize CSV Columns gives one row per column of a file. Each row reports how many cells are filled, how many are blank, how many distinct values appear, and the range of values: the lowest and highest number for numeric columns, or the shortest and longest text for everything else.
It is a fast way to check an export you did not produce yourself. Blank counts and value ranges expose problems, such as an amount column with a stray word in one row, that are easy to miss while scrolling raw rows.
Key features
- One output row per input column
- Filled and blank counts with distinct values
- Numeric minimum and maximum, or text length range
- Trims cells before counting, so whitespace-only cells count as empty
About the CSV to CSV format
The output has nine columns: column, type, non_empty, empty, distinct, min, max, min_length and max_length. Type is number when every filled cell is a plain decimal (an optional sign and an optional exponent are allowed), text when at least one filled cell is not, and empty when the column holds nothing. min and max are filled only for number columns; min_length and max_length only for text columns. Cells are trimmed before counting, so a cell holding a single space counts as empty.
How it works
Each header becomes a column. Its cells are trimmed, blanks are counted as empty, and the remaining values are tested against a decimal pattern. When every filled value passes, the column is numeric and the lowest and highest values are returned as their original text, so 89.50 is still printed as 89.50 rather than 89.5.
Common use cases
- Checking a payment export for blank amounts before reconciling it against the bank
- Seeing which columns of a CRM dump are mostly empty before choosing what to import
- Confirming that a column meant for numeric IDs contains no letters before a database load
How to use this tool
- Paste CSV into the input box or upload a .csv file.
- Click Summarize to build the column profile.
- Read the type column first, then compare empty with non_empty for each column.
- Copy or download the summary for a review note or ticket.
Example
Orders export (input)
order_id,region,amount,status
1001,West,250.00,shipped
1002,East,,pending
1003,West,89.5,shipped
1004,,1200,returnedColumn profile (output)
column,type,non_empty,empty,distinct,min,max,min_length,max_length
order_id,number,4,0,4,1001,1004,,
region,text,3,1,2,,,4,4
amount,number,3,1,3,89.5,1200,,
status,text,4,0,3,,,7,8Tips for best results
- Run the summary on the raw file before any cleanup. A column that reports text where you expected number usually contains a thousands separator, a currency symbol or a word such as N/A.
- Compare distinct with non_empty. Four thousand filled status cells that collapse to three distinct values is an enumeration; four thousand distinct values points to free text or identifiers.
Common errors and how to fix them
- Provide file or paste input text.
- The input box is empty and no file is selected. Paste the CSV or choose a file.
- CSV is empty. Provide a header row.
- The file contained only blank lines or whitespace, so no header could be read. Check that the export wrote its header line.
Best practices
- Profile before cleaning, so the fixes you make target the columns that actually need them.
- For text columns, read min_length and max_length; the min and max cells are left blank there by design.
- Compare empty plus non_empty with the data row count of your spreadsheet. Each column's two counts should add up to that number, so a dropped or duplicated row shows up in every column.
Reading a profile without guessing
The empty count is the fastest signal. A column with a high empty count is either optional in the source system or was dropped by a faulty export step. Ask which before deleting it.
Distinct values tell you about the column's role. A low count against a large non_empty number suggests a code or category. A count close to non_empty suggests an identifier or a free-text field, which rarely belongs in a grouping key.
Frequently asked questions
Why does a numeric-looking column show type text?
At least one filled cell is not a plain decimal. Look for currency symbols, percent signs, thousands separators or words such as N/A. Remove them and run the summary again.
Is the header row counted as a data row?
No. The first row names the columns and each name becomes one output row. The non_empty and empty counts only cover the data rows below it.
For more background on data formats and conversion workflows, read our format guides.