One Value or a Range
One element handles both: a single value, or a range whose two thumbs never collide.
NWD Slider (Single/Range) is the slider Bubble was always missing. Built as a native-like input, it picks a single value or a range with two thumbs, horizontal or vertical, with steps, value labels, and tick marks together in one polished component. Fully customizable through 20+ properties, giving you complete control over every visual and behavioral detail.
No data collected This plugin does not collect user data.
One element handles both: a single value, or a range whose two thumbs never collide.
The same slider works upright or across, and the scale and label follow the orientation.
Any range and any precision you need, with values that always land exactly on your step.
Every part of the slider is yours to style, with enough control to match an existing design system.
Fully operable from the keyboard and announced to screen readers, with motion preferences respected.
Everything the input knows is available to your workflows, and every change is an event you can react to.
In detail
Place NWD Slider wherever the value should be picked. It behaves like a native input: size it and position it with Bubble's own layout.
In SLIDER > # General, set Mode. Single shows one thumb and publishes one value; range shows two and publishes a start and an end.
Minimum distance only applies in range mode. It is the smallest gap the two thumbs may have, in the slider's own units, and it keeps them from landing on the same value.
Orientation runs the track horizontally or vertically. In vertical the minimum sits at the bottom, the scale goes to the right of the track and the value label to its left.
A vertical slider needs an explicit height on the element. Fitting the height to content collapses it, because the element has no text of its own for Bubble to measure.
Minimum, Maximum and Step define what the user can pick. A decimal step such as 0.5 allows decimal values, and the number of decimals in the step is the number of decimals shown in every label.
In # Labels and ticks, Value label chooses when the value appears next to the thumb: never, while dragging, or always. Value prefix and Value suffix wrap it, so it reads as $1,200 or 75 kg instead of a bare number.
Still in # Labels and ticks, Tick marks is the number of intervals drawn on the track, not the number of marks: 4 draws 5 marks counting both ends. Scale labels then chooses which numbers appear along it.
Scale labels is one choice and not two switches: either the minimum and the maximum, or a number under every tick, never both. The first and last tick always fall on the minimum and the maximum, so showing both would print the same two numbers in the same place.
The scale takes room of its own: roughly 20px of height below the track, or of width beside it when the slider is vertical. Leave the element space for it, or it gets cut off at the edge.
Use the exposed states to drive the rest of the page: value (single) for the single value, value (range start) and value (range end) for the two ends of a range, and the value changed event to react when the user lets go.
The step governs more than the increment. It snaps every value the user picks, it snaps the default value on load, and the number of decimals it carries is the number of decimals every label shows. Setting it to 0.10 instead of 0.1 changes nothing in the arithmetic and everything in how the numbers read.
Single picks one value; range picks a start and an end.
singleone thumb and one value. The value (range start) and value (range end) states repeat it, so you can switch modes later without rewriting workflows.rangetwo thumbs, a start and an end, with the fill drawn between them.defaultsingle
Which way the track runs. In vertical the minimum sits at the bottom, the scale goes to the right of the track and the value label to its left. A vertical slider needs an explicit height on the element: fitting the height to content collapses it.
horizontalthe track runs left to right, with the minimum on the left. The scale sits under the track and the value label above the thumb.verticalthe track runs bottom to top, with the minimum at the bottom, which is the convention for vertical sliders. The scale moves to the right of the track and the value label to the left of the thumb. The element needs an explicit height.defaulthorizontal
Lowest value of the slider.
default0
Highest value of the slider.
default100
Increment between values. Decimal steps (0.5, 0.1) allow decimal values.
default1
Smallest gap between the two thumbs in range mode.
default0
This is measured in the slider's own units, not in pixels or in steps. With a scale of 0 to 100 and a minimum distance of 10, the two thumbs can never be closer than 10 points apart.
When the value is shown above the thumb.
neverthe value is never shown above the thumb. Use it when you print the value elsewhere from the exposed states.while draggingthe value appears only during the interaction and disappears when the user lets go, keeping the form quiet at rest.alwaysthe value stays above the thumb. It is also the only mode drawn in the editor canvas, since the other two need a drag.defaultwhile dragging
Text shown before the value in the labels (for example $).
defaultno default
optionalText shown after the value in the labels (for example kg or %).
defaultno default
optionalBackground color of the value label.
default#333333
Font color of the value label.
default#FFFFFF
Which numbers appear under the track. The two are exclusive because the first and last tick already fall on the minimum and the maximum, so showing both would print the same two numbers twice in the same place. Choosing none keeps the tick marks and removes only their text. The scale takes room of its own, about 20px below the track or beside it when the slider is vertical, which the element’s default size already allows for.
noneno numbers along the track. Tick marks, if you asked for them, are still drawn: this removes their text, not the marks.min and max labelsonly the two ends, at the minimum and at the maximum.tick labelsthe value under every tick mark, which already includes the minimum and the maximum at the ends. Needs Tick marks above 0 to show anything.defaultnone
Number of intervals marked on the track. 0 for none.
default0
This is the number of intervals, not the number of marks. 4 divides the track in four and draws 5 marks, counting both ends. The marks are drawn evenly along the track and are independent of the step.
Color of the tick marks.
default#CACACA
Thickness of the track, in pixels.
default6
Color of the empty part of the track.
default#E4E4E4
Color of the selected part of the track.
default#4DBEFF
How long the thumb is ALONG the track, in pixels. In a horizontal slider this is its width, in a vertical one its height, so the shape follows the orientation instead of lying on its side.
default20
Length and thickness are measured against the TRACK, not the screen. In a horizontal slider the length is the width, in a vertical one it is the height, so a thumb you shaped as a pill keeps its shape when you switch the orientation instead of lying on its side.
How thick the thumb is ACROSS the track, in pixels. In a horizontal slider this is its height, in a vertical one its width.
default20
Corner radius of the thumb, in pixels. Half of the smaller side, or more, gives fully round ends: 20 by 20 with 10 is a circle, 12 by 28 with 6 is a pill, and a small number is a rounded square.
default10
Half of the smaller side, or anything above it, gives fully round ends. 20 by 20 with a roundness of 10 is the circle the slider ships with, 12 by 28 with 6 is a pill, and a small number such as 4 is a rounded square.
Background color of the thumbs.
default#FFFFFF
Border color of the thumbs.
default#4DBEFF
Value on load and on reset. In range mode, the start of the range.
defaultno default
optionalEnd of the range on load and on reset (range mode).
defaultno default
optionalDisables the component, preventing any interaction.
defaultno
Opacity applied to the slider when disabled, from 0 to 1. Track, thumbs, value labels and scale fade together.
default0.5
Color of the ring drawn around the thumb while it has focus. Empty derives the ring from Thumb border color.
defaultno default
optionalBorder color of the thumb while it has focus. Empty keeps Thumb border color.
defaultno default
optionalName read by screen readers. When empty, uses the placeholder or the visible label.
defaultno default
optionalHint read by screen readers after the name. Empty for none.
defaultno default
optionalValues the element exposes for the rest of the page to read.
Selected value in single mode. In range mode it mirrors value (range start), carrying the same number.
Start of the range in range mode. In single mode it mirrors value (single), carrying the same number.
End of the range in range mode. In single mode it mirrors value (single), carrying the same number.
True when the component is not disabled.
True while one of the thumbs has keyboard focus.
Where a workflow can start.
Triggered when a thumb is released or moved with the keyboard, and on reset.
What a workflow can tell the element to do.
Restores the default values.
Focuses the first thumb.
Writes a value into the slider from a workflow, applying the step, the limits and the minimum distance, and refreshes the exposed states.
Yes applies the value even while the element is disabled. No makes the action do nothing in that state.
defaultno default
Value for the thumb in single mode. Empty leaves it where it is. Ignored while the slider is in range mode.
defaultno default
optionalValue for the start thumb in range mode. Empty leaves it where it is. Ignored while the slider is in single mode.
defaultno default
optionalValue for the end thumb in range mode. Empty leaves it where it is. Ignored while the slider is in single mode.
defaultno default
optionalEach name tells you which mode it is meant for. In range mode, value (range start) and value (range end) are the two ends, and value (single) mirrors the start so a workflow written for a single slider keeps working after you switch modes. In single mode all three carry the same number. None of them is ever empty.
When the user releases a thumb, when they move it with the keyboard, and on reset. It does not fire on every pixel of a drag, so a workflow attached to it runs once per choice rather than hundreds of times.
Yes. Set a decimal step, such as 0.5 or 0.1, and the slider accepts decimals. The number of decimals in the step also decides how many decimals the labels show, so a step of 0.10 reads as 1.20 and a step of 1 reads as 1.
Because it is snapped to the step, which is the same rule that applies to everything the user picks. With a minimum of 0 and a step of 10, a default of 37 settles on 40. The editor canvas snaps it too, so what you position is what you get.
That is the default, and it is one of three choices. Never hides it entirely, while dragging shows it only during the interaction, and always keeps it above the thumb. Only always is drawn in the editor canvas, because the other two depend on a drag that does not happen there.
Yes. Orientation switches the track to vertical, with the minimum at the bottom, the scale to the right of the track and the value label to the left of the thumb. The keyboard behaves the same in both, and each thumb tells screen readers which way the track runs. The one thing to watch is the height: a vertical slider needs an explicit height on the element, because fitting the height to content leaves it with nothing to measure and collapses it.