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 →

Related calculators

← All calculators & guides