Skip to content

Badge

Badge is a small marker for a count, a status word or presence, attached to the thing it describes.

On this page
  1. Preview
  2. Types
  3. States
  4. Status
  5. Overlay
  6. Properties
  7. Tokens
  8. iOS and Material 3
  9. Which type to use

Preview

A compact marker that attaches to something else. Pill carries a label, Circle a count, Dot presence.

Badge, Type Pill, Circle and Dot34 x 24, 20 x 20, 6 x 6, radius full
1212

Pill is 24 high with a Semi Bold label, and a Dot property puts a 6 point leading dot in front of the label, which turns the Pill into a status word. A Color badge carries the dropShadow/xs effect and a Soft badge carries none.

Source: the Badge page of the Appetite UI Figma file, read on October 2, 2026.

Which types does Badge have?

Badge has three types, all at radius full. Pill hugs its label, Circle is pinned square at 20 and Dot drops the label for a 6 mark.

Pill, then Circle, then Dot, a row each34 x 24, 20 x 20, 6 x 6, label 12/16 Semi Bold at padding 4 and 10
12121212
12121212

Pill is 24 high with padding 4 and 10 and a gap of 6, so its width is the label plus 20: 34 for a two digit count. Dot is 6 by 6 and has no text.

Circle is a 20 by 20 box at padding 2 and holds two digits without clipping. A third digit does not fit, so above 99 switch to a Pill and print 99+.

The label is Inter Semi Bold 12 on a 16 line at 0.1 tracking, the text style xs/emphasized.

Which states does Badge have?

Badge has ten states, each mapped to a token family, with Neutral on the faded family. Color fills with base-500 under a white label, and Soft fills with lighter-50, an alpha tint in dark, under a dark-950 label.

Neutral, Information, Error, Warning, Away, Success, Feature, Verified, Highlighted, StableColor, Soft and Dot in every cell
1212
1212
1212
1212
1212
1212
1212
1212
1212
1212

Cells read in the order named above, five to a row, each with a Color pill, a Soft pill and a Dot.

Neutral reads the faded family: a Neutral Color pill is state/faded/base-500, and a Neutral Soft pill is state/faded/lighter-50 under a state/faded/dark-950 label. The Neutral Dot leaves the family, bg/strong-950 in Color and bg/soft-100 in Soft.

Every other family paints Type Dot in Soft with light-200, because lighter-50 disappears at 6.

In dark, lighter-50 and light-200 are alpha tints of the hue at 16 and 24 percent, so a Soft badge sits translucent over whatever it is pinned to.

How do I show a status with Badge?

Use Type Pill and switch Dot on: the dot carries the state color and the label says the word. Soft is the quiet version, Color the loud one.

Pill with Dot on, Soft and ColorPill, Soft, Dot on, height 24
PaidPendingOverdueIn reviewDraft
PaidPendingOverdueIn reviewDraft

A Pill with Dot shows a status word, a Pill or Circle without it shows a count, and Dot alone marks presence. The Label property takes the word, and the pill hugs it.

Keep the word to one or two.

What is Overlay for?

A label for photography: a place, a duration, a photo count. Overlay carries information, never a status.

Badge / Overlay, Size sm and md, Icon off and on28 and 36 tall, scrim at 42 percent, blur 16
Lake InariLake Inari4 h 10 min4 h 10 minAll trails

Overlay is its own set, Badge / Overlay, with Size sm and md, an Icon variant, a Label property and a Trailing boolean for a chevron. Sm is 28 high at padding 6 and 10 with icons at 14, md is 36 high at padding 8 and 14 with icons at 16.

The fill is bg/scrim as a paint at 42 percent over a 16 background blur (backdropBlur/md), with a 1 point glass/border stroke. The label and both icons are static white in light and dark, so the badge reads on any photo.

Properties

Three variant axes and two properties on the Badge set. The Overlay set has its own two axes and three properties.

Properties of Badge, property, type, default
PropertyTypeDefault
StateNeutral, Information, Error, Warning, Away, Success, Feature, Verified, Highlighted, StableNeutral
TypePill, Circle, DotPill
StyleSoft, ColorSoft
LabelText, Pill and Circle only12
DotBoolean, Pill onlyfalse
Properties of Badge / Overlay, property, type, default
PropertyTypeDefault
Sizesm, mdsm
IconTrue, FalseFalse
LabelTextLabel
Icon SwapInstance swapclock
TrailingBooleanfalse
Trailing SwapInstance swapchevron-down

A Dot type has no text node, so the Label does nothing there.

Badge ships 60 variants: 10 states by 3 types by 2 styles, with no holes. Overlay adds four more on its own set.

Tokens

Each state reads its roles from its own family, and Success stands in for the other eight. Neutral and Overlay follow below.

Tokens, token, light, dark, applied to
TokenLightDarkApplied to
state/success/base-500#22C55E#16A34AColor fill, and the Soft leading dot
text/on-color/strong#FFFFFF#FFFFFFColor label and leading dot
state/success/lighter-50#F0FDF4#22C55E at 16%Soft fill of Pill and Circle
state/success/dark-950#09361B#86EFACSoft label
state/success/light-200#BBF7D0#22C55E at 24%Soft fill of Type Dot
state/faded/base-500#8E8E93#636366Neutral Color fill
state/faded/lighter-50#F4F5F5#6A7282 at 16%Neutral Soft fill
state/faded/dark-950#0E0E0F#C7C7CCNeutral Soft label
bg/strong-950#0E0E0F#FFFFFFNeutral Type Dot in Color
bg/soft-100#E9E9EA#48484ANeutral Type Dot in Soft
bg/scrim#000000 at 40%#000000 at 48%Overlay fill, as a paint at 42%
glass/border#FFFFFF at 50%#FFFFFF at 12%Overlay stroke
static/static-white-0#FFFFFF#FFFFFFOverlay label and icons

Radius is dimensions/radius/full on every type, and the Color style adds the dropShadow/xs effect style. Swap success for any of the other eight families and the roles hold.

How does Badge differ on iOS and Material 3?

Both platforms draw a badge as a count on a tab item or an icon. Appetite UI Badge adds a status pill with a dot and an Overlay for photos, and the file draws no iOS or Material 3 Badge to compare.

Badge against its iOS and Material 3 counterparts, component, iOS, Material 3, difference
Appetite UIiOS counterpartMaterial 3 counterpartWhat differs
Badge, Circle and PillThe badge on a tab item or a list row, set with the SwiftUI badge modifier or the UIKit badgeValue of a tab itemThe Material 3 Badge, a small dot or a large badge with a numberAppetite UI draws a Circle at 20 by 20 and a Pill at 24 high on every platform.
Badge, Pill with DotNone. iOS has no status pill.None. Material 3 marks status with a Chip or text.Appetite UI adds a 6 point leading dot and a Soft style so a status word reads without a filled block.
Badge / OverlayNoneNoneA scrim label for photography. Neither platform names one.

A badge is not a control, so it has no touch target of its own. The control it sits on keeps the minimum of 44 pt on iOS and 48 dp on Material 3, set by platform/min-touch-target in the Platform collection.

Which Badge type should I use?

Use a dot for presence, a circle for a count and a pill with a dot for a status word.

Do

Pick the type by what you have to say. A dot means something is there, a circle how many, a pill with a dot what it is.

3Overdue

Don't

Do not run a sentence through a badge, or stack three of them. At 24 high it marks something else and is not a label of its own.

Sync completeNewBeta

Pin a badge to the thing it describes. If what you have to say is a sentence, use a Chip or an Alert.

Never let color carry the meaning alone: the label or the control name must say it too.

For text at 12, prefer Soft. White on a Color fill reaches 4.5 to 1 only for Information (5.3) and Feature (4.8) in light, while every Soft pair measures at least 8.6 in light and 6.8 in dark.

Contrast computed on October 2, 2026 from the resolved token values, with a Soft tint taken over bg/white-0.