Display a metric in big bold font, with an optional indicator of how the metric changed.

Tip: If you want to display a large number, it may be a good idea to shorten it using packages like millify or numerize. E.g. 1234 can be displayed as 1.2k using st.metric("Short number", millify(1234)).

Function signature

st.metric(label, value, delta=None, delta_color="normal")


label (str)

The header or Title for the metric

value (int, float, str, or None)

Value of the metric. None is rendered as a long dash.

delta (int, float, str, or None)

Indicator of how the metric changed, rendered with an arrow below the metric. If delta is negative (int/float) or starts with a minus sign (str), the arrow points down and the text is red; else the arrow points up and the text is green. If None (default), no delta indicator is shown.

delta_color (str)

If "normal" (default), the delta indicator is shown as described above. If "inverse", it is red when positive and green when negative. This is useful when a negative change is considered good, e.g. if cost decreased. If "off", delta is shown in gray regardless of its value.


st.metric(label="Temperature", value="70 °F", delta="1.2 °F")
(view standalone Streamlit app)

st.metric looks especially nice in combination with st.columns:

col1, col2, col3 = st.columns(3)
col1.metric("Temperature", "70 °F", "1.2 °F")
col2.metric("Wind", "9 mph", "-8%")
col3.metric("Humidity", "86%", "4%")
(view standalone Streamlit app)

The delta indicator color can also be inverted or turned off:

st.metric(label="Gas price", value=4, delta=-0.5,

st.metric(label="Active developers", value=123, delta=123,
(view standalone Streamlit app)

Was this page helpful?

editSuggest edits

Still have questions?

Our forums are full of helpful information and Streamlit experts.