Summarise & reshape tables
Group and total records, swap columns and rows, or expand a list within a cell. Preview the new table before downloading.
Your data stays in this browser. Nothing is uploaded. Privacy details
What would you like to do?
1 Load your data
Up to 5 MiB. Loading new data replaces the current data and selected columns.
Or paste text
Preview the first 5 data rows
No data loaded.
2 Set up the new table
3 Review and download
Plain text uses tabs between columns and quotes cells containing tabs or line breaks. Spreadsheet protection applies to CSV.
Protection adds an apostrophe to potentially executable cells, including negative numbers. Turn it off for exact cell text.
Table preview shows the first 100 rows. Copies and downloads include every output row.
No output yet.
View formatted output
Preview limited to 30,000 characters. Copy and download include the complete output.
Choose the shape you need
Summarise by category groups exact, case-sensitive values, including blank categories. Choose one or more identifying columns, or none for a single overall result. Count counts all source rows. Sum, average, minimum and maximum ignore blank values; other nonnumeric values block the result and identify the source data row. First value keeps the first cell even when blank.
Turn columns into rows creates one row for each selected column in each source record, keeping unselected fields. Turn rows into columns uses exact values as headings and keeps identifying groups in their first-seen order. Repeated combinations block the result by default; choose an explicit calculation to combine them. Missing combinations are blank, or zero for counts. Blank or colliding pivot headings block output: rename those values first.
Expand multi-value cells splits one column using a literal separator. Empty items are kept unless Skip blank values is selected. Every run starts from the loaded source. Settings changes clear the previous output. Try an example replaces the source with fictional data for the selected task.
Numbers and totals
Numeric input uses a decimal point, with an optional sign and no currency, thousands separators or exponents. Sums, minima and maxima use exact decimal arithmetic, preserving large integers. Averages round to at least 10 decimal places (or the source precision when greater), halfway away from zero; trailing zeroes are removed. A grand total is appended with the first identifying field labelled Grand total. It is a separate final row even if a source category has that name. JSON output keeps cell values as strings.
Privacy and limits
Data, settings and results stay in browser memory. Nothing is uploaded, saved in browser storage or included in URLs. Clear all data cancels processing and clears the source, settings and output. Reloading clears tool data. Copy and download act only when selected. Theme preference is stored separately. See privacy and analytics.
Files and pasted text allow 5 MiB. Source and result tables allow 20,000 data rows, 100 columns, 500,000 cells including headers and 20 million characters. Each numeric value allows 1,000 characters. Expansion stops at the output limits. Preview shows 100 rows; export includes all rows.
Import uses the data file converter and its JSON, worksheet and Excel archive limits. Choose a worksheet or record collection. Text input must be UTF-8; malformed quotes and uneven records block loading. Header names are trimmed and made unique with a warning. Excel uses saved values without recalculating formulas. JSON numbers retain their exact digits; nested objects become columns and arrays become cell text.
Hosted operations run in a local browser worker with a 20-second deadline. Opening the HTML file directly uses the same processing on the page and may pause near the limits. A modern browser with BigInt, workers and file APIs is required. Clipboard access may need HTTPS or permission. Excel support uses the locally bundled Apache 2.0 licensed SheetJS library.