Free · No signup · Runs in your browser

CSV Crosstab

Turn two categorical columns and one measure into a pivoted matrix with row, column, and grand totals — entirely client-side.

01 · How it works

Three steps, then done.

A crosstab (contingency table) summarizes one column against another. Choose the field that becomes your rows, the field that becomes your columns, the number you want aggregated, and how to aggregate it.

1

Load your CSV

Drop in or paste your file. Everything is parsed in the browser — no upload, no server, no copy of your data leaves the page.

2

Choose dimensions and a measure

Set the row dimension and column dimension to the two fields you want to compare, then pick a numeric measure. Leave the measure empty and use Count to tally occurrences instead.

3

Pick an aggregation and export

Select sum, average, or count. The matrix recomputes instantly with a Total column per row and a Total row per column, ready to download as CSV.

02 · Why ours

Why use this crosstab toolcrosstab

A focused cross-tabulation that stays on your machine and outputs spreadsheet-ready CSV.

  • 01

    Fully private

    The CSV is parsed and pivoted entirely in your browser. No backend ever receives your rows, so even sensitive data stays local.

  • 02

    Three aggregations

    Sum, average, or count from the same matrix. Count works even without a numeric measure, so categorical-only data still tabulates.

  • 03

    Totals included

    Every output ships with a per-row Total column and a per-column Total row, plus the grand total in the corner — no manual SUM formulas.

  • 04

    Clean RFC-4180 output

    Fields with commas, quotes, or newlines are properly escaped, so the result opens correctly in Excel, Sheets, and any downstream parser.

"A crosstab answers "how does this break down by that?" in one matrix — and here it never leaves your browser."
csvtodashboard.com
03 · FAQ

crosstab questions.

What is a crosstab?
A crosstab, or contingency table, arranges one column's values as rows and another column's values as columns, filling each cell with an aggregated measure such as a sum, average, or count. It shows how two variables relate at a glance.
Only for sum and average. If you pick Count as the aggregation, the tool tallies how many rows fall into each row/column combination, so a measure column is optional.
Each row's Total column re-aggregates all of that row's cells, each column's Total row re-aggregates that column, and the bottom-right corner is the grand total. Averages are computed from the underlying values, not by averaging cell results.
Blank dimension values are grouped under a (blank) label so no rows are dropped. Non-numeric cells in the measure are ignored for sum and average but still counted by the Count aggregation.
No. The entire crosstab runs in JavaScript on your device. Your CSV is never transmitted, stored, or logged — closing the tab discards it completely.