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

Choose a file or paste text to begin.

Choose source data

Load data to choose columns.

    Preview the first 5 data rows

    No data loaded.

    2 Set up the new table

    Reshaping settings

    Identifying columns

    Choose categories to group by. Leave all unchecked for a single overall result.

    Totals are calculated from source rows. Averages are weighted by the number of nonblank values, rather than averaging group averages.

    Load data to begin.

    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.

    Preview the new table to create an output.

    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.