Skip to content

Range Slider

Configure dual-thumb range slider annotation in Potato for selecting a numeric range with customizable bounds, step size, and endpoint labels.

The range slider annotation schema provides a dual-thumb slider that lets annotators select a range of values rather than a single point. Use it for tasks whose answer is an interval, such as an estimated age range, a time window, or a confidence interval.

Potato dual-thumb range slider set to an age range of 25 to 75Range slider in Potato

Overview

A standard slider captures one value; the range slider has two draggable thumbs for the low and high ends of an interval. Annotators drag either thumb to set the range, and the current values are displayed alongside the slider so the selection can be read precisely. Both thumbs start unset, and the annotation stays empty until the annotator moves one.

Quick Start

The bounds decide what the annotator can express, so set min_value and max_value to the range the task actually spans. A step of 1 keeps the recorded values as whole years:

yaml
annotation_schemes:
  - annotation_type: range_slider
    name: age_range
    description: Estimate the age range of the author.
    min_value: 0
    max_value: 100
    step: 1
    left_label: "Young"
    right_label: "Old"

Configuration Options

FieldTypeDefaultDescription
annotation_typestringRequiredMust be "range_slider"
namestringRequiredUnique identifier for this schema
descriptionstringRequiredInstructions displayed to annotators
min_valuenumber0Minimum value of the slider scale
max_valuenumber100Maximum value of the slider scale
stepnumber1Increment between selectable values
left_labelstring""Label displayed at the left (minimum) end of the slider
right_labelstring""Label displayed at the right (maximum) end of the slider
show_valuesbooleantrueDisplay the currently selected low and high values
label_requirement.requiredbooleanfalseWhether the annotation must be completed before moving on

Examples

Age Range Estimation

Bounding the scale at the range the data can contain stops annotators recording impossible values and spreads the usable range across the full width of the slider:

yaml
annotation_schemes:
  - annotation_type: range_slider
    name: age_estimate
    description: What age range do you think the author falls in?
    min_value: 13
    max_value: 90
    step: 1
    left_label: "Younger"
    right_label: "Older"

Confidence Interval

A step of 5 tells the annotator that finer distinctions are not wanted, which speeds the judgment and keeps the recorded intervals comparable:

yaml
annotation_schemes:
  - annotation_type: range_slider
    name: confidence_interval
    description: Select the range within which you believe the true value falls.
    min_value: 0
    max_value: 100
    step: 5
    left_label: "0%"
    right_label: "100%"
    show_values: true

Time Window

Half-hour steps over a 24-hour scale match how people describe times of day, and the endpoint labels name what the numbers mean:

yaml
annotation_schemes:
  - annotation_type: range_slider
    name: time_window
    description: When during the day is this activity most likely? (hours)
    min_value: 0
    max_value: 24
    step: 0.5
    left_label: "Midnight"
    right_label: "Midnight"

Temperature Comfort Range

Numeric readouts matter most when the unit is unfamiliar or the scale is wide, so this task leaves show_values on:

yaml
annotation_schemes:
  - annotation_type: range_slider
    name: comfort_range
    description: What temperature range (°F) do you find comfortable?
    min_value: 40
    max_value: 110
    step: 1
    left_label: "Cold"
    right_label: "Hot"
    show_values: true

Output Format

json
{
  "age_estimate": {
    "labels": {
      "range_low": 28,
      "range_high": 42
    }
  }
}

The two thumbs are recorded as range_low and range_high, each within the configured min_value to max_value range.

Best Practices

  1. Bound the scale to the task - min_value and max_value should span what the data can contain, so the usable range fills the slider
  2. Choose an appropriate step size - fine-grained steps (0.1) for precise tasks, coarse steps (5, 10) for rough estimates
  3. Add endpoint labels - left_label and right_label provide semantic context beyond raw numbers
  4. Keep show_values enabled - numeric readouts help annotators make precise selections
  5. Use for genuine range tasks - if only a single value is needed, use the standard Slider instead

Further Reading

For implementation details, see the source documentation.