Display a feedback widget.

A feedback widget is an icon-based button group available in three styles, as described in options. It is commonly used in chat and AI apps to allow users to rate responses.

Function signature[source]

st.feedback(options="thumbs", *, key=None, disabled=False, on_change=None, args=None, kwargs=None)

Parameters

options ("thumbs", "faces", or "stars")

The feedback options displayed to the user. options can be one of the following:

  • "thumbs" (default): Streamlit displays a thumb-up and thumb-down button group.
  • "faces": Streamlit displays a row of five buttons with facial expressions depicting increasing satisfaction from left to right.
  • "stars": Streamlit displays a row of star icons, allowing the user to select a rating from one to five stars.

key (str or int)

An optional string or integer to use as the unique key for the widget. If this is omitted, a key will be generated for the widget based on its content. Multiple widgets of the same type may not share the same key.

disabled (bool)

An optional boolean, which disables the feedback widget if set to True. The default is False. This argument can only be supplied by keyword.

on_change (callable)

An optional callback invoked when this feedback widget's value changes.

args (tuple)

An optional tuple of args to pass to the callback.

kwargs (dict)

An optional dict of kwargs to pass to the callback.

Returns

(int or None)

An integer indicating the user's selection, where 0 is the lowest feedback. Higher values indicate more positive feedback. If no option was selected, the widget returns None.

  • For options="thumbs", a return value of 0 indicates thumbs-down, and 1 indicates thumbs-up.
  • For options="faces" and options="stars", return values range from 0 (least satisfied) to 4 (most satisfied).

Examples

Display a feedback widget with stars, and show the selected sentiment:

import streamlit as st

sentiment_mapping = ["one", "two", "three", "four", "five"]
selected = st.feedback("stars")
if selected is not None:
    st.markdown(f"You selected {sentiment_mapping[selected]} star(s).")

Display a feedback widget with thumbs, and show the selected sentiment:

import streamlit as st

sentiment_mapping = [":material/thumb_down:", ":material/thumb_up:"]
selected = st.feedback("thumbs")
if selected is not None:
    st.markdown(f"You selected: {sentiment_mapping[selected]}")
forum

Still have questions?

Our forums are full of helpful information and Streamlit experts.