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.

  1. Open Firefox and click the menu button (three horizontal lines) in the top-right corner.
  2. Select Settings.
  3. In the General panel, scroll down to the Browsing section.
  4. 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.

  1. Open a new tab in Firefox.
  2. Type about:config into the address bar and press Enter.
  3. 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 250 or 300 for much faster scrolling, or lower it to 50 for 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., 400 to 1000) 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 150 or 200 to 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.

  1. Search for general.smoothScroll.msdPhysics.enabled.
  2. Double-click the preference to change its value from false to true.

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.0 and 1.0. Setting it to 0 removes 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.0 and 1.0. A higher value (such as 0.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.