Skip to content

Repository files navigation

Video Speed Control

Video Speed Control

Playback speed control for HTML5 video, plus a few handy tools for YouTube.
Chrome · Manifest V3 · Vanilla JavaScript · No build step

English · Русский

Popup with the speed control   Settings screen

Features

  • speed from 0.0x to 4.0x in 0.1 steps;
  • hold the increase or decrease button to keep stepping by 0.1;
  • custom presets and rebindable keyboard shortcuts;
  • the selected speed is applied to new videos automatically;
  • an allowlist of sites the extension should run on;
  • Russian and English interface with browser language detection;
  • light, dark and system themes;
  • a speed panel next to the YouTube action buttons;
  • optional SponsorBlock with per-category control and statistics;
  • a Summary button that copies a prepared prompt along with the video link and opens Gemini.

Language and theme both default to "Auto": the language follows the browser UI language (Russian when it starts with ru, English otherwise), the theme follows the system setting. Either can be switched by hand in the settings.

Default shortcuts:

  • Alt + ← — decrease speed;
  • Alt + → — increase speed;
  • Alt + R — back to 1.0x.

Installation

  1. Download video-speed-control-<version>.zip from the latest release and unpack it into any folder you plan to keep (or clone the repository).
  2. Open chrome://extensions/.
  3. Enable developer mode.
  4. Click "Load unpacked" and pick the unpacked folder — the one that contains manifest.json. Chrome cannot install the .zip itself, and dragging the archive onto the page does nothing.

Keep that folder in place: Chrome loads the extension from it on every start, and deleting or moving it removes the extension.

No build and no dependency installation required.

Site allowlist

By default the extension runs on every page it can reach. Once domains are added in the settings, it only stays active on those and their subdomains. An entry of example.com, for instance, allows example.com and video.example.com, but not badexample.com.

Both a bare domain and a full URL are accepted — only the normalized hostname is stored.

Privacy and network requests

  • Settings, shortcuts and statistics are stored locally through chrome.storage.local.
  • The extension requests <all_urls> because it has to find HTML5 video across arbitrary sites and inside nested frames.
  • SponsorBlock is off by default. Once enabled, the current YouTube video ID and the selected categories are sent to the public sponsor.ajay.app API over HTTPS.
  • The Summary button never uploads the video itself: it copies the prompt and the link to the clipboard, then opens Gemini in a new tab.

Checking the code

Node.js is required:

node --test
node --check background.js
node --check content.js
node --check popup.js

Project structure

manifest.json        Manifest V3 extension config
background.js        per-tab state and background logic
content.js           video control and the YouTube integrations
domain-utils.js      hostname normalization and matching
i18n.js              RU/EN dictionaries and active locale resolution
_locales/            localized manifest name and description
popup.html           popup markup
popup.js             popup and settings logic
styles.css           themes and layout
tests/               standalone tests for the domain logic and the manifest
icons/               extension icons

License

Released under the MIT license.

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages