figma guide

Designing sliders and range inputs in Figma: patterns, states, and handoff

Design single and dual-thumb sliders, stepped ranges, and value labels in Figma with track states, min/max bounds, and Dev Mode specs for forms and filters.

Published
Updated
Jun 14, 2026
Read time
7 min
Level
Beginner

Quick answer

Sliders in Figma express a numeric value along a track—single-thumb for one value, dual-thumb for ranges, and stepped tracks for discrete choices. Build a Slider component with variants for type=single | range, state=default | disabled | focus, and size=sm | md. Pair with forms, search filters, and date range pickers. Document min, max, step, unit, snap behavior, and whether the numeric input is editable in Dev Mode. Start from the Figma guides hub for component patterns.


Who this is for

  • Product designers shipping price filters, settings panels, media controls, and onboarding preference screens.
  • Design system teams replacing inconsistent slider mocks that use different track heights in every file.
  • Engineers implementing accessible range inputs, keyboard nudging, and touch-friendly thumb targets.

Slider types compared

TypeUser adjustsBest forAvoid when
Single continuousOne value on a trackVolume, opacity, brightnessChoosing from 3–5 fixed options
Dual rangeStart + end thumbsPrice filters, date ranges on a scaleSingle-point settings
Stepped / discreteSnaps to ticksStar ratings on a scale, seat rowsSmooth analog control
Slider + inputDrag thumb or type numberPrecise values (px, %, currency)Pure gesture-only mobile flows
Vertical sliderUp/down trackAudio mixers, heat maps (rare)Standard horizontal forms
Segmented trackColored zones (low/med/high)Risk scores, signal strengthNeutral numeric settings

Verdict: use slider + numeric input when precision matters; use pure slider when the value is approximate (volume, satisfaction). For categorical choices with fewer than five options, prefer segmented controls in forms or radio buttons instead.


Component anatomy

PartPurposeSpec tip
TrackFull-width background railHeight 4–6px; full radius
Filled trackPortion from min to thumbBrand or neutral emphasis color
ThumbDraggable handle16–24px circle; min 44px hit area
Second thumbRange end (range mode)Same size as first; z-index on overlap
Tick marksOptional step indicatorsAlign to step intervals
Value labelShows current numberAbove thumb or inline right
Min / max labelsTrack endpoints$0, $500—not always needed
Input fieldEditable value (optional)Reuse form text field sm size
Helper textUnit or constraint”Up to 100 km”
Slider
├── Variant: type=single | range
├── Variant: state=default | disabled | focus
├── Variant: size=sm | md
├── Layer: Track (full width, surface/subtle fill)
│   ├── FilledTrack (width = value %)
│   ├── Tick × N (optional)
│   └── Thumb(s)
├── Layer: ValueLabel (optional, above thumb)
├── Layer: MinMaxLabels (optional)
└── Layer: NumericInput (optional, paired)

Bind track and thumb colors to your semantic color tokens. Use elevation or focus rings for keyboard focus—not color alone.


Thumb and track states

StateTrackThumbNotes
DefaultNeutral rail; filled portion brandResting circlePointer on hover
HoverSameSlightly larger or elevatedDesktop only
DraggingFilled updates liveActive / pressedShow value label
FocusVisible focus ring on thumbWCAG 2.2 targetArrow keys nudge value
DisabledMuted rail; no fill change on dragMuted thumb; no pointeraria-disabled
ErrorOptional red railPair with inline alertOut of allowed range

Reuse interactive components for thumb hover and press. Focus must be visible when tabbing—do not rely on hover alone.


Single vs range behavior

ConcernSingle sliderRange slider
ThumbsOneTwo (min, max)
Filled segmentMin → thumbLow thumb → high thumb
OverlapN/AMin thumb cannot pass max—document swap or block
LabelsOne value$120 – $480 combined or per thumb
Input pairingOne number fieldTwo fields or one combined readout
Filter applyImmediate or on releaseOften waits for Apply on filter bar

Show live preview of filtered results when dragging in e-commerce mocks—use a loading skeleton on the product grid if results refresh async.


Stepped sliders and ticks

Step typeVisualUse case
ContinuousSmooth fillVolume, zoom
Fixed stepSnap every N units5% increments, $10 steps
Labeled ticksText under track0, 25, 50, 75, 100
Icon ticksStars, signal barsSatisfaction, quality

Document step in Dev Mode (step=10, min=0, max=100). If steps are uneven (e.g., log scale), add a table in the component description—engineering cannot infer from pixels alone.


Pairing with other patterns

NeedPatternLink
Price filter sidebarRange slider + chipsE-commerce, marketplaces
Settings panelSlider + label in accordionNotification volume, limits
Form validationSlider + inline errorBudget cap exceeded
Mobile filter sheetSlider in modal sheetNarrow viewports
Table column filterCompact sm slider in headerDense admin UI
OnboardingSlider for team size / usage tierPair with progress stepper

Accessibility checklist

RequirementImplementation
Rolerole="slider" per thumb
Valuearia-valuemin, aria-valuemax, aria-valuenow
LabelVisible label or aria-label="Price maximum"
KeyboardArrow keys ± step; Home/End to min/max
FocusOne tab stop per thumb in range mode
Touch target44×44px minimum hit area
AnnouncementsLive region on value change (optional)
ColorTrack fill not the only state indicator

Run accessibility plugins on thumb contrast against the track and page background.


Prototyping limits

Figma cannot drag sliders with real math. For demos:

  1. Build frames: default, dragging (mid), min, max, disabled, focus.
  2. For range: partial selection, full span, thumbs overlapping edge case.
  3. Wire thumb drag with a simple interaction if needed; otherwise use sticky notes for dynamic fill width.

Organize variants under Patterns / Forms with sections per screen context.


Handoff to engineering

DeliverableWhere it lives
min, max, stepComponent description
Unit suffix%, px, USD—per locale if currency
Decimal precision0 vs 2 decimal places
Range overlap ruleBlock vs swap thumbs
onChange vs onCommitDrag live vs release only
Input syncTyping updates thumb bidirectionally
Vertical vs horizontalorientation prop
Disabled rangese.g., thumb cannot enter “sold out” band
MobileLarger thumb; haptic on step (note only)

Include sliders in your Dev Mode handoff checklist. Publish components in your team library.


Real-world examples

E-commerce price filter

Dual-thumb range $0–$500, step $10, live product count label above track. Apply button commits filter; active range shown as chip on search bar.

Image editor opacity

Single slider 0–100%, numeric input synced, stepped by 1. Compact sm size in right sidebar panel.

SaaS seat limit

Single slider 1–50 seats, stepped by 1, tick every 10. Helper text updates pricing tier at 10 and 25 seats—document tier breakpoints in description.


Common mistakes

MistakeConsequenceFix
Thumb smaller than 44px hit areaMiss taps on mobileInvisible padding around thumb
No min/max in specWrong defaults in codeDocument all bounds
Range thumbs can crossInvalid state in productionBlock or auto-swap—pick one
Slider for 3 optionsHarder than radio buttonsUse radios or segmented control
Value label only on hoverMobile users never see valuePersistent label or input
Log scale drawn linearlyWrong data mappingProvide value table
Disabled track still draggable in prototypeFalse expectationMatch disabled visual to behavior
Currency without localeWrong separatorsNote en-US vs de-DE format

FAQ

Slider or number input only?

Use both when users need precision (budget, dimensions). Use slider only for approximate control (volume, warmth). Always show the current value somewhere.

Show min/max labels on every slider?

Optional. Skip for 0–100% where context is obvious. Required for price and custom scales.

Dual range in a table filter row?

Prefer a filter popover with full-width slider; cramped inline ranges fail on small screens.

Vertical slider in mobile apps?

Rare for forms; horizontal is default. Vertical works for audio faders—document orientation=vertical and taller hit areas.


Bottom line

Design sliders as bounded numeric controls: track, fill, thumb(s), labels, and explicit min/max/step rules—not decorative lines. Document interaction timing, input sync, and range overlap in Dev Mode. Continue with forms, search filters, date pickers, and the tutorials hub.

Share on X

§ Keep reading

Related guides.