Shape
Material Design 3 — Shape
Overview
Shape is one of M3's most distinctive design tools. Where M2 used flat or lightly rounded corners, M3 makes corner radius a first-class expressive dimension — different corner sizes communicate component identity, hierarchy, and interaction affordance.
Shape in M3 is exclusively concerned with corner rounding (border-radius). Standard rectangular components use uniform corners, though individual corners can be adjusted to create asymmetrical shapes.
M3 Expressive Update (May 2025)
The M3 Expressive update significantly expanded the shape system:
- 35 new abstract shapes added to the Material Shape Library (Figma Design Kit) and Jetpack Compose
- Shape morphing built into Material shapes for animating between shapes in response to interaction
- New corner radius tokens:
| Token | Value |
|---|---|
large-increased | 20dp |
extra-large-increased | 32dp |
extra-extra-large | 48dp |
- Fully-rounded corners are now defined using the
fulltoken (previously expressed as 50% of component size)
Shape Principles
Use shapes and type in harmony. Shapes echo the visual character of the typeface. Round, expansive shapes pair well with geometric or humanist typefaces; square, angular shapes suit more utilitarian or monospaced fonts.
Morph shapes to communicate state. Shape morphing should respond to interaction — selected states, in-progress actions, environmental changes (time, temperature, sound). Think about how shapes react to tapping, swiping, scrolling, releasing, and long-pressing.
Embrace tension. Contrasting shapes (round alongside square) create dynamic, memorable design. M3 Expressive moves away from exclusively rounded shapes — sharp shapes convey precision, energy, and differentiation.
Shape is versatile, not semantic. Avoid assigning a fixed literal meaning to a single shape. A waveform can express loading progress, but progress could equally be shown with rotating shapes or morphing. Reserve meaning for content and interaction, not shape alone.
Use abstract shapes sparingly. Be intentional. When incorporating diverse shapes, consider how they fit the overall composition, whether they resonate with the product's narrative, and what value they add to the user experience.
Shape Scale
M3 defines a named scale of five corner sizes, plus two absolute values:
| Scale Name | Default Value | Typical Use |
|---|---|---|
none | 0px | Square containers, data tables |
extra-small | 4px | Chips, menu items, tooltips |
small | 8px | Outlined text fields, snackbars |
medium | 12px | Cards (small), some dialogs |
large | 16px | Navigation drawers, cards |
extra-large | 28px | FABs, date pickers, large dialogs |
full | 9999px (pill) | Buttons, badges, search bars |
large-increased | 20px | M3 Expressive add-on |
extra-large-increased | 32px | M3 Expressive add-on |
extra-extra-large | 48px | M3 Expressive add-on |
Shape and Component Identity
Shape is one of the ways M3 communicates component type and purpose. The default shape assignments are intentional:
- Pill-shaped (full): Buttons, FABs — conveys action, invitation to interact
- Extra-large (28px): Extended FABs, date picker headers — prominent, expressive containers
- Large (16px): Navigation drawers, bottom sheets — significant surfaces
- Medium (12px): Cards — balanced container presence
- Small (8px): Text fields, snackbars — functional but softened
- Extra-small (4px): Chips, menus — compact utility elements
Token Structure
On the web, shape tokens are CSS custom properties under --md-sys-shape-corner-*:
:root {
--md-sys-shape-corner-none: 0px;
--md-sys-shape-corner-extra-small: 4px;
--md-sys-shape-corner-small: 8px;
--md-sys-shape-corner-medium: 12px;
--md-sys-shape-corner-large: 16px;
--md-sys-shape-corner-extra-large: 28px;
--md-sys-shape-corner-full: 9999px;
/* M3 Expressive add-ons */
--md-sys-shape-corner-large-increased: 20px;
--md-sys-shape-corner-extra-large-increased: 32px;
--md-sys-shape-corner-extra-extra-large: 48px;
}
Component tokens alias these system values:
/* Example: filled button defaults to full (pill) shape */
--md-filled-button-container-shape: var(--md-sys-shape-corner-full);
To make all buttons square, override the component token:
:root {
--md-filled-button-container-shape: 0px;
}
Shape Customization
Shape can be customized at two levels:
System level — change a scale step for all components that use it:
:root {
--md-sys-shape-corner-full: 8px; /* Flattens all pill-shaped elements */
}
Component level — change shape for a single component type without affecting others:
:root {
--md-filled-button-container-shape: 0px;
}
Component-level overrides are more upgrade-safe and are preferred for product customization.
Shape and Brand Expression
M3 treats the shape scale as a product personality dial. Rounded, expressive shapes (extra-large, full) communicate friendliness, modernity, and playfulness. Reduced rounding (small, none) communicates precision, formality, and density.
Common brand adaptations:
- Rounded/friendly: Keep default M3 shapes or increase curvature on secondary surfaces
- Flat/utilitarian: Reduce corner radii across the scale, keep only a small amount (4–8px) on interactive elements
- Strict/corporate: Set most surfaces to
smallornone; reserve rounding only for interactive actions like buttons
Consistency within the scale matters more than any particular value. A product that uses 4px everywhere creates a coherent character; one that uses random values (6px here, 11px there) creates visual noise.
Do's and Don'ts
Do:
- Use the named scale steps — don't invent values outside the scale
- Let component defaults stand where they match your brand — overriding everything is unnecessary
- Use
extra-largeandfullintentionally for high-emphasis or interactive elements - Apply consistent shape logic across component families (don't round buttons but square cards with no rationale)
Don't:
- Override all shapes to 0px globally unless a strictly flat aesthetic is intentional and consistent
- Use asymmetric corner radii on standard components — M3's shape system uses uniform corners
- Confuse shape customization with spacing or size adjustments
Sources
- Shape Overview: https://m3.material.io/styles/shape/overview
- Material Web Theming (shape): https://material-web.dev/theming/material-theming/ (see Shape section)