Rows and columns, typed or pasted
Add rows and columns one at a time, or use Bulk edit to paste a list, one per line. Write a column as Poor | 1 to set its code.
Matrix question · Matrix
Ask people to rate several things on the same scale, one row each. In the builder it’s Grid (single) for one answer per row, or Grid (multi) for checkboxes. On a phone the table becomes a stacked list, and every row gets its own percentages, Mean and Top-2-Box.

Live demo
This is the grid your respondents get. Try each layout, rate the rows, and the heat-map beside it recalculates with yours counted. On a phone the table becomes the stacked list unless you choose another layout.
How would you rate each part of your stay?
Check-in
Room
Cleanliness
Breakfast
Wi-Fi
In action
Every feature
A grid that’s quick to build, works on any screen, keeps Didn’t use out of your scores, and reports every row on its own.
Add rows and columns one at a time, or use Bulk edit to paste a list, one per line. Write a column as Poor | 1 to set its code.
Put labelled sub-headers over sets of rows, such as Arrival and Your room, inside one grid.
Swap the table so the rows run across the top and the points run down. Phones still get the stacked layout.
Shuffle the rows, the columns or both for each respondent. The order holds when they go Back or come back later, and the row order each person saw is in your export.
The Didn’t use column always stays last.
Build the rows from what someone picked, or didn’t pick, in an earlier choice question. If nothing applies, the grid is skipped.
Give any row its own show-if logic, and branch later questions on one row’s answer.
Add a Not applicable column with your own header, such as Didn’t use, or tick Not on scale on a column like Can’t say. Either one sits after a divider, counts in the base, and stays out of the Mean and Top-2-Box.
Each column gets a code no other column uses, even after you delete one and add another, so answers never merge.
On a narrow screen the table becomes a stacked list. Or choose wrapped chips, an accordion, a carousel, a segmented bar or the table itself for one question. For the whole survey, the theme can set the accordion, the carousel or the table.
The switch follows the grid’s own width, not the screen’s, so the builder’s phone preview matches a phone.
A grid with many columns switches to the stacked list below the width it needs, so no column sits off-screen. If you keep the table, it scrolls sideways inside its own box with the rows pinned.
Repeat headers on scroll keeps the column labels in view while a long grid scrolls.
On a single-answer grid each row is one Tab stop, and the arrow keys move along it on every layout, mirrored in right-to-left surveys.
On a checkbox grid every box is a Tab stop and Space ticks it.
On iPhone, answering a row updates it in place, so the page doesn’t jump back to the top as you work down the grid.
Ask for every row, or at least a number of rows. Press Next too soon and the message says how many rows are done and names the ones left, and each of those rows is marked.
A single-answer grid fails the check when it has 4 or more rated rows that all got the same answer. Didn’t use and Not on scale answers don’t count as rated. A failed grid shows as a Straightliner signal on the Fraud page, and by default it takes 2 failed checks to flag a respondent. The check is on by default.
Checkbox grids aren’t checked.
Every answer is checked against the grid’s own rows and columns. An unknown row or column, Didn’t use when the column is off, or None of us with another tick is refused.
Results shows each row as percentages of its base, with a Mean and Top-2-Box. Didn’t use gets its own column, counted in the base, rows nobody answered show at 0, and with weighting (Research Team) the heat-map is weighted too.
Each row of the grid is its own crosstab row choice: one row per point and a Didn’t use row, with Top-2-Box and the Mean underneath and letters for significant differences.
One table with every statement against your banner, on Top-2-Box, Bottom-2-Box or the Mean, then a table per statement.
The report slide draws a Top-2-Box bar for each statement, from the people who rated it, in PDF and PPTX too.
Insert one row’s answer into a later question. The pipe menu lists each row by its label, such as Wi-Fi.
Filter Results to the people who gave one row a particular answer, such as everyone who rated the Wi-Fi Poor or Fair.
When the columns are names or categories, such as brands, each row reports percentages only, with no Mean or Top-2-Box, and exports as nominal in SPSS.
Not part of the matrix question: ranking rows against each other (see Ranking), text boxes or dropdowns in every cell (Textbox Grid and Dropdown Grid are their own question types), and a slider per row (use Slider List).
Checkbox grids
Choose Grid (multi) and each row takes as many ticks as apply. Use it for “who used what” rather than a rating.
_1_1, _1_2 and on: 1 when ticked, 0 when not.Grid (multi) · None of us is exclusive
Who in your party used each of these?
Pool
Gym
Spa
Restaurant
| Q1_1_1 | Q1_1_2 | Q1_1_3 | Q1_1_4 | Q1_2_1 | Q1_2_2 | Q1_2_3 | Q1_2_4 | Q1_3_1 | Q1_3_2 | Q1_3_3 | Q1_3_4 | Q1_4_1 | Q1_4_2 | Q1_4_3 | Q1_4_4 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
| 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
Two guests’ answers in the CSV: one column per row and column, named by the row’s position and the column’s code (1 Me, 2 My partner, 3 Children, 4 None of us).
Build it
In the builder, add a question and pick Grid (single) from the Matrix group, or Grid (multi) for checkboxes. Write the question, such as “How would you rate each part of your stay?”
Type the rows under Row Labels and the scale under Column Headers, or use Bulk edit to paste one per line. For columns, write Poor | 1 to set each code yourself.
Tick Add a “Not applicable” column and type the header people see, such as Didn’t use. For a column like Can’t say, tick Not on scale. Both stay out of the Mean and Top-2-Box.
Tick Randomize rows or Randomize columns. Use Build rows from a previous question to ask only about what someone used, and Show this row if… for a single row.
Keep Display on Table (grid) and Mobile display on Auto for the stacked list on phones, or pick chips, accordion, carousel or segmented bar. Tick Repeat headers on scroll for a long grid.
In Rules, require every row, set Minimum rows required, or make it soft required or optional. Preview at phone width to see the layout your respondents get.



The data you get
Each statement exports as its own column holding the code of the point chosen. Your column labels come along as value labels, and Didn’t use gets a code of its own that never clashes with a point.
| respondent_id | Q1_1 | Q1_2 | Q1_3 | Q1_4 | Q1_5 | Q1_order |
|---|---|---|---|---|---|---|
| 47762a85-0001-4000-8000-000000000001 | 5 | 4 | 4 | 4 | 3 | rows:Breakfast|Cleanliness|Room|Check-in|Wi-Fi |
| 47762a85-0002-4000-8000-000000000002 | 5 | 4 | 4 | 5 | 2 | rows:Breakfast|Check-in|Cleanliness|Wi-Fi|Room |
| 47762a85-0003-4000-8000-000000000003 | 4 | 4 | 5 | 3 | 2 | rows:Check-in|Cleanliness|Room|Wi-Fi|Breakfast |
| 47762a85-0004-4000-8000-000000000004 | 4 | 4 | 3 | 3 | 3 | rows:Check-in|Room|Cleanliness|Wi-Fi|Breakfast |
| 47762a85-0005-4000-8000-000000000005 | 4 | 4 | 3 | 4 | 3 | rows:Room|Check-in|Cleanliness|Wi-Fi|Breakfast |
| 47762a85-0006-4000-8000-000000000006 | 2 | 5 | 5 | 5 | 1 | rows:Breakfast|Cleanliness|Wi-Fi|Check-in|Room |
| 47762a85-0007-4000-8000-000000000007 | 3 | 4 | 5 | 5 | 2 | rows:Wi-Fi|Room|Cleanliness|Check-in|Breakfast |
| 47762a85-0008-4000-8000-000000000008 | 3 | 4 | 5 | NA | 5 | rows:Wi-Fi|Cleanliness|Room|Breakfast|Check-in |
Trimmed to the question’s columns. The columns ending _1 to _5 are Check-in, Room, Cleanliness, Breakfast and Wi-Fi, in the order you wrote them. Points export as 1 to 5 and Didn’t use as NA. Rows were shuffled for each guest, so the _order column records the order each one was shown. Every export also carries the standard respondent columns (status, timing, weight and more).
Columns are named by position, the question’s column name plus _1, _2 and on, so rewording a row never renames its column or breaks your syntax.
In SPSS and the Excel Value Labels sheet every point carries its label, so 4 reads as Very good. CSV and JSON carry the codes only.
A rating grid comes measured as ordinal. A grid of names or categories comes as nominal and gets percentages only, with no Mean.
CSV writes NA. SPSS codes it 97, outside the scale, labelled with your header and declared missing when you ask for it.
With rows shuffled, the _order column records the order each respondent was shown.
Weighted exports carry a weight column, and the SPSS syntax sets WEIGHT BY weight. Weighting is on Research Team.
Charts & analysis
Results shows the whole grid as a heat-map with a Mean and Top-2-Box for each row. Crosstab any statement against another question, compare every statement at once in a tab book, and show a Top-2-Box bar per statement in your deck.



Wi-Fi, by trip typeColumn %, letters at 95% and 99%
Crosstabs · Solo+Letters · Professional+
Pick any statement for the rows: one row per point and a Didn’t use row, with Top-2-Box and the Mean underneath. Didn’t use counts in the base and stays out of both.
CrosstabsThe Mean row is tested with Welch’s t-test, and the point rows and Top-2-Box with a test of proportions, in the same table.
Significance testingA grid summary with every statement against your banner, on Top-2-Box, Bottom-2-Box or the Mean, then a table per statement with its own Didn’t use row.
Weights carry through to the heat-map, crosstabs, tab books, the report slide and exports.
How Surveti compares
| Capability | Surveti | SurveyMonkey | Qualtrics | Typeform | Alchemer |
|---|---|---|---|---|---|
| Matrix question on the free (or entry) plan | yesGrid (single) and Grid (multi) on every plan | unclear12Basic names four other types | yes29Matrix table on the free account | yes38Matrix on Free | no61No free plan |
| Checkbox grid (several answers per row) | yesWith an exclusive None column per row | yes1Multiple responses per row | yes18Allow multiple answers | yes35Multiple selection | yes46Checkbox Grid |
| Phone layout that stacks the rows | yesStacked list by default | unclear1, 2Large matrices may scroll sideways | yes18Accordion or carousel | unclear43Community reports sideways scrolling | yes45, 46, 48One row at a time |
| Author chooses the phone layout | yesSix layouts per question, four in the theme | unclear1No setting documented | yes18Choose among formats | unclear35Mobile not covered | yes45One at a time can be turned off |
| N/A column kept out of averages | yesIn the base, out of the Mean and Top-2 | yes1Only with weights on | yes18, 30Exclude From Analysis | unclear35N/A not covered | partial45Counted when its value is numeric |
| Row and column randomisation | yesBoth, every plan; row order exported | paid1, 16Rows; columns not mentioned | yes18Statements and scale points | no35Can’t randomise a Matrix | yes53Rows and columns, with limits |
| Top-2-box for grid rows | yesResults, crosstabs, tab books, decks | unclear14No top-box feature found | yes27, 34Statistics Table | unclear36Not documented | yes58Per-element setting |
| Crosstab using grid rows | paidEach statement a row · Solo+ | no10Matrix not a crosstab type | paid28, 29Not on the free account | unclear36Not documented | yes59Grid rows as rows |
| Significance testing on grid rows | paidProportions and a means test · Professional+ | paid11Per-row use not explained | partial28Matrix handling not described | unclear36Not documented | partial59No test of means |
| Tab book / banner-table export | paidGrid summary of every statement · Research Team | unclearNot on the pages read | unclearNot on the pages read | unclearNot on the pages read | unclearNot on the pages read |
| Export: one column per row | yesNamed by position (_1, _2 …), every plan | paid8Rows span columns; export is paid | yes18One column per statement | unclear39Matrix layout not described | yes45One column per row |
| Straightlining flag | yesOn by default; single-answer grids, 4+ rated rows | paid6English, US data centre only | yes24, 253+ matrices and 80% of them; off by default | unclear36Nothing documented | yes57Grids with more than 4 rows |
Partial means partly built in or possible only with a documented workaround; paid means built in on paid tiers or licences only; unclear means the vendor’s docs don’t settle it. Google Forms, QuestionPro and SurveySparrow were also reviewed. Google Forms has a multiple choice grid and a checkbox grid, with an option to limit one choice per column. QuestionPro offers an N/A option across a matrix, validation for rows, columns or both, and a check for straight-line answers. SurveySparrow’s matrix grid offers radio button, checkbox, text, dropdown and rating scale cells.
A grid becomes a stacked list on a narrow screen without any setting, judged by the grid’s own width. Pick chips, an accordion, a carousel or a segmented bar instead for one question. For the whole survey, the theme can set the accordion, the carousel or the table.
It counts in the base and stays out of the Mean and Top-2-Box in Results, crosstabs, tab books and the report slide, whatever code it has. In SPSS it gets its own labelled code, declared missing when you ask for it.
Each statement is its own crosstab row, with Top-2-Box, the Mean, and letters from a test of proportions and Welch’s t-test. Crosstabs are on Solo+, letters on Professional+.
Every statement against your banner in one table, on Top-2-Box, Bottom-2-Box or the Mean, with letters. Tab books are on Research Team.
Each statement exports as an ordinal variable with every point labelled, named by position so your syntax keeps working. SPSS export is on Professional+.
On by default, every single-answer grid with 4 or more rated rows is checked on its own. Same answer on every rated row, and the respondent gets a Straightliner signal on the Fraud page.
When to use it
“How would you rate each part of your stay?” Check-in · Room · Cleanliness · Breakfast · Wi-Fi, each on Poor · Fair · Good · Very good · Excellent · Didn’t use
Accessibility
Each answer is announced with its row and column, such as “Wi-Fi: Good”, and whether it’s chosen. On phone layouts each row is a group named by its statement.
On a single-answer grid Tab lands on each row once, and the arrow keys move along it, on every layout and mirrored in right-to-left surveys. On a checkbox grid every box is a Tab stop.
Every answer has a 44px target. On a narrow screen the table becomes full-width rows, so nothing shrinks to fit.
If a row is missed, the message names it and the row itself is marked, so nobody has to hunt for the gap.
Use it in
Template
“How would you rate the following aspects?” Product quality, customer support, value for money and ease of use, from Very poor to Excellent.
Template
“How would you rate each brand on the following attributes?” Quality, value, innovation, customer service and trustworthiness.
Solution
Rate every part of the experience in one question.
Solution
Attribute ratings with tab-book summaries and SPSS-ready data.
A grid of rows and columns: each row is something to rate, and the columns are the answer scale they share. In the Surveti builder it’s called Grid (single) when each row takes one answer, and Grid (multi) when each row takes checkboxes.
When the screen is narrower than the table needs, each row becomes its own card with the points stacked as full-width buttons. You can choose wrapped chips, an accordion, a carousel, a segmented bar or the table instead for one question. For the whole survey, the theme can set the accordion, the carousel or the table.
Tick Add a “Not applicable” column and type your own header, such as Didn’t use. It counts in the base but not in the Mean or Top-2-Box. In the example, 24 of 150 guests didn’t use breakfast, so breakfast’s Top-2-Box of 58% is out of the 126 who rated it. A column you mark Not on scale, like Can’t say, works the same way.
One column per row, named by position, the question’s column name plus _1 to _5, holding the code of the point chosen and NA for Didn’t use. In SPSS (Professional+) each one is an ordinal variable with every point labelled, and Didn’t use is code 97, declared missing when you ask for it.
In Crosstabs (Solo+) pick a row, such as Wi-Fi, and cut it by any banner. On Professional+, letters mark differences in each point, Top-2-Box and the Mean. To see every row at once, a tab book (Research Team) adds a grid summary.
As few as you need, and rarely more than ten. Long grids invite the same answer all the way down. Surveti checks every single-answer grid with 4 or more rated rows for that, on by default, and adds a Straightliner signal on the Fraud page.
Yes, with Grid (multi). Mark a column such as None of us as Exclusive and it clears the rest of the row. Crosstabs show the share of each row ticking each column, and the export has one 0/1 column per row and column.