User manual

Slipstream Live watches how much video your browser has loaded ahead and nudges the playback speed so you stay close to the live edge — without the video stopping to buffer. This manual covers installation, every setting, and what to do when something looks wrong.

Version 1.3.1 YouTube Live ・ Twitch ・ TwitCasting

1 Introduction

A live stream always plays a few seconds behind what the streamer is doing right now. That gap grows every time your connection hiccups, and it never shrinks on its own.

Slipstream Live measures how much video your browser has loaded ahead — the buffer — about 50 times per second, and nudges the playback speed up or down to close the gap without letting the video stall.

SituationWhat Slipstream Live does
You're behind, and plenty of video is loaded aheadSpeeds up slightly (1.25x) until you catch up
Loaded video is nearly goneDrops to 0.15x and lowers the volume to avoid a freeze
Everything is fineNothing — plain 1.00x

Once installed, no operation is required while you watch.

2 System requirements

Manifest versionV3
Chrome / Edge / Brave and other Chromium browsersv128 or later
Mozilla Firefoxv140.0 or later
Firefox for Androidv142.0 or later
Supported sitesYouTube (including m.youtube.com and youtube-nocookie.com), Twitch (including player.twitch.tv), TwitCasting
UI languagesEnglish, 日本語, 한국어, Deutsch, Español, Français, Português (BR), 简体中文, 繁體中文 — follows your browser's language setting

3 Installation

3.1 Chrome / Edge / Brave / other Chromium browsers

Install from the Chrome Web Store.

The Slipstream Live listing on the Chrome Web Store
Fig. 1a Click Add to Chrome.

After installing, open the puzzle-piece menu in the toolbar and pin Slipstream Live so its icon is always visible.

Pinning the extension from the puzzle-piece menu in Chrome
Fig. 2a Click the pin icon next to Slipstream Live.

3.2 Firefox

Install from Firefox Add-ons.

The Slipstream Live listing on Firefox Add-ons
Fig. 1b Click Add to Firefox. The same page works on Firefox for Android (v142.0 or later).
Pinning the extension to the toolbar in Firefox
Fig. 2b Choose Pin to Toolbar from the ••• menu.

3.3 Installing from source (developers / manual installation)

Chromium browsers

  1. Download the repository as a ZIP and extract it (or git clone it).
  2. Enter chrome://extensions in the address bar.
  3. Turn on Developer mode with the toggle in the top-right corner.
  4. Click Load unpacked and select the extracted folder — the one containing manifest.json.

Firefox — temporary install (disappears when Firefox closes)

  1. Open about:debugging#/runtime/this-firefox.
  2. Click Load Temporary Add-on….
  3. Select the manifest.json file inside the extracted folder.

Firefox — permanent install (Developer Edition / Nightly only)

  1. ZIP the contents of the folder.
  2. In about:config, set xpinstall.signatures.required to false.
  3. In about:addons, click the gear icon → Install Add-on From File… → choose your ZIP.

3.4 Verifying the installation

  1. Open a live stream on YouTube, Twitch, or TwitCasting. A VOD or clip will not work.
  2. Click the Slipstream Live toolbar icon.
  3. In the All sites panel, turn on Show playback rate.
  4. A small 1.00x appears in the player's control bar, changing colour as Slipstream Live works.
A 1.00x badge in the YouTube control bar
Fig. 4 The playback rate badge in its normal state.

4 Parts of the settings screen

Click the toolbar icon to open the settings popup. The same screen can also be opened as a full tab from your browser's extensions management page (Options).

The Slipstream Live settings screen
Fig. 5 The settings screen, shown with its default values. The numbers in the table below refer to this figure.
No.PartDescription
1Icon and titleClicking the icon opens the project page. The version number is shown next to the name.
2Change playback speedThe master switch. Turning it off stops all control and all badges. Marked All sites.
3Site tabsYouTube / Twitch / TwitCasting. Each site stores its own values, and the tab for the site you are currently on is selected automatically.
4Site settings panelSpeed-up settings and maximum-slowdown settings for the selected site.
5? buttonsOpens a plain-language explanation of that row.
6Reset · (site name)Restores only the currently selected site's settings to their defaults.
7All sites panelThe three on-screen badge switches.
8Reset · All sitesRestores the all-sites settings to their defaults.
The settings screen with the Twitch tab selected
Fig. 3 Selecting a site tab switches the whole panel. The Twitch tab carries an additional note about its default threshold, and the accent colour changes with the site.
A help bubble opened from a question-mark button
Fig. 6 Clicking ? explains that row in plain language.

5 Reading the on-screen badges

All three badges are off by default. Turn them on in the All sites panel. They appear in the player's control bar; if that bar cannot be found, they fall back to a small dark strip in the top-left corner of the player.

BadgeExampleMeaning
Playback rate1.25xThe actual current speed. The text colour shows which mode is active.
Latency1.50sHow far behind the live edge you are. While you are watching behind the live edge (DVR), the number is replaced by (DVR), because a latency figure has no meaning there.
Buffer health2.50sSeconds of video loaded ahead of you. A +9s suffix means more video is loaded beyond a gap.
All three badges displayed together
Fig. 7 Left to right: playback rate, latency, buffer health.
The badges while watching behind the live edge
Fig. 7b After rewinding, the latency badge shows (DVR). Here the buffer holds 61.99 s, plus a further 9 s beyond a gap.

6 The three control modes

ModePriorityBadge colourSpeedWhen it applies
FloorHighestBlue #83c1ff0.15x (fixed)The buffer is about to run out. Emergency brake, plus volume ducking.
SpeedupLowRed #ff89831.25x (default)The buffer is comfortably deep and speeding up is actually gaining ground. Catches up to the live edge.
Normal—White #eee1.00xNothing to do.

Higher-priority modes always win. The 0.15x floor speed is deliberately not configurable — it is a safety net, not a preference.

The playback rate badge in red at 1.25x
Fig. 9 Speedup mode. Red means Slipstream Live is catching up.
The playback rate badge in blue at 0.15x
Fig. 10 Floor mode. Blue means the buffer is nearly empty and playback has been slowed to the minimum.

Each threshold carries hysteresis in the direction of the current mode, so speed and volume don't chatter when the buffer sits exactly on a boundary. The width is 0.2 s at every level. On top of that, starting a speed-up is rate-limited to once every 2 seconds. Nothing else is delayed — not leaving a speed-up, not entering Floor, not leaving it. Only the direction that increases intervention is treated cautiously; backing off and falling back to safety always take effect at once. Widening a threshold alone can't stop the chatter, because the value being compared against it moves as well.

When speeding up stops helping, it stops speeding up. Live video is only ever produced in real time, so once you reach the live edge there is no gap left to close. Holding a higher rate there just makes playback outrun each arriving segment and stall briefly, over and over, which lowers the effective speed rather than raising it. Slipstream Live compares the seconds the speed-up should have gained against the seconds it actually gained, and stands down when the latter falls below half the former. If you drift behind again, it goes straight back to catching up.

Recovering from a dead player

On Twitch the player occasionally stops outright with a numbered error — #3000 is the common one. The usual cure is a page reload, which costs you the chat and your place in it. Slipstream Live watches for that error and presses Twitch's own reload button instead, so playback comes back in about a second with the page untouched. It waits a moment first in case the player rights itself, tries a few times at widening intervals, and then stops rather than hammering a stream that has simply ended. This is on by default and can be switched off on the Twitch tab.

What Slipstream Live leaves alone

7 Settings reference

7.1 Site settings (stored separately per site)

SettingRange / stepYouTubeTwitchTwitCastingDescription
Speed up when delayedON / OFFONONONMaster switch for catching up.
Speed-up playback rate1.05x–4.00x / 0.051.25x1.25x1.25xHow fast to catch up. Higher catches up sooner but consumes buffer faster.
Speed-up buffer threshold (sec)0.1–100.0 / 0.110.010.010.0Used only when Auto-adjust is Off. Speeds up once this much video is loaded ahead.
Auto-adjust buffer thresholdOff / Stable / Standard / AggressiveStandardStandardStandardLets Slipstream Live decide when speeding up is safe. Recommended.
Maximum slowdown on buffer depletionON / OFFONONONMaster switch for the 0.15x emergency brake.
Maximum slowdown threshold (sec)0.0–10.0 / 0.10.802.00
(FF 0.50)
0.30Drops to 0.15x while buffer health stays below this.
Lower volume during maximum slowdownON / OFFONONONDucks the audio while at 0.15x.
Volume during maximum slowdown (%)0–100 / 5303030A percentage of your current volume. 100 = no change, 0 = mute.
Control premieresON / OFFOFF——Whether premieres count as live streams. Left off, they are not touched at all. YouTube has no equivalent on the other two sites, so this row only appears on the YouTube tab.
Recover from player errorsON / OFF—ON—Presses Twitch's own reload button when the player stops with a numbered error such as #3000, so playback returns without a page reload. Twitch only, so this row appears on the Twitch tab alone.

FF = the default used on Firefox, which reports buffer levels differently. Twitch is the only site where it differs.

Why is Twitch's threshold so much higher? Twitch sometimes stops delivering video for around 10 seconds at a time. On Chrome that ends in error #3000 and needs a reload, so the default is set higher. Firefox recovers on its own, so it keeps the normal default.

7.2 The four auto-adjust levels

LevelTrough windowSafety factorAdded marginHysteresisCharacter
Off———0.2 sNo estimation; uses Speed-up buffer threshold as-is.
Stable60 s101.0 s0.2 sLongest window, largest factor. Speeds up only once the troughs have stayed high for a while, so it rarely drops to 0.15x — at the cost of speeding up far less often. A good fit for music.
Standard30 s50.3 s0.2 sThe balanced middle ground. The default, and enough for most connections.
Aggressive5 s30.1 s0.2 sShort window; reacts quickly to recent headroom and closes the gap harder, but reaches maximum slowdown more often.

Why the window and the factor move together. A longer window makes a consistent trough history harder to accumulate, and a larger safety factor makes whatever scatter remains count for more. Changing only one of them would blur the difference between the levels.

Why Stable suits music. On a concert, DJ set, or any performance stream, a change of playback rate is something you hear. Your browser holds the pitch steady, but the tempo still shifts — and a drop to 0.15x wrecks the audio outright. Stable cuts down how often the rate moves at all and makes the emergency brake far less likely to fire. You stay a little further behind the live edge in exchange, which rarely matters when you are listening rather than chatting.

What the added margin is added to. It sits on top of your Maximum slowdown threshold. With that switch Off, the automatic levels protect one segment's worth of buffer instead (0.5–5 seconds, as reported by the site), because there is no 0.15x brake left to catch a trough that reaches zero.

Damping. On the automatic levels, hysteresis raises the entry line by 0.2 s and a mode change waits 2 seconds before the next speed-up may begin. With auto-adjust Off neither applies: the speed-up starts the instant buffer health reaches your number and stops the instant it drops below. The 0.15x brake is a separate test and keeps its own hysteresis either way.

The four-step slider showing its tooltip
Fig. 11 Drag the slider to choose a level; the name appears next to the pointer.

7.3 All-sites settings

SettingDefaultDescription
Change playback speedONMaster switch. Off = Slipstream Live does nothing at all.
Show playback rateOFFShows the speed badge in the player.
Show latencyOFFShows how far behind the live edge you are.
Show buffer healthOFFShows how many seconds are loaded ahead.

8 How it works

Every 20 milliseconds Slipstream Live measures buffer health — how many seconds of video are loaded and ready to play — and picks one of the three modes from that number.

The hard part is knowing when speeding up is safe. Buffer health is never steady: video arrives in chunks ("segments"), so the buffer jumps when a chunk lands and then drains until the next one. Plotted over time it looks like a sawtooth. A single reading taken at a peak would suggest plenty of room, leading to a speed-up that hits the very next trough with nothing left.

So instead of trusting one reading, Slipstream Live estimates statistically where the troughs are, over a window that adapts to each stream, and only allows a speed-up while that estimated headroom stays above the buffer level you have asked it to protect — your maximum slowdown threshold plus the level's added margin, or one segment's worth of buffer if maximum slowdown is switched off. Because the safety factor is large, headroom only opens up when the troughs are consistent — an unstable connection naturally suppresses speed-ups, and while there isn't enough data yet, Slipstream Live simply does nothing.

One shortcut sits above that test. Once buffer health passes 20 seconds — or your maximum slowdown threshold plus 10 seconds, whichever is higher — the trough estimate is no longer what limits the decision, so Slipstream Live speeds up without waiting for it, and returns to the statistical test below 15 seconds. This is what keeps it responsive right after you seek, when the buffer refills so quickly that the statistics are temporarily unusable. The shortcut applies to the automatic levels only; with auto-adjust Off, the speed-up simply begins the moment buffer health reaches your threshold and ends the moment it drops below.

All of that answers "is there enough buffer to speed up safely?" — a different question from "is there any point in speeding up?" Live video is produced in real time, so the buffer refills at 1.0x no matter how fast you play it. Once the cushion is spent you are at the live edge, and holding a higher rate there makes playback outrun each arriving segment and stall for a fraction of a second, over and over. Buffer health can't see this, because every stall lets the buffer refill. So Slipstream Live compares the gain the speed-up should have produced against the gain the playhead actually made, over a 12-second window, and stands down when the latter falls below half the former. It re-arms once latency grows past a threshold — one that scales with the site's segment length, so it means the same thing on sites whose baseline latency differs by more than tenfold — or after 30 seconds.

Badges are redrawn at most 10 times per second and all statistics are smoothed, so the speed does not visibly oscillate. When there is nothing to control, the loop drops to a 1-second watch mode instead of stopping, because ads play through the same video element and end without firing any media event. It also runs once immediately when the tab becomes visible again.

The full derivation — including how the trough is located without knowing the segment length — is in the project README.

9 Troubleshooting

It never speeds up.

Auto-adjust is deliberately cautious: on an unstable connection it decides that speeding up isn't safe. Move Auto-adjust buffer threshold one step toward Aggressive first. If that still isn't enough, set it to Off and configure Speed-up buffer threshold (sec) manually — start around 15–20 seconds and work down. From version 1.1.3 onwards the manual mode speeds up the instant buffer health reaches your threshold and stops as soon as it drops below, with no added margin and no waiting period; if the rate now switches back and forth more than you'd like, raise the threshold or switch auto-adjust back on.

It sits at 1.00x right after seeking, even with plenty of video buffered.

Make sure you are on version 1.1.0 or later. From that version, buffer health above 20 seconds allows a speed-up on its own, without waiting for the trough statistics — which the burst of fast loading that follows a seek would otherwise keep unusable for a while.

The badge says 1.25x but nothing feels faster, and the picture hitches every few seconds.

You've reached the live edge. Live video only arrives in real time, so beyond that point a higher rate adds stalls without adding speed. Version 1.1.2 and later detects this and stands down automatically — check your version first. If it persists, look at gain= in the debug log; FUTILE means the detection is working.

It drops to 0.15x too often.

Move Auto-adjust buffer threshold one step toward Stable: the longer window and larger safety factor mean a speed-up is only allowed once the troughs have proved themselves. Otherwise raise the manual threshold, or lower Speed-up playback rate so the buffer drains more slowly. Lowering Maximum slowdown threshold (sec) delays the brake, but increases the chance of an actual freeze.

Nothing happens at all.

Check that Change playback speed is ON, that you are on a live stream rather than a VOD or clip, and that you haven't selected a manual playback speed in the player's own menu. On a YouTube premiere, check Control premieres at the bottom of the YouTube tab as well — it is off by default, so premieres are skipped until you turn it on.

Nothing happens on TwitCasting.

Check whether the stream is playing in low-latency mode. Low-latency streams arrive over WebRTC and are outside Slipstream Live's scope — turn low latency off in the player settings if you want Slipstream Live to manage the stream.

The badges don't appear.

They are off by default — turn them on in the All sites panel. If a site's control bar cannot be found, the badges fall back to a small dark strip in the top-left corner of the player.

Twitch video freezes or shows an error (unrelated to Slipstream Live).

Slipstream Live only adjusts playback speed, so a complete stop or an "Error #XXXX" code is almost always a Twitch or browser issue. Since 1.3.0 it does try to clear those errors for you, so first check that Recover from player errors is ON in the Twitch tab. If the error keeps coming back, try these in order:

  1. Check status.twitch.com for an ongoing outage.
  2. Open the same stream in an Incognito window (Ctrl+Shift+N, Cmd+Shift+N on Mac). If that fixes it, the cause is an extension or cached data.
  3. Turn off all extensions, especially ad blockers — Twitch embeds ads directly into the video stream, so ad blockers are one of the most common causes of playback errors.
  4. Update Chrome via chrome://settings/help. Official support covers only the two most recent versions.
  5. Clear cache and cookies with Ctrl+Shift+Delete (Cmd+Shift+Delete on Mac).

If the screen still freezes or goes black, toggle Hardware acceleration in chrome://settings/system and restart the browser. Switch it back if it doesn't help — this is a diagnostic step, not a setting to leave changed.

Twitch's own resources are worth a look too: Playback Issue Troubleshooting, Supported Browsers, How to File a Video Playback Issue.

10 Collecting a debug log

If you need to report a problem, a debug log makes it far easier to diagnose.

  1. Open the stream page and press F12 to open the browser console — the page console, not the extension's own console.
  2. Run the line below.
  3. Wait about 30 seconds while the problem is happening, then copy the output.
window.__slipstreamliveDebug = true;

Once per second you will see the current mode, the real playback rate, buffer health, the short-term and trough statistics, the room calculation, the shortcut level ample, the accumulated excess consumption drift, the stationarity verdict calm, and the speed-up effectiveness gain.

11 Privacy

Slipstream Live makes no network requests whatsoever. It requests only two permissions:

No analytics, no telemetry, no identifiers, no ads. Full details are in the privacy policy.

12 Support

PurposeWhere
Bug reportsGitHub Issues — use the bug report template
Questions, feature requests, site support requests, translation feedbackGitHub Discussions
Security vulnerabilitiesGitHub Security Advisories — report privately

Please report vulnerabilities privately. A public issue is effectively a published exploit.

When reporting a bug, please include: the site, browser and version, extension version, OS, what happened, steps to reproduce, any settings changed from the defaults, and a debug log if possible.

13 License

Dual-licensed under the Apache License 2.0 or the MIT License, at your option.