Survey analysis
How to Crosstab 'Select All That Apply' Questions
To crosstab a multi-select question, treat each option as its own row, count a respondent in every row they selected, and report % of cases(the option's selection rate among respondents in each column). Ordinary chi-square does not apply — test each option separately with two-proportion z-tests.
Reviewed by the crosstabs.com methods team · Last updated
Run this on your own data — free, no signup
Upload a CSV or XLSX. Everything runs in your browser; your file never leaves your device.
Open the workspace →Why ordinary crosstabs break on multi-select data
Survey exports encode “select all that apply” questions in two ways: a column per option (Q5_1, Q5_2, … — the style most survey platforms use) or all answers comma-separated in one cell (Google Forms style). Drop either into a pivot table and you get nonsense: the split columns pivot one option at a time, and the comma-separated cell is treated as a single category like “Email, Phone, Mail”.
A correct multiple-response table needs three things: each option as a row, respondents counted in every row they selected, and percentages computed against the number of respondents (cases) — not the number of answers. A respondent counts as missing only if they answered none of the options.
Do it in one step
Upload your CSV or XLSX to the crosstabs.com workspace and it auto-detects both export styles. Detected questions appear in the sidebar under Multi-select questions — assign one as the row variable and cross it against any banner column. You get % of cases, correct missing handling, weighting support, and per-option significance letters comparing your banner columns. Everything runs in your browser; the file never uploads.
Significance testing done right
Chi-square across the whole question is invalid because rows share respondents. What isvalid: comparing one option's selection rate between banner columns, because the columns are disjoint groups of respondents. crosstabs.com runs Bonferroni-corrected two-proportion z-tests per option and shows the standard column-letter notation — “42% B” means this option is selected significantly more here than in column B.
How to interpret it
Rule of thumb
Report multi-select results as “X% of respondents selected [option]”, never “X% of answers” unless you say so explicitly — and flag that percentages can exceed 100% in total.
Frequently asked questions
- Why do my multi-select percentages sum to more than 100%?
- Because they are percentages of cases: each respondent can select several options, so each option's percentage is computed against the number of respondents, not the number of answers. That is the standard convention for multiple-response tables — a column summing to 180% just means respondents picked 1.8 options on average.
- Can I run a chi-square test on a 'select all that apply' question?
- Not across the whole question. Chi-square assumes every respondent appears in exactly one row, but multi-select respondents appear in several. The defensible approach is per-option testing: compare each option's selection rate between groups with a two-proportion z-test — which is what column-proportions significance letters do.
- My export has the answers comma-separated in one column. Can it be analyzed?
- Yes. crosstabs.com auto-detects comma- and semicolon-separated multi-select columns (the Google Forms style), splits them into options, and builds the multiple-response table. It also detects the split-column style (Q5_1, Q5_2, …) used by most survey platforms.
- How are respondents who skipped the question handled?
- A respondent is excluded only when they answered none of the question's options — being blank on some options just means those weren't selected. This matches how SPSS multiple response sets define missing cases.
References & further reading
Try it on your own data — free, no signup
Upload a CSV or XLSX. Everything runs in your browser; your file never leaves your device.
Open the workspace →