Skip to content

Snackbar ​

Snackbars provide brief messages about app processes at the bottom of the screen.

Overview · Specs · Guidelines · Accessibility

Diagram of snackbar indicating the four parts of its anatomy

  1. Container
  2. Icon (optional close affordance)
  3. Action (optional)
  4. Supporting text

Tokens and specs ​

Browse the component elements, attributes, tokens, and their values. Learn more about design tokens

Design tokens

Token table

Machine-readable relationship table

Snackbar tokens · 1 token set · 40 tokens · live token table · DSDB TOKEN_TABLE.346ae12a744b45dd

  • Default context: Theme: Light · Platform: Android · Audience: 3P · Font: Static · Contrast: Default · iOS dark theme elevation: None · iOS weight setting: Default
  • Not configurable here (group default used): Motion scheme: Standard · Language height: Small
  • Other contexts: Theme: Dark · Contrast: Medium contrast, High contrast. "Other contexts" lists values that differ from the default when only that one context changes.
  • Reference chain: aliases from the token to its source value (token → alias → … → value). "—" means the token holds a literal value.

Snackbars · md.comp.snackbar · 40 tokens

For snackbars.

GroupTokenTypeReference chainResolved valueOther contexts
Enabled › Containermd.comp.snackbar.container.colorColormd.sys.color.inverse-surface → md.ref.palette.neutral20#322F35Dark: #E6E0E9 via md.ref.palette.neutral90
Enabled › Containermd.comp.snackbar.container.shadow-colorColormd.sys.color.shadow → md.ref.palette.neutral0#000000—
Enabled › Containermd.comp.snackbar.container.elevationElevationmd.sys.elevation.level36dp—
Enabled › Containermd.comp.snackbar.container.shapeShapemd.sys.shape.corner.extra-smallRounded corners 4dp—
Enabled › Containermd.comp.snackbar.with-single-line.container.heightLength—48dp—
Enabled › Containermd.comp.snackbar.with-two-lines.container.heightLength—68dp—
Enabled › Label textmd.comp.snackbar.action.label-text.colorColormd.sys.color.inverse-primary → md.ref.palette.primary80#D0BCFFDark: #6750A4 via md.ref.palette.primary40
Enabled › Label textmd.comp.snackbar.action.label-text.fontFont namesmd.sys.typescale.label-large.font → md.ref.typeface.plainRoboto—
Enabled › Label textmd.comp.snackbar.action.label-text.line-heightLine heightmd.sys.typescale.label-large.line-height20pt—
Enabled › Label textmd.comp.snackbar.action.label-text.sizeFont sizemd.sys.typescale.label-large.size14pt—
Enabled › Label textmd.comp.snackbar.action.label-text.trackingFont trackingmd.sys.typescale.label-large.tracking0.1pt—
Enabled › Label textmd.comp.snackbar.action.label-text.weightFont weightmd.sys.typescale.label-large.weight → md.ref.typeface.weight-medium500—
Enabled › Label textmd.comp.snackbar.action.label-text.typeTypographycomposite
font names: md.comp.snackbar.action.label-text.font → md.sys.typescale.label-large.font → md.ref.typeface.plain
font weight: md.comp.snackbar.action.label-text.weight → md.sys.typescale.label-large.weight → md.ref.typeface.weight-medium
font size: md.comp.snackbar.action.label-text.size → md.sys.typescale.label-large.size
line height: md.comp.snackbar.action.label-text.line-height → md.sys.typescale.label-large.line-height
font tracking: md.comp.snackbar.action.label-text.tracking → md.sys.typescale.label-large.tracking
Roboto · weight 500 · size 14pt · line height 20pt · tracking 0.1pt—
Enabled › Iconmd.comp.snackbar.icon.colorColormd.sys.color.inverse-on-surface → md.ref.palette.neutral95#F5EFF7Dark: #322F35 via md.ref.palette.neutral20
Medium contrast: #FFFFFF via md.ref.palette.neutral100
High contrast: #FFFFFF via md.ref.palette.neutral100
Enabled › Iconmd.comp.snackbar.icon.sizeLength—24dp—
Enabled › Supporting textmd.comp.snackbar.supporting-text.colorColormd.sys.color.inverse-on-surface → md.ref.palette.neutral95#F5EFF7Dark: #322F35 via md.ref.palette.neutral20
Medium contrast: #FFFFFF via md.ref.palette.neutral100
High contrast: #FFFFFF via md.ref.palette.neutral100
Enabled › Supporting textmd.comp.snackbar.supporting-text.fontFont namesmd.sys.typescale.body-medium.font → md.ref.typeface.plainRoboto—
Enabled › Supporting textmd.comp.snackbar.supporting-text.line-heightLine heightmd.sys.typescale.body-medium.line-height20pt—
Enabled › Supporting textmd.comp.snackbar.supporting-text.sizeFont sizemd.sys.typescale.body-medium.size14pt—
Enabled › Supporting textmd.comp.snackbar.supporting-text.trackingFont trackingmd.sys.typescale.body-medium.tracking0.25pt—
Enabled › Supporting textmd.comp.snackbar.supporting-text.weightFont weightmd.sys.typescale.body-medium.weight → md.ref.typeface.weight-regular400—
Enabled › Supporting textmd.comp.snackbar.supporting-text.typeTypographycomposite
font names: md.comp.snackbar.supporting-text.font → md.sys.typescale.body-medium.font → md.ref.typeface.plain
font weight: md.comp.snackbar.supporting-text.weight → md.sys.typescale.body-medium.weight → md.ref.typeface.weight-regular
font size: md.comp.snackbar.supporting-text.size → md.sys.typescale.body-medium.size
line height: md.comp.snackbar.supporting-text.line-height → md.sys.typescale.body-medium.line-height
font tracking: md.comp.snackbar.supporting-text.tracking → md.sys.typescale.body-medium.tracking
Roboto · weight 400 · size 14pt · line height 20pt · tracking 0.25pt—
Hovered › Label textmd.comp.snackbar.action.hover.label-text.colorColormd.sys.color.inverse-primary → md.ref.palette.primary80#D0BCFFDark: #6750A4 via md.ref.palette.primary40
Hovered › State layermd.comp.snackbar.action.hover.state-layer.colorColormd.sys.color.inverse-primary → md.ref.palette.primary80#D0BCFFDark: #6750A4 via md.ref.palette.primary40
Hovered › State layermd.comp.snackbar.action.hover.state-layer.opacityOpacitymd.sys.state.hover.state-layer-opacity0.08—
Hovered › State layermd.comp.snackbar.icon.hover.state-layer.colorColormd.sys.color.inverse-on-surface → md.ref.palette.neutral95#F5EFF7Dark: #322F35 via md.ref.palette.neutral20
Medium contrast: #FFFFFF via md.ref.palette.neutral100
High contrast: #FFFFFF via md.ref.palette.neutral100
Hovered › State layermd.comp.snackbar.icon.hover.state-layer.opacityOpacitymd.sys.state.hover.state-layer-opacity0.08—
Hovered › Iconmd.comp.snackbar.icon.hover.icon.colorColormd.sys.color.inverse-on-surface → md.ref.palette.neutral95#F5EFF7Dark: #322F35 via md.ref.palette.neutral20
Medium contrast: #FFFFFF via md.ref.palette.neutral100
High contrast: #FFFFFF via md.ref.palette.neutral100
Focused › Label textmd.comp.snackbar.action.focus.label-text.colorColormd.sys.color.inverse-primary → md.ref.palette.primary80#D0BCFFDark: #6750A4 via md.ref.palette.primary40
Focused › State layermd.comp.snackbar.action.focus.state-layer.colorColormd.sys.color.inverse-primary → md.ref.palette.primary80#D0BCFFDark: #6750A4 via md.ref.palette.primary40
Focused › State layermd.comp.snackbar.action.focus.state-layer.opacityOpacitymd.sys.state.focus.state-layer-opacity0.1—
Focused › State layermd.comp.snackbar.icon.focus.state-layer.colorColormd.sys.color.inverse-on-surface → md.ref.palette.neutral95#F5EFF7Dark: #322F35 via md.ref.palette.neutral20
Medium contrast: #FFFFFF via md.ref.palette.neutral100
High contrast: #FFFFFF via md.ref.palette.neutral100
Focused › State layermd.comp.snackbar.icon.focus.state-layer.opacityOpacitymd.sys.state.focus.state-layer-opacity0.1—
Focused › Iconmd.comp.snackbar.icon.focus.icon.colorColormd.sys.color.inverse-on-surface → md.ref.palette.neutral95#F5EFF7Dark: #322F35 via md.ref.palette.neutral20
Medium contrast: #FFFFFF via md.ref.palette.neutral100
High contrast: #FFFFFF via md.ref.palette.neutral100
Pressed (ripple) › Label textmd.comp.snackbar.action.pressed.label-text.colorColormd.sys.color.inverse-primary → md.ref.palette.primary80#D0BCFFDark: #6750A4 via md.ref.palette.primary40
Pressed (ripple) › State layermd.comp.snackbar.action.pressed.state-layer.colorColormd.sys.color.inverse-primary → md.ref.palette.primary80#D0BCFFDark: #6750A4 via md.ref.palette.primary40
Pressed (ripple) › State layermd.comp.snackbar.action.pressed.state-layer.opacityOpacitymd.sys.state.pressed.state-layer-opacity0.1—
Pressed (ripple) › State layermd.comp.snackbar.icon.pressed.state-layer.colorColormd.sys.color.inverse-on-surface → md.ref.palette.neutral95#F5EFF7Dark: #322F35 via md.ref.palette.neutral20
Medium contrast: #FFFFFF via md.ref.palette.neutral100
High contrast: #FFFFFF via md.ref.palette.neutral100
Pressed (ripple) › State layermd.comp.snackbar.icon.pressed.state-layer.opacityOpacitymd.sys.state.pressed.state-layer-opacity0.1—
Pressed (ripple) › Iconmd.comp.snackbar.icon.pressed.icon.colorColormd.sys.color.inverse-on-surface → md.ref.palette.neutral95#F5EFF7Dark: #322F35 via md.ref.palette.neutral20
Medium contrast: #FFFFFF via md.ref.palette.neutral100
High contrast: #FFFFFF via md.ref.palette.neutral100

Color ​

Color values are implemented through design tokens. For design, this means working with color values that correspond with tokens. For implementation, a color value will be a token that references a value. Learn more about design tokens

Diagram of snackbar indicating color and inverse text and labels

Snackbar color roles used for light and dark schemes:

  1. Inverse surface
  2. Inverse on surface
  3. Inverse primary
  4. Inverse on surface

Measurements ​

Diagram of snackbar with action

Snackbar padding and size measurements

Configurations ​

5 snackbar configurations.

  1. Single line
  2. Single line with action
  3. Two lines
  4. Two lines with action
  5. Two lines with longer action

Unofficial offline mirror. Content © Google, licensed under CC BY 4.0.