Customizing Smooth Scrolling Physics and Speed in Firefox
This article provides a complete guide on how to customize the smooth scrolling speed and physics in the Mozilla Firefox web browser. While Firefox offers a basic toggle for smooth scrolling in its standard settings menu, users can unlock full control over scroll duration, distance, friction, and Mass-Spring-Damper (MSD) physics by modifying hidden preferences in the browser's advanced configuration page.
Step 1: Enable Basic Smooth Scrolling
Before modifying the advanced physics, ensure that the master smooth scrolling setting is active.
- Open Firefox and click the menu button (three horizontal lines) in the top-right corner.
- Select Settings.
- In the General panel, scroll down to the Browsing section.
- Ensure the box next to Use smooth scrolling is checked.
Step 2: Access the Advanced Configuration Page
To change the speed and physics, you must use Firefox's advanced configuration editor.
- Open a new tab in Firefox.
- Type
about:configinto the address bar and press Enter. - A warning page may appear. Click the Accept the Risk and Continue button to proceed to the preference search page.
Step 3: Customize Scroll Speed and Distance
You can control how fast the page scrolls and how much distance is
covered with each notch of your mouse wheel by searching for the
following preferences in the about:config search bar and
double-clicking them to change their values.
mousewheel.default.delta_multiplier_y- What it does: Controls the distance a page scrolls per mouse wheel notch. Increasing this makes scrolling feel faster.
- Default value:
100 - Customization: Change the value to
250or300for much faster scrolling, or lower it to50for slower, more precise scrolling.
general.smoothScroll.mouseWheel.durationMaxMS- What it does: Sets the maximum duration (in milliseconds) for the smooth scroll animation to complete.
- Default value:
200 - Customization: Increase this value (e.g.,
400to1000) to make the scroll glide longer and feel smoother. Decrease it (e.g.,100) to make the scroll stop more abruptly and feel snappier.
general.smoothScroll.mouseWheel.durationMinMS- What it does: Sets the minimum duration (in milliseconds) for the scroll animation.
- Default value:
50 - Customization: Raise this value to
150or200to ensure that even quick, single-notch scrolls remain smooth.
(Note: If you use keyboard arrows or the Page Up/Page Down keys
to scroll, you can adjust the same duration settings under
general.smoothScroll.lines and
general.smoothScroll.pages respectively).
Step 4: Enable and Customize Mass-Spring-Damper (MSD) Physics
Firefox includes an alternative physics engine for scrolling based on a Mass-Spring-Damper model. This makes scrolling feel more like a physical object with weight and momentum, similar to scrolling on a smartphone or macOS trackpad.
- Search for
general.smoothScroll.msdPhysics.enabled. - Double-click the preference to change its value from
falsetotrue.
Once MSD physics is enabled, the standard durationMaxMS
settings are bypassed. Instead, you can fine-tune the physics using
these specific MSD preferences:
general.smoothScroll.msdPhysics.regularSpringConstant- What it does: Controls the stiffness of the scroll "spring" during normal scrolling.
- Customization: Lowering this value makes the scroll feel looser and glide longer. Raising it makes the scroll tighter and more immediate.
general.smoothScroll.msdPhysics.slowdownSpringConstant- What it does: Controls the friction and deceleration when the scroll is coming to a stop.
- Customization: Decrease this value for a longer, gradual coasting effect at the end of a scroll. Increase it to make the page brake harder.
general.smoothScroll.msdPhysics.motionBeginSpringConstant- What it does: Controls the initial acceleration when you first move the mouse wheel.
- Customization: Lower values create a gentler start, while higher values provide instant acceleration.
Step 5: Adjust Standard Velocity and Friction (Non-MSD)
If you prefer not to use the MSD physics engine (keeping
general.smoothScroll.msdPhysics.enabled set to
false), you can still adjust the inertia and friction of
the standard smooth scrolling engine using these two preferences:
general.smoothScroll.currentVelocityWeighting- What it does: Determines how much your current scrolling speed affects the next scroll input (momentum).
- Default value:
0.25 - Customization: Set this between
0.0and1.0. Setting it to0removes acceleration build-up entirely.
general.smoothScroll.stopDecelerationWeighting- What it does: Controls how smoothly the scroll decelerates before stopping.
- Default value:
0.4 - Customization: Set this between
0.0and1.0. A higher value (such as0.8) results in a much longer, softer landing as the scroll finishes.
All changes made in the about:config menu take effect
immediately. You can switch to another open tab to test the feel of your
new scrolling physics and return to the configuration tab to make
adjustments until you find your ideal setup. To revert any setting back
to its original state, simply click the Reset arrow
icon on the far right of the preference row.