How to generate a pivot summary from csv or excel data in seconds
- Step 1Confirm Developer tier — The run is gated to Developer. Free, Pro, and Pro-media can fill in the form but the run is rejected. Upgrade first if needed.
- Step 2Drop in the CSV or XLSX — Both formats are accepted directly. SheetJS parses the file in your browser. For a workbook, remember only the first sheet is read — move your data tab to position one if needed.
- Step 3Copy the three header names exactly — Open the file's first row, copy the exact header text (case included) for your row, column, and value columns, and paste them into
rowField,colField, andvalueField. A typo or wrong case makes that field read blank. - Step 4Pick the aggregation — Choose from
sum(default),count,average,min,max, orcountdistinct. Usecountfor row tallies, the numeric four for stats, andcountdistinctfor unique-value counts. - Step 5Generate — Press run. The pivot is built in one pass: distinct row values down the side, distinct column values across the top (alphabetical), aggregated values in the body, a
Grand Totalrow at the bottom. - Step 6Download pivot-table.xlsx — Save the result. It's a single-sheet workbook ready to open, chart, or paste into a report — no further Excel pivot setup needed.
What you type vs what Excel makes you do
The tool's fixed form compared to Excel's pivot workflow. Same shape of result, far less configuration.
| Step | This tool | Excel pivot |
|---|---|---|
| Choose row dimension | Type the header into rowField | Drag the field into the Rows area |
| Choose column dimension | Type the header into colField | Drag the field into the Columns area |
| Choose value | Type the header into valueField | Drag the field into the Values area |
| Choose aggregation | Pick from aggFn dropdown | Open Value Field Settings, select function |
| Distinct count | Pick countdistinct | Requires Power Pivot / Data Model |
| Get the file | Download pivot-table.xlsx | Save the workbook |
The six aggregations at a glance
Pick one per run. The numeric four ignore non-numeric value cells.
| aggFn | Use for | Grand Total column |
|---|---|---|
sum | Totals (revenue, units, hours) | Yes |
count | How many rows per cell | No |
average | Means (avg score, avg value) | No |
min | Smallest value per cell | No |
max | Largest value per cell | No |
countdistinct | Unique values per cell | No |
Quick troubleshooting
The fastest fixes for a summary that doesn't look right.
| Symptom | Likely cause | Fix |
|---|---|---|
All zeros / everything in (blank) | Field name wrong or wrong case | Copy exact header text from row one |
| Empty or odd pivot | Data not on the first sheet | Move data tab to position one |
Cells unexpectedly 0 under SUM | Value column has text/symbols | Strip $, , to plain numbers |
| Columns out of order | Alphabetical sort | Use ISO labels (2026-01) |
| Run rejected | Below Developer tier | Upgrade to Developer |
Cookbook
Fast, real ad-hoc summaries with the exact option text to type.
Total hours by project x week (SUM)
A timesheet CSV summarised in one pass. The Grand Total column appears because the aggregation is sum.
Input (timesheet.csv): Project,Week,Hours Alpha,W1,8 Alpha,W2,6 Beta,W1,4 Alpha,W1,2 Options: rowField=Project colField=Week valueField=Hours aggFn=sum Output (pivot-table.xlsx): Project,W1,W2,__Grand Total Alpha,10,6,16 Beta,4,0,4 Grand Total,14,6,20
Row tally by category x status (COUNT)
How many records fall into each cell, regardless of the value column's contents. No Grand Total column under count.
Input (tickets.csv): Category,Status,Id Bug,Open,1 Bug,Closed,2 Feature,Open,3 Bug,Open,4 Options: rowField=Category colField=Status valueField=Id aggFn=count Output: Category,Closed,Open Bug,1,2 Feature,0,1 Grand Total,1,3
Average score by class x term (AVERAGE)
Means per bucket. Non-numeric cells (an absent 'A') are ignored, so they don't drag the average down.
Input (grades.csv): Class,Term,Score 9A,T1,80 9A,T1,90 9A,T1,A 9B,T1,70 Options: rowField=Class colField=Term valueField=Score aggFn=average Output (9A = mean of 80,90 = 85; 'A' ignored): Class,T1 9A,85 9B,70 Grand Total,77.5
Max price by category (MAX)
Largest value per cell. A bucket with no numeric values resolves to 0.
Input (products.csv): Category,Brand,Price Shoes,A,90 Shoes,A,120 Shoes,B,60 Options: rowField=Category colField=Brand valueField=Price aggFn=max Output: Category,A,B Shoes,120,60 Grand Total,120,60
Unique visitors by channel x day (COUNT DISTINCT)
Distinct count of session IDs. Repeat visits from the same session count once; blank IDs are ignored.
Input (sessions.csv): Channel,Day,SessionId Organic,Mon,s1 Organic,Mon,s1 Organic,Mon,s2 Paid,Mon,s3 Options: rowField=Channel colField=Day valueField=SessionId aggFn=countdistinct Output: Channel,Mon Organic,2 Paid,1 Grand Total,3
Edge cases and what actually happens
Column header names must be exact
Invalid fieldHeader matching is case-sensitive and exact. revenue won't match a Revenue header — that field reads blank, the dimension collapses to a single (blank) bucket, and numeric aggregations return zeros. Copy the header text verbatim from the first row.
A required field left empty
ErrorAll three of rowField, colField, and valueField are mandatory. Leaving any blank throws Row field, column field, and value field are all required. before the data is read.
CSV delimiter is not a comma
Parse mismatchSheetJS infers structure from the CSV; semicolon- or tab-delimited files from some EU locales or exports may parse as a single column, leaving no header to match. Re-save the CSV with comma delimiters, or convert to .xlsx first.
Data not on the first sheet of a workbook
Wrong sheetFor XLSX inputs only sheet index 0 is read. A workbook with the data on a second tab produces an empty or wrong pivot. Move the data to the first sheet.
Value column has currency symbols or commas under SUM/AVG
By designNumeric aggregations use parseFloat, which stops at the first non-numeric character. $1,200 is skipped (NaN) and 1,200 reads as 1. Strip symbols and thousands separators so the value column is plain numbers.
Empty (row, column) combination
ExpectedCombinations that don't occur are filled with 0 so the grid is rectangular. The 0 is a fill, not a recorded value.
Output columns not in source order
By designBoth axes are sorted alphabetically, not by the order they appear in the source. For chronological or custom order, prefix labels (1-, 2-) or use ISO date strings so the alphabetical sort matches your intent.
First row of data treated as headers
Header assumptionThe tool always treats row one as the header. A headerless CSV will use its first data row as field names, which then won't match what you typed. Add a header row before uploading.
Account below Developer tier
RejectedThe run throws Pivot Table Generator requires Developer tier. on Free, Pro, and Pro-media. Upgrade to Developer to produce the summary.
Very wide column dimension
Wide outputEach distinct colField value becomes a column. A high-cardinality field (ID, email) creates thousands of columns. Choose a low-cardinality field for the column axis.
Frequently asked questions
Do column header names need to be exact?
Yes — they are matched case-sensitively against the file's first row, so Region and region are different. If a field reads blank or your pivot is all zeros, the header name or its case is almost certainly off. Copy the exact text from row one rather than typing it.
What is the maximum dataset size?
On the Developer tier the excel-family limit is 500 MB and unlimited rows. The lower tiers' limits (Free 5 MB / 10,000 rows; Pro 50 MB / 100,000 rows; Pro-media 200 MB / 500,000 rows) don't come into play, because the pivot run is rejected below Developer regardless of file size.
Is this really faster than Excel for a one-off summary?
For a single row/column/value summary, yes — you skip launching Excel, building a pivot, dragging three fields, and setting the aggregation. You type three names, pick one function, and download. For exploratory analysis where you keep re-arranging fields, Excel's interactive pivot is better; this tool is built for the fixed, quick case.
Does it work on CSV as well as Excel files?
Yes, both .csv and .xlsx are accepted. CSV should be comma-delimited; semicolon or tab files may parse as a single column. For XLSX, only the first sheet is read.
Why is my whole pivot zeros?
Usually a field-name mismatch (wrong case or typo) so the value column reads blank under a numeric aggregation, or a value column full of non-numeric text. Verify the three header names against row one, and check that the value column is plain numbers for sum/average/min/max.
Which aggregation should I pick?
sum for totals, count for how many rows per cell, average for means, min/max for extremes, and countdistinct for unique values. Only sum adds a Grand Total column; all of them add a Grand Total row.
Can I do a quick distinct count?
Yes — pick countdistinct and point valueField at the column you want unique counts of (IDs, emails, SKUs). It's the unique count Excel needs Power Pivot for. See the count-distinct recipe for the details.
Why are my columns in the wrong order?
Both axes sort alphabetically. Jan comes before Feb alphabetically? No — Feb sorts first. For time order, use ISO labels like 2026-01 so alphabetical equals chronological. For custom order, prefix the labels with 1-, 2-, etc.
Does my file get uploaded to a server?
No. Parsing and aggregation run in your browser via SheetJS; the file never leaves your device. Only an anonymous usage counter is recorded. Good for quick summaries of confidential files.
What does the (blank) row or column mean?
It's the bucket for rows whose row/column field cell was empty. Those rows aren't discarded — they're grouped under (blank) so missing categorical data is visible. Filter empty-field rows out of the source if you want them gone.
Can I summarise multiple value columns at once?
No — one value field per run. Run the tool once per value column and place the outputs side by side, or join them afterwards with the Sheet Joiner.
Do I need Excel to open the result?
No. pivot-table.xlsx opens in Excel, LibreOffice, Google Sheets, or Numbers. The whole point is producing the summary without an Office install.
Privacy first
Every JAD Excel tool runs entirely in your browser using SheetJS and ExcelJS. Your spreadsheets, formulas, and data never leave your device — verified by zero outbound network requests during processing.