Badge

Small counts and statuses pinned to other elements.

v1.0.0·Updated Jul 8, 2026 · 10:45
Live Demo — Fully Interactive
Semantic variants
NEUTRALBRANDSUCCESSERRORINFOWARNING
Solid, outline & with a dot
LIVEOUTLINEACTIVEDRAFTDOWN
Sizes — S · M · L
SMALLMEDIUMLARGE
Configuration
Variant
Shape
Size
Text
ACTIVE
<Badge variant="success" dot>Active</Badge>
Behavior — The Engineering Contract
PropTypeNotes
variantneutral·brand·success·error·info·warning·solid·outlineSemantic role and colour
sizeS · M · LPill scale; M is the default
dotbooleanLeading status dot in currentColor
count / maxnumber / numberNumeric badge; hides at 0, caps at max+
anchorbooleanPositions the count top-right of children

Badges are read-only. They label or count; they are never a click target — wrap them in a Button or Link if action is needed.

Anatomy
ACTIVE
1DotOptional status dot in the text colour.
2LabelMono, uppercase, one short word.
3ContainerPill: tinted fill + hairline border per variant.
Do's and Don'ts
✓ Do
PAID

One short word, uppercase. The status reads in a glance.

✕ Don't
Payment received successfully

Don't put a sentence in a badge. Long copy belongs in a Callout.

✓ Do
9

Anchor a count to the thing it counts; hide it at zero.

✕ Don't
NEWHOTSALE

Don't stack many coloured badges. Competing accents lose all meaning.

In context: Examples
A · Table cell
Invoice 4821PAIDInvoice 4822DUEInvoice 4823LATE

Status per row, right-aligned, one colour system across the table.

B · Nav count
Inbox12

Unread counts beside a nav label, capped and hidden at zero.

C · On an avatar
AL

A bare dot shows presence without a number.

Measurements & Tokens
TokenValueRole
--bdg-pad4px 8pxLabel badge padding
--bdg-font0.62rem mono, .06emUppercase label
--bdg-success#1FA35CTint fill + border + text
--bdg-error#EB4A4FTint fill + border + text
--bdg-count18px · #FF7A00Warm circle, white number
--bdg-anchor-ring2px page bgSeparates count from its host
Code
<span class="o-badge o-badge--success has-dot">ACTIVE</span>
<span class="o-badge o-badge--count">5</span>

<span class="o-badge-anchor">
  <BellIcon />
  <span class="o-badge o-badge--count">5</span>
</span>