Free tool
Framer Motion Spring Slider Builder
Tune Framer Motion spring physics visually — stiffness, damping, mass, restDelta — see live preview, INP estimate, wobble risk, and copy-paste a production-tuned spring config plus a complete React slider component.
Presets
Live preview · rAF spring simulator
Same equations Framer Motion uses (Hooke's law + damping).
Slide 1
k=320 · c=28 · m=1
Estimated INP
~71 ms
Excellent — well under the 200ms target.
Wobble risk
Low
Damping is the primary lever. Below 18 = visible bounce.
Settle time
~5 ms
Time for the spring to come to rest from rest-delta threshold.
// Yokaify Framer Motion spring — production-tuned
import { motion } from 'framer-motion';
export const yokaifySpring = {
type: 'spring' as const,
stiffness: 320,
damping: 28,
mass: 1,
restDelta: 0.001,
// Optional: cap the duration ceiling for INP discipline
// duration: 0.4,
};
// Usage:
// <motion.div animate= x: 0 transition={yokaifySpring} />
Requires framer-motion. Drop the spring config in a shared module so every slider, carousel, and modal uses the same physics.
Springs have four settings. Get the mix wrong and your slider feels janky. Start with the Gentle preset, watch the live preview, then tune from there.
What the four settings do
- Stiffness - how hard the spring pulls. Higher feels snappier. Range 20-800; most production sliders sit at 180-400.
- Damping - the brake on bounce. Higher means less wobble. For sliders, keep it at 22 or above so visitors never see a wobble.
- Mass - how heavy the motion feels. Keep it at 1 for most sliders; above 1.5 feels sluggish.
- RestDelta - when the spring decides it has arrived. 0.001 is a safe default.
How to read the result
Two things to watch:
- INP estimate - how long the interaction blocks the screen. Lower is better. Under 200 ms is the "good" cutoff; over 500 ms fails the Core Web Vitals gate.
- Wobble risk - flags configs that bounce too much before settling.
A calm slider (stiffness 180, damping 22, mass 1) lands around 70-90 ms. A bouncy one (stiffness 600, damping 12, mass 1.5) can hit 250+ ms.
What to do next
- Copy the generated config and slider component into your project.
- Animate only
transformandopacity, neverleft,top,width, orheight. Those force layout work on every frame. - For visitors who prefer reduced motion, swap the spring for a near-instant cut between slides and turn off drag-to-swipe.
- Keep arrow-key and Tab navigation working. The generated nav buttons are real buttons in order, so this works out of the box.
The builder pairs with the Next.js Rive state machine wrapper for character animation, while these springs handle the UI motion around it.
Further reading
- ToolNext.js Rive state machine wrapperFor character animation; Framer Motion for UI motion around it.
- ToolShopify cart drawer animation generatorSame physics, simpler API, for Shopify Liquid stores.
- GuideNext.js chatbot 2026 architecture guideWhere Framer Motion fits in the Next.js implementation.
- GuideCwv discipline for ecommerce 2026The INP discipline this tool was built to respect.
Frequently asked questions
Stiffness = how forcefully the spring pulls. Damping = friction that absorbs oscillation. Mass = inertia. RestDelta = threshold for "at rest".
Last verified May 24, 2026. Tested with framer-motion 11.6, React 19, and Next.js 15.5.