Documentation

Grid Rating Question

When and Why to Use

Use this to capture numeric or labeled ratings across multiple items in a structured format. It's useful for:

  • Performance, satisfaction, or quality ratings
  • Comparing several attributes on a common scale
  • Collecting fine-grained opinion data

Supports sliders, buttons, and star ratings with configurable point labels.

Chat Style
  • Each row is presented individually with a rating interface (slider, star, or button)
  • User can scroll vertically through rows
  • Labels and anchors are shown depending on the labels config
Button styleSlider styleStar style with an image
Button Markdown Many OptionsSlider Plain TextStar Plain Text Images
Traditional Experience
  • Grid layout with rows as items and ratings as columns
  • Ratings are input inline per row
  • Star and slider styles are fully supported
Button style, mobile optimizedStar style with imagesSlider style
Grid Rating Question Figure 01Grid Rating Question Figure 02Grid Rating Question Figure 03
Configuration Options
OptionTypeRequiredDefaultDescription
questionstringyes-The prompt shown to the user
rowsList[str | MediaItem]yes-Rows to show in the grid
row_namestringyes-Used in reporting structure
imageMediaItemno-Top-level image shown above the question
number_of_pointsintno5Number of rating points
first_pointintno1 or first labelFirst point on the scale
labelsDict[int, str]no-Custom labels for scale points
stylestringnosliderOne of "slider", "button", or "star"
randomizeboolnoFalseWhether to randomize row order
recodesDict[str, str]no-Optional recoding of rating values
dont_know_optionstrno""Optional "Don't know" fallback
skip_emptyboolnoFalseSkip question if no rows provided
defaultDict[str, int]norandomTest data defaults per row
custom_validatorCallable[[Dict[str, int]], str | None]no-Function that returns a custom error message
image_label_fieldstrno-Field used for row image labels
show_image_labelboolnoTrueShow/hide row image labels
image_sizeTuple[int, int]no-Size to render row images
number_secondsintno0Seconds to wait before allowing the respondent to continue
tagss.tag()no-For reporting and text substitution
idstrno-Optional stable identifier for this question
Example Code

Basic usage:

s.grid_rating_question( "Please rate the following aspects of the product", rows=["Quality", "Price", "Service", "Delivery"], row_name="Product Aspect", number_of_points=5 )

With custom labels and recodes:

s.grid_rating_question( "How would you rate these aspects?", rows=["Speed", "Design"], row_name="Attribute", number_of_points=5, labels={ 1: "Very Poor", 3: "Neutral", 5: "Excellent" }, recodes={ "1": "Low", "2": "Low", "3": "Mid", "4": "High", "5": "High" } )

With star style and default values:

s.grid_rating_question( "Please rate your satisfaction with each brand", rows=["Brand A", "Brand B"], row_name="Brand", style="star", number_of_points=5, default={"Brand A": 4, "Brand B": 5} )
Notes
  • style="slider" shows an interactive scale; use button for tap options or star for visual flair
  • labels can help orient respondents, especially on non-obvious scales
  • custom_validator can enforce variation or prevent straight-lining