Pivot Table Generator
Cross-tabulate CSV data by row, column, and value with sum, avg, count, min, or max.
Written by Golam Rabbani, Founder & Lead Engineer
How to use this pivot table generator
- Paste your CSV data into the textarea — the first row must be the column headers.
- Type the header name to use as the row dimension, the header to use as the column dimension, and the header for numeric values.
- Pick an aggregator: sum, avg, count, min, or max.
- Click Build Pivot to see the cross-tabulated table.
- Click Copy Markdown to paste the result into Notion, GitHub, or any Markdown editor.
About this pivot table generator
A pivot table reshapes a flat list of records into a two-dimensional summary where one column becomes the rows, another becomes the columns, and a third is aggregated in every cell. This tool runs the entire pivot in your browser using a quoted-field-safe CSV parser, so private data never leaves the page.
You choose which header drives the rows, which drives the columns, and which numeric column to aggregate. The aggregator can be sum, average, count, minimum, or maximum. Non-numeric values are skipped unless the aggregator is count, in which case every matching row contributes one to the cell. Rows and columns are sorted alphabetically so the same input always produces the same table.
For example, paste a six-row CSV of regional sales — North/Widget 120, North/Gadget 80, South/Widget 150, South/Gadget 200, East/Widget 90, East/Gadget 110 — set row to region, column to product, value to sales, aggregator to sum, and the result is a 3-row by 2-column table: East shows Gadget 110, Widget 90; North shows Gadget 80, Widget 120; South shows Gadget 200, Widget 150. The same table is rendered visually and as copyable Markdown.
FAQ
- What CSV formats are supported?
- Standard comma-separated values with a header row, optional double-quoted fields, and escaped quotes ("") inside quoted fields. Trailing whitespace per cell is trimmed automatically.
- What happens if my value column contains non-numbers?
- For sum, avg, min, and max, rows with non-numeric values are dropped from that cell. For the count aggregator, every matching row is included regardless of whether the value column parses as a number.
- Is my data ever uploaded anywhere?
- No. Parsing, pivoting, and rendering all run in your browser. There is no network request — close the tab and the data is gone.
- Why are the rows and columns alphabetical?
- Deterministic ordering makes the output stable: the same CSV always produces the same table. If you want a custom order, sort the categories in your spreadsheet before pasting.
- How big a dataset can it handle?
- Up to a few thousand rows runs instantly on a modern phone. Very large datasets (tens of thousands of rows) may take a fraction of a second; everything is processed synchronously after you click Build Pivot.