Small, smooth, speed-driven and stoppable scrolling to an element or a position, inside the viewport or a parent element.
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

go-scroll-to 2

A fast and lightweight (±595B gzipped) javascript module to smoothly scrollTo. It scrolls by speed instead of duration, to a position or an element, within the window or any scrollable parent element. And it's stoppable. And aside from a modern browser, it's dependency free.


go-scroll-to has been rewritten to an ES6 module. If you still need support for older browsers use version 1.0.3 (npm install go-scroll-to@^1.0.3)


  • Scroll the window or any scrollable element
  • Scroll by speed: the duration is relative to the distance
  • Stop when the user manually scrolls (i.e. 'mouse wheels' or 'touch starts')
  • Sets an 'auto-scrolling' class name on the body element
  • Scroll to top, to a specific position or to an element
  • Offset the target position
  • Touch compatible


Scroll to top


Scroll to position inside a scrollable element

    to: 300,
    context: document.getElementById('scrollable')

Scroll slowly to element inside a scrollable element

    to: document.getElementById('element'),
    speed: .3,
    context: document.getElementById('scrollable')

Install through npm

npm install go-scroll-to

for version 1: npm install go-scroll-to@^1.0.3

All Options

to: HTMLElement or Number. Default: 0
offset: Number, offset the target position. Default: 0
context: HTMLElement. Default: window
speed: Float greater than 0, higher is faster. Default: 2
callback: Function, triggered when target is reached or when the user interrupts the animation. The callback receives one argument, which will be 1 if the target position was reached. Default: undefined


Apache 2.0