Skip to the tool
ViewCSV
Files stay on your device

Analyze a CSV file

region-orders.csv· SAMPLE DATA48 rows · 7 columns
Rows
  1. region
Columns
  1. month
Values
  1. Sum of amount
  2. Number of rows
Totals and order
Numbers
Filter rows first
Saved layouts
No saved layouts yet.
Layouts are kept in this browser only. Export one as JSON to use it elsewhere.

Computed from all 48 rows of region-orders.csv.

1 value isn’t a number and is left out of “Sum of amount”.
Pivot table with 40 value cells. Select a value to see the rows behind it.
region2026-012026-022026-032026-04Total
Sum of amountNumber of rowsSum of amountNumber of rowsSum of amountNumber of rowsSum of amountNumber of rowsSum of amountNumber of rows
Austin
Chicago
New York
Grand total

Sums, minimums, maximums and medians are exact; averages and percentages are exact quotients rounded to 15 significant digits. Every subtotal and total is computed from the rows themselves, not from other cells. Downloads keep every digit.

Open a CSV file and build a pivot table: put one or more fields in Rows and Columns, add several Values (sum, count, distinct values, average, median, minimum, maximum) and read subtotals and a grand total that are computed from the rows themselves, never from other cells. Select any value to see the rows behind it, then download the table as CSV or XLSX, open it in the editor or chart it. The Column profile tab profiles every column, and the SQL tab runs SELECT queries across several files. Everything runs in your browser; the file is not uploaded.

What the column profile reports

TypeInteger, decimal, boolean, date, date-time or text. A column gets a type only when every non-empty value matches it; a mix of integers and decimals is decimal, a mix of dates and date-times is date-time, anything else is text. The share of values that match is shown too.
Blank cellsCells that are empty or contain only spaces. They are left out of every other statistic.
Distinct and top valuesHow many different values the column holds and the 10 most frequent, compared exactly as written: paid and paid are two values.
LengthShortest and longest value in characters, counting each emoji or accented letter once.
Leading zerosHow many values start with 0 followed by a digit, such as 00731. These are usually codes that must stay text.
Padded valuesHow many values have spaces at the start or end.
Duplicate and empty rowsRows identical to an earlier row in every cell, and rows where every cell is blank.
Numeric summaryCount of numeric values, exact sum, exact minimum and maximum (shown as written, so 4.50 stays 4.50), mean, sample standard deviation, median, first and third quartiles, and a histogram of 5 to 20 equal-width bins.

Which values count as numbers, and how precise the results are

A value counts as a number when it is a plain decimal with a dot: an optional sign, digits, an optional fraction and an optional exponent, such as -12.5, 120.00 or 3e5. Thousands separators are not accepted, so 1,234 is never read as 1234 or 1.234, and 12 kg, $5 or 1,5 are not numbers.

The sum, minimum and maximum are calculated with exact decimal arithmetic, so 0.1 + 0.2 totals exactly 0.3, and two 16-digit IDs such as 9007199254740992 and 9007199254740993 keep their real minimum, maximum and total.

The mean, standard deviation, quartiles and histogram use standard double-precision arithmetic, so they can show rounding noise such as 16.049999999999997 for a quartile. Values a double cannot hold faithfully are left out of these statistics and counted separately: whole numbers beyond ±9,007,199,254,740,991 (`Number.MAX_SAFE_INTEGER`), fractions with more than 15 significant digits, and values too large or too close to zero for a double, such as 1e-1000. Such a value never becomes a fake 0 or merges with its neighbor; when every value is affected, the mean and quartiles are simply empty.

Quartiles use linear interpolation between the sorted values. They are exact over the first 1,000,000 numbers in a column; past that they come from a reproducible random sample of 1,000,000 values and are marked approximate.

Build a pivot table

  1. Open a file, paste text or try the sample. The Pivot table tab opens with a first layout already guessed from the column names.
  2. Under Rows, add up to four fields with Add a field; the first is the outer group. Use the arrows to reorder and × to remove.
  3. Under Columns, add up to three fields to spread their values across the top. Leave it empty for a grouped list.
  4. Under Values, choose what to calculate with Summarize by and Column, and add up to eight values with Add a value.
  5. For sums and counts, Show as can display each value as a percentage of the grand total, its row total or its column total.

Groups are formed from the exact cell text: North and North are different groups, a blank cell is its own group shown as (blank), and a code such as 01067 keeps its leading zero. Trim spaces first in Clean CSV if you want them merged.

Number of rowsRows in the group, whatever the value column holds.
Count of valuesNon-empty cells in the chosen column.
Distinct valuesDifferent values as written in the chosen column; recounted for every total.
Sum, Minimum, MaximumExact decimal arithmetic on the numbers in the column.
AverageThe exact sum divided by the count of numbers, rounded to 15 significant digits.
MedianThe middle number, or the exact mean of the two middle numbers.

How subtotals and totals are calculated

With Subtotals for each row group, every outer row group gets a total row after its members; Grand total row and total column adds the overall row and, when there are column fields, a total column. Each of these totals is computed from the matching rows of the file, not by adding up the cells above it. That is what makes an average, a median or a distinct count correct in a total: the grand average is the sum of all amounts divided by the number of amounts, not the average of the group averages, and a customer who bought in two regions counts once in the grand total.

Cells in a numeric value that are not numbers, such as n/a or 12 kg, are left out and counted in a notice under the table; empty cells are ignored. With Decimal mark in the file set to comma, 1,5 reads as 1.5. Thousands separators and currency symbols are never read as numbers.

Sort rows by their labels or by any value, ascending or descending; with subtotals, each level is sorted within its parent group. Decimals shown and Group thousands only change the display: downloads keep every digit.

Drill into a value, export and reuse the layout

  • Select any value in the table to list the rows behind it, with their count; the first 1,000 are shown. Download all of them as CSV, or open them in the editor when there are 1,000 or fewer, then use Back to the pivot table.
  • Filter rows first limits the pivot table to rows that match conditions; the line above the table says how many rows were used.
  • Download the finished table as CSV or XLSX. Totals are labelled rows and columns, and numbers keep their exact digits; in the XLSX, numbers with more than 15 significant digits stay text so Excel can’t round them. It is a static table, not an Excel PivotTable you can rearrange.
  • Chart this sends the detail rows to the CSV chart maker without subtotals or totals, so nothing is counted twice.
  • Saved layouts keeps a layout in this browser; Export layout and Import layout move it between devices as a small JSON file. When a layout uses columns another file lacks, you choose a replacement column or leave that field out.

Reading the results correctly

  • A zero-padded ID column such as 001041 is reported as text (because of the leading zeros) but its values still parse as numbers, so it shows a sum and a mean. Ignore them: the leading-zeros count tells you the column is a code, not a quantity.
  • A number column inferred as text usually contains one odd value: n/a, 12 kg, a decimal comma or a thousands separator. The type share shows how many values match; find the rest in the CSV viewer.
  • Dates are only recognized in ISO form (2026-03-25, 2026-03-25T14:30:00Z). 11/03/2026 is text, because it could mean November 3 or 11 March.
  • Distinct counts are exact up to 100,000 different values per column. Beyond that the tool keeps the most frequent 50,000, and the distinct count and top values are approximate. The duplicate-row count is exact until 500,000 different rows have been seen; after that it is not reported.

Large files and limits

Files up to 25 MB, 100,000 rows, 250 columns or 2 million cells open interactively. Up to 20,000 rows the pivot table updates as you change the layout; for more, select Compute pivot table. Larger files are read in streaming mode: Compute over the whole file reads the file in chunks in a background worker and pivots every row, never just the preview. The column profile works the same way for large files; the SQL tab needs a file that fits the interactive limit.

A pivot table can have up to 20,000 row groups, 200 column groups and 1,000,000 cells in the finished table; medians and distinct counts can keep up to 4,000,000 values in memory. Beyond a limit you get an error that names it instead of a cut-off table. The page shows the first 500 rows and 60 value columns; downloads contain the whole table. Analysis runs in this tab and the CSV is never sent to a server.

Example

Six orders, one with an empty amount and one with n/a. The layout has region in Rows, month in Columns, and two values: the sum of amount and the distinct values of customer. Below is the downloaded CSV. The n/a is left out of the sum and reported; the grand total counts 4 different customers, not the 2 + 3 of the two month columns, because C02 bought in both months.

CSV
order_id,month,region,customer,amount
001041,2026-01,North,C01,19.90
001042,2026-01,South,C02,4.50
001043,2026-01,North,C01,
001044,2026-02,North,C03,19.90
001045,2026-02,South,C02,120.00
001046,2026-02,South,C04,n/a
Pivot table download (CSV)
region,2026-01 · Sum of amount,2026-01 · Distinct values of customer,2026-02 · Sum of amount,2026-02 · Distinct values of customer,Total · Sum of amount,Total · Distinct values of customer
North,19.9,1,19.9,1,39.8,2
South,4.5,1,120,2,124.5,2
Grand total,24.4,2,139.9,3,164.3,4

Questions and answers

Why doesn’t the grand total average equal the average of the rows above it?

Totals are recalculated from the rows of the file. A group with many orders weighs more in the overall average than a group with few, so averaging the group averages would be wrong; the same applies to medians and distinct counts.

Can I open the result as an Excel PivotTable?

The XLSX download is a regular sheet with the finished table, its subtotals and totals. It is not an interactive Excel PivotTable; to rearrange it, change the layout here and download again.

Why is the standard deviation in the column profile different from Excel’s STDEV.P?

The profile reports the sample standard deviation (dividing by n − 1), which matches STDEV.S in Excel and Google Sheets. STDEV.P divides by n and gives a smaller value on small samples.

Standards and references