# Label
Short captions and status chips for a plugin screen. Five sizes plus style variants (filled, outline, underline, inverted) and semantic variants such as label--success and label--error.
### Size and Style Variants
Labels come in several style variants. Each one combines with any size modifier. To compare these sizes with every other element, see [Element Sizes](/framework/docs/3.4/element_sizes) .
Small
Base
Large
XLarge
XXLarge
Default
Label
Label
Label
Label
Label
Outline
Label
Label
Label
Label
Label
Underline
Label
Label
Label
Label
Label
Gray
Label
Label
Label
Label
Label
Filled
Label
Label
Label
Label
Label
LabelStyle Variants
```
Default Label
Outline Label
Underline Label
Gray Label
Filled
Primary
Success
Error
Inverted (alias)
Large Outline Label
XLarge Filled Label
```
#### Semantic variants
Use `label--primary`, `label--success`, `label--error`, `label--warning` for intent-based colors. `label--filled` uses black (darkest), and warning uses a yellow background. See [Colors](/framework/docs/3.4/colors) for the semantic mapping.
Each role's text is black or white, whichever reads better on the color the screen paints. 1-bit screens keep white text on primary and error, and black on success and warning.
FilledPrimarySuccessErrorWarning
LabelSemantic Colors
### Text Overflow Behavior
Labels can handle longer text content through natural wrapping or text clamping. Understanding how labels behave with overflow content helps ensure your interface remains readable and visually balanced.
#### Multi-line Wrapping
By default, labels will wrap to multiple lines when content exceeds the available width, maintaining readability for longer text.
Small
Base
Large
Default
This longer label will wrap to multiple lines when it exceeds the width
This longer label will wrap to multiple lines when it exceeds the width
This longer label will wrap to multiple lines when it exceeds the width
Underline
This longer label will wrap to multiple lines when it exceeds the width
This longer label will wrap to multiple lines when it exceeds the width
This longer label will wrap to multiple lines when it exceeds the width
Filled
This longer label will wrap to multiple lines when it exceeds the width
This longer label will wrap to multiple lines when it exceeds the width
This longer label will wrap to multiple lines when it exceeds the width
LabelMulti-line
```
This longer label will wrap to multiple lines when it exceeds the width
```
#### Text Clamping
Use the framework's `data-clamp` attribute to limit labels to a specific number of lines with ellipsis overflow.
Small
Base
Large
1-line
This is a very long label text that would normally wrap to many lines but demonstrates how clamping behavior works with different variants and line limits to show ellipsis overflow
This is a very long label text that would normally wrap to many lines but demonstrates how clamping behavior works with different variants and line limits to show ellipsis overflow
This is a very long label text that would normally wrap to many lines but demonstrates how clamping behavior works with different variants and line limits to show ellipsis overflow
2-line
This is a very long label text that would normally wrap to many lines but demonstrates how clamping behavior works with different variants and line limits to show ellipsis overflow
This is a very long label text that would normally wrap to many lines but demonstrates how clamping behavior works with different variants and line limits to show ellipsis overflow
This is a very long label text that would normally wrap to many lines but demonstrates how clamping behavior works with different variants and line limits to show ellipsis overflow
Underline 1
This is a very long label text that would normally wrap to many lines but demonstrates how clamping behavior works with different variants and line limits to show ellipsis overflow
This is a very long label text that would normally wrap to many lines but demonstrates how clamping behavior works with different variants and line limits to show ellipsis overflow
This is a very long label text that would normally wrap to many lines but demonstrates how clamping behavior works with different variants and line limits to show ellipsis overflow
Underline 2
This is a very long label text that would normally wrap to many lines but demonstrates how clamping behavior works with different variants and line limits to show ellipsis overflow
This is a very long label text that would normally wrap to many lines but demonstrates how clamping behavior works with different variants and line limits to show ellipsis overflow
This is a very long label text that would normally wrap to many lines but demonstrates how clamping behavior works with different variants and line limits to show ellipsis overflow
LabelClamped
```
This text will be clamped to one line
This text will be clamped to exactly two lines with ellipsis
```
### Responsive Features
Label components support all three responsive systems: size-based, orientation-based, and bit-depth variants. This enables precise control over label appearance across different device configurations.
#### Breakpoint Prefixes
Use breakpoint prefixes like `sm:`, `md:`, `lg:` to apply different sizes and styles per device size class.
Responsive LabelSmall by default, xlarge on lg screens
LabelResponsive
```
Responsive Label
Small by default, xlarge on lg screens
Small by default, base on medium+ screens
Progressive Label Sizing
```
#### Orientation and Size+Orientation
Label sizes can adapt to orientation with `portrait:` and can be combined with size breakpoints (e.g., `md:portrait:`).
Orientation VariantLarge by default, small in portrait.
LabelOrientation
```
Orientation Variant
Large by default, small in portrait.
```
#### Bit-Depth Responsive
Use bit-depth prefixes like `1bit:`, `2bit:`, and `4bit:` to optimize label appearance for different display color capabilities.
Display OptimizedFilled (1bit) → Outline (2bit) → Underline (4bit)
Selective StylingOutline (1bit) → Gray (4bit)
LabelBit-Depth Responsive
```
Display Optimized
Selective Styling
```
#### Combined Responsive Features
Combine multiple responsive systems for highly targeted label styling. Use size, orientation, and bit-depth modifiers together following the pattern: `size:orientation:bit-depth:utility`.
Advanced TargetingComplex responsive combinations
Multi-ConditionMultiple responsive conditions
LabelCombined Responsive
```
Advanced Targeting
Multi-Condition
```
### Backward Compatibility
The gray-out label variant has been renamed from `label--gray-out` to `label--gray`. The legacy class name still works and maps to the same bit-depth responsive styling. Prefer the new name going forward.
The inverted label has been renamed to `label--filled` (black background). Use `label--primary`, `label--success`, etc. for semantic colors. `label--inverted` remains as an alias for `label--filled`.
```
Gray label (deprecated)
Inverted (alias)
Gray label (preferred)
Filled label (preferred)
```
### Related Tokens
These tokens are automatically mapped to this page by token prefix.
| Token | 1-bit | 2-bit | Density 2x | 4-bit and up |
| --- | --- | --- | --- | --- |
| Base |
| `--label-font-family` | "NicoClean" | "NicoClean" | #{meta.inspect($family)} | - |
| `--label-font-size` | calc(16px \* var(--text-ui-scale)) | calc(16px \* var(--text-ui-scale)) | calc(16px \* var(--text-ui-scale)) | - |
| `--label-font-smoothing` | none | none | auto | - |
| `--label-font-weight` | 400 | 400 | clamp(100, calc(500 + var(--framework-font-weight-shift, 0)), 900) | - |
| `--label-line-height` | 1.25 | 1.25 | 1.25 | - |
| Small |
| `--label-small-font-family` | "NicoPups" | "NicoPups" | #{meta.inspect($family)} | - |
| `--label-small-font-size` | calc(16px \* var(--text-ui-scale)) | calc(16px \* var(--text-ui-scale)) | calc(13px \* var(--text-ui-scale)) | - |
| `--label-small-font-smoothing` | none | none | auto | - |
| `--label-small-font-weight` | 400 | 400 | clamp(100, calc(500 + var(--framework-font-weight-shift, 0)), 900) | - |
| `--label-small-line-height` | 1 | 1 | 1 | - |
| Large |
| `--label-large-font-family` | "Inter Variable", Inter | - | #{meta.inspect($family)} | - |
| `--label-large-font-size` | calc(21px \* var(--text-ui-scale)) | - | calc(21px \* var(--text-ui-scale)) | - |
| `--label-large-font-smoothing` | auto | - | auto | - |
| `--label-large-font-weight` | 500 | - | clamp(100, calc(500 + var(--framework-font-weight-shift, 0)), 900) | - |
| `--label-large-line-height` | 1.2 | - | 1.2 | - |
| Xlarge |
| `--label-xlarge-font-family` | "Inter Variable", Inter | - | #{meta.inspect($family)} | - |
| `--label-xlarge-font-size` | calc(26px \* var(--text-ui-scale)) | - | calc(26px \* var(--text-ui-scale)) | - |
| `--label-xlarge-font-smoothing` | auto | - | auto | - |
| `--label-xlarge-font-weight` | 475 | - | clamp(100, calc(475 + var(--framework-font-weight-shift, 0)), 900) | - |
| `--label-xlarge-line-height` | 1.2 | - | 1.2 | - |
| Xxlarge |
| `--label-xxlarge-font-family` | "Inter Variable", Inter | - | #{meta.inspect($family)} | - |
| `--label-xxlarge-font-size` | calc(30px \* var(--text-ui-scale)) | - | calc(30px \* var(--text-ui-scale)) | - |
| `--label-xxlarge-font-smoothing` | auto | - | auto | - |
| `--label-xxlarge-font-weight` | 450 | - | clamp(100, calc(450 + var(--framework-font-weight-shift, 0)), 900) | - |
| `--label-xxlarge-line-height` | 1.2 | - | 1.2 | - |
### Related APIs
#### Theming the label
A theme can re-point the label's paint through its named slots (`label-gray`, `label-underline`) without touching geometry. Slots take palette token references, so the surface still resolves through the device mode at render time. See [Theme Slots](/framework/docs/3.4/theme_slots) for every slot and mixin.
```
@include theme-slots.border-token-slot("label-underline", "yellow-30");
```
Previous [
## Value
Display data values with consistent formatting
](/framework/docs/3.4/value)
Next [
## Description
Format descriptive text with standardized styles
](/framework/docs/3.4/description)