Guide
How to Read a Crosstab
Cross-tabulation is the foundation of survey analysis. This guide walks through every element of a crosstab — from cell counts to statistical tests — so you can read any table with confidence.
Try it now — drop your data file
CSV or Excel. Get a fully annotated crosstab in seconds.
Drop your spreadsheet here
CSV or Excel · up to 50 MB
What is a cross-tabulation?
A cross-tabulation (or crosstab) is a two-dimensional table that shows how two categorical variables relate to each other. Each cell contains the count — and usually the percentage — of respondents who fall into both categories simultaneously. If you want to know how product preference breaks down by gender, or how health outcomes vary by treatment group, a crosstab is where you start.
Crosstabs are the workhorse of market research, academic surveys, clinical studies, and policy analysis. They are simple to produce and universally understood, yet they pack in a great deal of information: counts, percentages, statistical tests, and effect sizes all in one view.
Anatomy of a crosstab
Row variable
The variable displayed along the left-hand side. Conventionally the dependent variable (outcome) or the one you're profiling by.
Column variable (banner)
The variable displayed across the top — usually the independent variable or grouping factor (e.g., age group, region, segment).
Cell count
The number of respondents in that row-column combination. The raw count is the foundation of all other values.
Column percentage
Cell count divided by the column total. This is what you almost always want when comparing groups — it tells you what proportion of each group gave a particular answer.
Row percentage
Cell count divided by the row total. Useful when the row variable is the grouping factor, or when you want to show how a total breaks down by column.
Total (marginal)
Row totals and column totals show the distribution of each variable independently, without regard to the other variable.
Row vs column percentages — which to use?
The most common mistake in crosstab analysis is reading the wrong percentage. The rule of thumb: percentages should run in the direction of the grouping variable. If age is the column variable (your groups), use column percentages. That way you compare “among 18–24 year-olds, 45% prefer X” versus “among 55+ year-olds, 22% prefer X.”
Row percentages make sense when the row is the grouping variable, or when you want to describe the composition of a total. Never present both without making it crystal clear which you're showing — and never compare row percentages against column percentages in the same sentence.
The statistics in a crosstab
Chi-square (χ²)
Tests whether the distribution of responses differs significantly across groups. Gives a p-value. Doesn't tell you where the difference is or how large it is.
Chi-square calculator →Fisher's exact test
The preferred test when cell counts are small (expected count < 5). Gives an exact p-value directly from the hypergeometric distribution.
Fisher's exact test calculator →Cramér's V
Effect size — how strong is the association? Ranges 0 to 1. Always report alongside the p-value so readers know if a significant result is also meaningful.
Cramér's V calculator →Odds ratio
For 2×2 tables, the odds ratio with its 95% confidence interval quantifies the direction and magnitude of the association between exposure and outcome.
Odds ratio calculator →Adjusted standardised residuals
The chi-square test tells you the overall table is significant, but not which cells are driving the result. Adjusted standardised residuals (ASRs) answer that question. Each cell gets a residual that roughly follows a standard normal distribution: values beyond ±1.96 indicate that the cell is significantly over- or under-represented at α = 0.05.
Crosstabs highlights significant cells automatically. A positive ASR means more people fell into that cell than you'd expect by chance; a negative ASR means fewer. This is the fastest way to identify where in the table the story lives.
Key formulas at a glance
Column %
cell count / column total × 100
Expected frequency
E = (row total × column total) / grand total
Chi-square
χ² = ∑ (O − E)² / E
Cramér's V
V = √( χ² / (n × (min(r,c) − 1)) )