CSV Pivot Workbench
Turn a long CSV table into grouped row and column summaries. Choose up to three row dimensions and two column dimensions, then calculate a sum, record count, average, minimum or maximum. Hierarchical subtotals and the grand total use the original records, with explicit counts for empty and skipped values.
Key features
- One to three row dimensions and zero to two column dimensions
- Sum, record count, average, minimum and maximum
- Row/column subtotals and grand totals computed from source records
- Explicit blank-value handling and error-or-skip policy for invalid numbers
- Visible aggregation definition and processing counts
- 50-row table pages and CSV headers that identify aggregation settings
How to use
- Paste CSV with headers or choose a UTF-8 file.
- Select the delimiter and read the CSV columns.
- Choose ordered row dimensions and add any column dimensions you need.
- Select the aggregate, numeric column, invalid-number policy and subtotal display.
- Build the pivot, check its definition and grand total, then save CSV.
Use cases
- Compare regional and team sales with quarters across columns
- Count records by task status and owner
- Summarize measurements using grouped averages, minima or maxima
- Compare detail groups and subtotals against the source grand total
Frequently asked questions
How do dimensions differ from the numeric column?
Dimensions group records with identical text values. Choose one to three row dimensions and zero to two column dimensions without reusing a dimension column. The numeric column supplies values for sum, average, minimum and maximum. Record count ignores the numeric column and counts every source record.
How are subtotals and overall averages calculated?
They aggregate the original numeric records within each parent group. A group containing 10 and 20, and another containing 100, have an overall average of 130/3, not the average of the two group means, 57.5. Hiding subtotals does not remove the grand total.
What happens to blanks and invalid numbers?
Empty dimension values remain a separate group. Empty or whitespace-only numeric values are excluded from sum, average, minimum and maximum; zero is included. Invalid numbers return an error with a source record number unless you choose to skip them, in which case their count is reported. An intersection with no numeric values shows a dash, or zero for record count.
What numeric formats and precision are supported?
Decimals, signs and exponent notation are supported; currency symbols and grouping commas are not. Calculations use JavaScript binary floating point, not arbitrary precision. Nonfinite values, absolute values above 9,007,199,254,740,991 and nonzero values too small to represent are rejected. The screen shows 12 significant digits; CSV uses the internal number’s default string representation.
How are groups represented in the table and CSV?
Detail groups follow their first-seen hierarchical order, with each parent subtotal after its children. CSV uses row_kind to distinguish detail, subtotal and grand-total rows, and stores row dimensions in separate columns. Value headers identify the aggregate, numeric column, column-dimension tuple and subtotal status. Empty strings are preserved distinctly from literal group names.
Can it handle a large CSV?
Input is limited to 1 MiB, 5,000 data rows, 32 columns and 100,000 cells. Pivots allow 250 detail row groups and 30 detail column groups, with at most 750 rows, 61 columns and 20,000 cells including totals. Exceeding a cap returns an error rather than dropping groups. Cancel or Esc stops the calculation; changing settings clears the old result.
Privacy
CSV contents, chosen dimensions, numeric settings and results are processed in this page’s browser memory. This tool does not automatically send inputs to a server, URL, analytics event or browser storage. Saving CSV requires your action. Changing inputs or settings, or leaving the page, discards the previous result.
Comments & questions