The scroll-snap-stop property controls whether a snap target must be stopped at during scrolling. It helps prevent fast swipes from skipping important slides or panels.
01
stop
Force snap.
02
normal
Default.
03
always
No skip.
04
target
On child.
05
fast scroll
Swipe case.
06
align
Pair with it.
Fundamentals
Introduction
The scroll-snap-stop property in CSS is part of the CSS Scroll Snap Module. It works with scroll-snap-type and scroll-snap-align to create smooth and controlled scrolling experiences.
This property lets you specify whether a snap target must be stopped at even when the user scrolls quickly, which helps prevent important slides from being skipped.
Definition and Usage
Apply scroll-snap-stop to snap targets inside a scroll container — such as carousel slides inside a wrapper that already has scroll-snap-type enabled.
Most slides can use the default scroll-snap-stop: normal;. Add scroll-snap-stop: always; only on slides that must never be skipped during a fast swipe.
Foundation
📝 Syntax
The syntax for the scroll-snap-stop property is simple. It is applied to snap targets inside a scroll container.
syntax.css
element{scroll-snap-stop:normal|always;}
Basic Example
snap-target.css
.hero-slide{scroll-snap-stop:always;}
Related Properties
scroll-snap-type — enables snapping on the scroll container
scroll-snap-align — sets how each snap target aligns in the scrollport
scroll-padding — insets the scrollport on the container
Defaults
🎯 Default Value
The default value of the scroll-snap-stop property is normal, which means snapping behaves normally without forcing an extra stop on that target.
Cheat Sheet
⚡ Quick Reference
Question
Answer
Default value
normal
Common values
normal, always
Works with
scroll-snap-type and scroll-snap-align
Accepted values
normal, always
Set on
Snap targets inside scroll containers
Inherited
No
Animatable
No
Reference
💎 Property Values
Value
Example
Description
normal
scroll-snap-stop: normal;
Default value. Snapping behaves normally, without forcing a stop during fast scrolling.
always
scroll-snap-stop: always;
Forces the scroll container to snap to this position even if the user scrolls quickly.
normalalways
Context
When to Use scroll-snap-stop
scroll-snap-stop helps when some snap targets should never be skipped:
Hero carousels — Force the first promotional slide to always stop, even during fast swipes.
Onboarding flows — Make required steps stop instead of being skipped accidentally.
Product highlights — Keep a featured item from being scrolled past too quickly.
Story-style panels — Ensure key narrative sections get a deliberate pause.
Enable snapping on the container with scroll-snap-type first, set alignment with scroll-snap-align, then use always only where needed.
Preview
👀 Live Preview
Scroll sideways inside the box. The first panel uses scroll-snap-stop: always; the second uses the default normal.
Always stop
Normal stop
During a fast swipe, the red panel is more likely to force a snap stop than the yellow panel.
Hands-On
Examples Gallery
Start with the reference horizontal carousel, compare normal and always behavior, then try onboarding and vertical layouts.
📜 Forced Snap Stops
Control whether snap targets can be skipped during fast scrolling — matching the reference example.
Example 1 — Horizontal scroll snap with always on the first item
In this example, we’ll create a horizontal scrolling container with snap points and demonstrate the effect of scroll-snap-stop.
The hero slide forces a snap stop, making the featured content harder to skip accidentally.
How It Works
Pair always with scroll-snap-align on the same target. The alignment decides where the slide lands; the stop value decides whether it must pause there.
📄 Normal vs Always
Compare default behavior with forced stops in card rows and vertical panel scrollers.
Example 3 — Normal stop on regular carousel slides
Most slides can keep the default scroll-snap-stop: normal, which allows faster scrolling through multiple items.
The required onboarding step forces a stop before the user can continue scrolling.
How It Works
Vertical snap scrollers use the same stop values as horizontal carousels when the container has scroll-snap-type: y mandatory.
Companion
scroll-snap-stop in the family
scroll-snap-stop works on snap targets inside a container that already has scroll-snap-type. Pair it with scroll-snap-align to control both where items land and whether they must stop.
The scroll container uses scroll-snap-type to turn on snapping along an axis.
Container
2
Targets set stop behavior
Each snap target can use scroll-snap-stop: normal or always to control forced stops.
Target
3
Fast scroll is evaluated
During a quick swipe, normal targets may be skipped, but always targets must still snap into place.
Scroll
=
★
Controlled snap pacing
Important slides stay visible instead of being flung past during fast touch scrolling.
Compatibility
Browser Compatibility
The scroll-snap-stop property is supported in most modern browsers, including the latest versions of Chrome, Firefox, Safari, Edge, and Opera. However, it is always a good practice to test your website across different browsers to ensure compatibility.
✓ Scroll snap · Modern support
Reliable snap-stop support
Current Chrome, Firefox, Safari, Edge, and Opera support scroll-snap-stop on snap targets.
97%Modern browser support
Google Chrome69+ · Desktop & Mobile
Full support
Mozilla Firefox68+ · Desktop & Mobile
Full support
Apple Safari14.1+ · macOS & iOS
Full support
Microsoft Edge79+ · Chromium
Full support
Opera56+ · Modern versions
Full support
Testing tip
Test fast swipes on mobile browsers to confirm always targets stop while normal targets still feel smooth.
scroll-snap-stop property97% supported
Bottom line:scroll-snap-stop is safe to use in modern projects when you need forced snap stops on important targets.
Wrap Up
Conclusion
The scroll-snap-stop property is a useful addition to the CSS scroll snapping specification, giving developers more control over scrolling behavior during fast swipes.
Experiment with normal and always to see how forced stops improve touch and swipe interactions in carousels, onboarding flows, and story layouts.
Apply scroll-snap-stop on snap targets, not the scroll container
Use always sparingly on hero slides or required steps
Keep most slides on the default normal value
Pair with scroll-snap-align on the same target
Test fast swipes on touch devices
❌ Don’t
Set always on every slide — it can feel sluggish
Expect stop behavior without scroll-snap-type on the container
Confuse stop behavior with alignment from scroll-snap-align
Forget to test whether fast scrolling still feels natural
Summary
Key Takeaways
Knowledge Unlocked
Five things to remember about scroll-snap-stop
Use these points when deciding whether snap targets must force a stop.
5
Core concepts
★01
normal Default
Default behavior.
Default
⚙02
always
Force stop.
Value
◉03
snap target
Set on children.
Scope
▦04
fast swipe
Skip control.
Behavior
▦05
hero slide
Common use case.
Use case
🔄06
scroll-snap-align
Pair with it.
Companion
❓ Frequently Asked Questions
scroll-snap-stop controls whether a snap target must be stopped at during scrolling. With always, the browser must snap to that position even during a fast swipe. With normal, the browser may skip past it if the user scrolls quickly.
normal is the default and follows typical snap behavior, which can skip intermediate snap points during fast scrolling. always forces the scroll container to stop at that snap position even when the user scrolls quickly.
The default value is normal, meaning snapping follows the usual rules without forcing an extra stop on that target.
Apply it to snap targets inside a scroll container that already has scroll-snap-type enabled, such as carousel slides, onboarding panels, or gallery cards.
Use always on important slides or sections that should never be skipped, such as a hero message, a required onboarding step, or a featured product panel in a fast horizontal scroller.