Skip to content

CSV Pivot Table & Group By Tool

Paste or open a delimited table, group it by a row field and an optional column field, then aggregate a value column. Blank or non-numeric cells are skipped and counted as ignored instead of becoming zero.

Runs locally in your browser
1CSV / TSV input2Pivot configuration3Pivot table

CSV / TSV inputload → map → aggregate
Pivot table

How to build a pivot table from CSV

The workbench groups a pasted or loaded table by one row field and one optional column field, then aggregates a value field with Count, Sum, Average, Minimum or Maximum. The table, the metrics row and the CSV export are produced from the same pass over the data, so what you copy is what the preview shows.

The text is parsed in the page by a small CSV reader: a byte-order mark is stripped, CRLF and LF endings both work, and a quoted cell keeps separators, quotes and line breaks inside it. Numbers are read leniently — thousands separators, a currency symbol and accounting parentheses are understood — and a cell that never parses is reported as ignored instead of quietly becoming a zero.

  1. Paste CSV or TSV text into the box, or load a local .csv, .tsv or .txt file. Delimiter detection tries comma, tab, semicolon and pipe on the first 25 rows and keeps the widest consistent split; the selector overrides the choice.
  2. Press Pivot configuration to fill the three field lists from the first row. A blank header cell is named column_1, column_2 and so on, and a repeated name gets a _2 or _3 suffix.
  3. Choose the row field, the optional column field — None puts every group in a single result column — and, for the numeric methods, the value field that holds the numbers.
  4. Pick the aggregate and press Build pivot. Count counts rows, including rows whose value cell is empty; Sum, Average, Minimum and Maximum read only the cells that parse as numbers.
  5. Check the metrics row — groups, columns, result cells, the aggregate name and, when relevant, the number of ignored cells — then use Copy or Download for the comma-separated result.

What the table, the metrics and the export contain

What each aggregate reads

Count counts the rows that fall into a group, so a blank value cell still counts and the value field can stay at None. The other four methods read only numeric cells: blank cells are skipped instead of being treated as zero, and text such as n/a is skipped as well, with the total reported as Ignored cells in the metrics row.

A group with no numeric cell renders an empty cell, and a dataset with no numeric values at all answers with a warning instead of a table full of zeros. Numbers may carry a sign, decimals and exponent notation, thousands separators that group digits in threes (1,234 or 1 000), one leading currency symbol, and accounting parentheses, so (200) is read as -200. When both separators appear, the last one is the decimal separator, so 1.234,56 is 1234.56. Sums are rounded to fifteen significant digits, which is why 0.1 + 0.2 reads 0.3 and not 0.30000000000000004.

Group labels, order and blank cells

Row and column labels are used exactly as they appear in the file: no trimming, no case folding, no normalisation. The cells of the rendered table are kept byte-identical to the input, so a group named Data or Total stays that way on every locale. A row whose row field is empty is grouped under the blank label — (blank) in English, (vide) in French, (空欄) in Japanese — and an empty column value is grouped the same way, which is why a blank column can appear next to named ones.

Labels are ordered naturally: blanks first, then labels that are pure numbers in numeric order (2, 10, 100), then text in the language of the page. The table and the CSV export use the same order, so a copied file stays stable between runs.

Reading the export and the limits

The export is always comma-separated and quotes any cell that contains a comma, a quote or a line break, whatever delimiter the input used. Copy places the same text on the clipboard that Download writes to voritools-pivot.csv.

Everything runs in this page: no request leaves the browser, the tool keeps working offline and it is safe for exports you may not upload. A 6,000-row, 4-column sample builds in about 0.4 seconds. The scope is one aggregate per build — there are no formulas and no multi-level value columns — and values past the last header cell of a row are ignored, so check that the header row is complete before trusting a wide file. Build pivot re-reads the textarea and refreshes the field lists when a new dataset no longer matches them, so a second paste never reuses the first selection.

Recent tools: