Profile the columns of a CSV file

Paste a CSV or open a file. See each column's type, blanks, distinct values, top values, ranges and the values that look wrong.

How it works

  1. Paste a CSV, or load a file up to 50 MB
  2. Check the separator and whether the first row is the header
  3. Read the column table and the suspicious values, then download the profile as CSV or JSON

How a column's type is decided

The profiler labels every non-blank value as an integer, decimal, date, boolean, email, web address or text, and names the column after the label that most of its values fit. A type needs at least half of the non-blank values; below that the column is text. Integers also fit a decimal column, so 1, 2.5 and 3 make a decimal column at 100 percent. Booleans are true, false, yes and no in any letter case. The numbers 0 and 1 are integers, not booleans. Dates are ISO forms such as 2024-01-15 or 2024-01-15T10:30:00Z, day/month/year and month/day/year with a four-digit year, and names such as Jan 5, 2024. The Match column is the share of non-blank values that fit the chosen type.

What each column shows

Blanks are empty cells and cells with only spaces. Distinct counts different values, spelled exactly, so Pune and pune count twice. The top five values show the most common spellings with their counts. Number columns show min, max, mean and median. Date columns show the earliest and latest date as written. Text columns show the shortest and longest value in characters. A date such as 03/04/2024 can be day first or month first; the tool decides from other values in the column and says when it had to assume day first. Rows with more or fewer fields than the header are counted as uneven rows.

What counts as a suspicious value

Three things are listed with row numbers, where the header is row 1. First, values that break the column's type, such as n/a in a number column. Second, values with spaces at the start or end. Third, one value written in different letter case. Take the sample on the page: five rows and seven columns. The score column is a decimal column at 80.0 percent, because n/a on row 5 is not a number; the other four values give min 6, max 9, mean 7.6875 and median 7.875. The email column is 75.0 percent, because chen-at-example.com on row 4 is not an email address, and one cell is blank. The city column has Pune twice and pune once, a letter-case duplicate. The name on row 5 has spaces around it.

Large files and limits

A file can be up to 50 MB and 1,000,000 data rows, with up to 500 columns. The file is read in 1 MB slices, in a background thread when your browser supports one, so the page stays responsive and shows a percentage. Past 1,000,000 rows the profile stops and says so. A column tracks up to 200,000 different values; beyond that the distinct count shows a plus sign and the top values come from the values tracked. The median uses up to 1,000,000 numbers per column. A cell longer than 100,000 characters is cut for profiling. Pasted text is limited to 2,000,000 characters; load bigger data as a file.

What this tool does not do

It does not change or clean your data; it only reports. It reads UTF-8 text, so a file in another encoding shows replacement marks and a notice. Numbers must use a dot as the decimal point and no thousands separator, so 1.234,56 and $12 are text. Dates with two-digit years and times without a date are text. It does not guess a database schema; for that, convert the file with the CSV to SQL tool. Type labels are guesses from the values, not a promise about what the column means.

Frequently asked questions

How do I find bad values in a CSV column?

Paste the CSV and open Suspicious values. Each column lists values that break its type with the row number, for example n/a on row 5 in a number column. Row 1 is the header, so the row numbers match a spreadsheet.

How big a CSV file can I profile?

Up to 50 MB and 1,000,000 data rows, with up to 500 columns. A bigger file is refused with a message, and a file with more rows is profiled for the first 1,000,000. The file is read in 1 MB slices, so the page keeps responding.

Why does a column of 0 and 1 show as integer, not boolean?

Only true, false, yes and no count as booleans, in any letter case. A column of 0 and 1 could be counts or flags, so it is labelled integer and you see its min, max and mean.

What does the Match percentage mean?

It is the share of non-blank values that fit the column's type. A score column with 7.5, 9, 8.25, n/a and 6 is a decimal column at 80.0 percent: 4 of 5 values are numbers. Blank cells are left out of the percentage and counted under Blanks.

Why is my date column read as day first?

A value like 03/04/2024 fits both orders. If another value in the column, such as 31/12/2024, can only be day first, the column is day first. When every value is ambiguous the tool reads day first and says so next to the dates.

Is my CSV file uploaded?

No. The text is processed in your browser and not uploaded, and a loaded file is read in this tab too. The separator and header settings are saved on this device; the data is not.