CSV Pivot Table

Turn a CSV into a pivot table: rows × columns with an aggregated value in each cell. Runs entirely in your browser, no upload.

Pivot table (CSV)

CSV pivot table

Summarize a CSV as a pivot table (cross-tab). Pick the row column(s), the column field whose distinct values spread across the top, and the value column to aggregate in each cell. It runs in your browser; nothing is uploaded.

Options

Example

region, product, sales pivoted with rows=region, columns=product, values=sales, agg=sum → one row per region, one column per product, totals in the cells.

FAQ

Is my data uploaded?

No — it's processed locally with WebAssembly.

Can I group by more than one row column?

Yes. Give the row field a comma-separated list — column names or 1-based indices, e.g. region,product or 1,3. Each distinct combination of those values becomes one output row.

My CSV uses semicolons or tabs — will it work?

Yes. Set the delimiter option to the actual separator: a single character, or one of the words comma, tab, semicolon, pipe. The default is a comma, and the first row must always be a header.

What order are the pivot rows and columns in, and what goes in empty cells?

Both row keys and pivot columns appear in first-seen order from your data — they are not sorted alphabetically. A cell with no matching source rows is left blank rather than showing 0, so "no data" stays distinguishable from "sums to zero".

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool csv-pivot "region,product,sales
N,A,10
N,B,5
S,A,7" 'rows=region' 'columns=product' 'values=sales'

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/csv-pivot/?data=region%2Cproduct%2Csales%0AN%2CA%2C10%0AN%2CB%2C5%0AS%2CA%2C7&rows=region&columns=product&values=sales&agg=sum&delimiter=%2C

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.