Skip to main content

Keep Scrolling — Auto-Scroll Chrome Extension

Automatically scrolls through YouTube Shorts videos with intelligent controls and user-friendly features.

Keep Scrolling is a lightweight Chrome extension that automates your YouTube Shorts viewing experience. Designed for a seamless, hands-free flow of content, it automatically advances to the next video when the current one ends. The extension is smart enough to respect your manual pauses and can be easily toggled on or off via its simple popup interface.

Enjoy uninterrupted content consumption without needing to manually swipe or click to the next video. Keep Scrolling is built for speed and privacy, operating entirely locally without collecting any personal data.

  • Platform: Chrome Web Store
  • Price: Free

Use the Tool​

Keep Scrolling extension on Chrome Web Store

View Keep Scrolling Full Documentation

Get notified about updates to this tool

No spam. Just high-quality updates about new features and guides.


What This Tool Does​

What it does​

Keep Scrolling is a Manifest V3 Chrome extension. A content script injected into youtube.com/shorts/* pages monitors the video player and fires a scroll when the current video ends, advancing to the next Short without user interaction.

How MutationObserver drives scroll detection​

The YouTube Shorts feed is a single-page application — navigating between videos mutates the DOM without a full page reload. The extension uses a MutationObserver attached to the #shorts-inner-container element to detect when a new <ytd-reel-video-renderer> node enters the viewport. Once a new video node is observed, the extension finds its <video> element and attaches an ended event listener. When the ended event fires, it calls scrollBy({ top: window.innerHeight, behavior: 'smooth' }) to advance the feed.

This approach is more reliable than polling video.currentTime in a setInterval because ended fires exactly once per video, with no wasted CPU cycles between fires.

Manifest V3 architecture​

The extension follows Chrome's Manifest V3 model:

  • No persistent background page — V3 replaces background.scripts with a background.service_worker, which is unloaded when idle and woken on events
  • Content script (content.js) handles all DOM interaction and runs in the page's context under an isolated world — it cannot access the page's JavaScript variables, only the DOM
  • Popup (popup.html + popup.js) provides the on/off toggle; state is persisted via chrome.storage.local so the setting survives browser restarts
  • Messaging between popup and content script uses chrome.tabs.sendMessage / chrome.runtime.onMessage — the content script listens for { action: 'toggle' } and enables or disables the MutationObserver accordingly

Why not use a scroll event or IntersectionObserver?​

An IntersectionObserver on the video elements would also work, but it fires when elements enter the viewport during any scroll — including manual scrolls. Using video.ended as the trigger ensures the extension only advances after the video actually finishes, not whenever the user manually swipes past one.


How It Works​

Installation​

Install from the Chrome Web Store. Chrome grants the extension the tabs and storage permissions declared in manifest.json. No clipboard, history, or identity permissions are requested — the extension cannot read your browsing history or any page content outside youtube.com/shorts/*.

Content script lifecycle​

When you navigate to a Shorts URL, Chrome injects content.js into the page. The script:

  1. Reads the current enabled state from chrome.storage.local
  2. If enabled, creates a MutationObserver targeting document.body with { childList: true, subtree: true }
  3. On each mutation batch, checks whether a <video> element matching the active Short is present and not yet observed
  4. Attaches a one-time ended listener to the video; when it fires, calls scrollBy and removes the listener
  5. Listens for { action: 'toggle' } messages from the popup to connect or disconnect the observer without reloading the page

Why Manifest V3 matters for users​

V3 service workers are terminated when idle, unlike V2 background pages that ran continuously. This means the extension consumes no memory or CPU when you are not on a Shorts page. The trade-off is that the service worker must re-initialise on wake — handled here by persisting state in chrome.storage.local rather than in-memory variables.

Limitations​

  • Works only in Chrome and Chromium-based browsers (Edge, Brave) — Firefox uses a different extension API
  • If YouTube changes the DOM structure of the Shorts feed (e.g., renames #shorts-inner-container), the MutationObserver target will not match and the extension will silently do nothing until updated
  • Does not work inside the YouTube mobile app or on m.youtube.com
  • Cannot advance past age-restricted or sign-in-required videos that the player blocks
Read the Full Documentation
Permissions breakdown, configuration options, and known YouTube DOM changes are covered in the docs.

Frequently Asked Questions​

Is Keep Scrolling free to use?​

Yes, Keep Scrolling is available for free on the Chrome Web Store.

Does Keep Scrolling collect any personal data?​

No, Keep Scrolling operates entirely locally on your device and does not collect any personal data.

Can I disable Keep Scrolling if I want to watch videos manually?​

Yes, you can easily toggle the extension on or off through its popup interface, allowing you to watch videos manually whenever you choose.

Will Keep Scrolling work on mobile devices?​

Keep Scrolling is designed for the Chrome browser on desktop and may not function properly on mobile devices or within the YouTube app. It is recommended to use it on a desktop for the best experience.



Get Early Access to New Tools

Be the first to try new APIs and applications. No noise. Only meaningful releases and practical engineering insights.