A lightweight Chrome extension to control video playback speed across all websites. Hover over any video to get an inline floating controller — no toolbar clicking needed.
- 🎬 Inline Floating Controller — hover over any video to reveal a speed bar directly on the player
- 🖱️ Draggable Controller — drag it anywhere on screen so it never blocks important content
- ⚡ Preset Speeds — one-click presets: 0.5×, 1×, 1.25×, 1.5×, 2×, 3×
- ➕➖ Fine Step Control — step through speeds in increments (0.25 → 0.5 → 0.75 … 3×)
- 🔄 Reset Button — jump back to 1× from the popup instantly
- 💾 Persistent Settings — your speed is saved and applied automatically on every page load
- 🌐 Sync Across Devices — settings sync via Chrome Sync
- 📺 Works Everywhere — YouTube, Vimeo, Netflix, Twitch, and any site with a
<video>element - 🎭 Multiple Videos — each video on the page gets its own controller
- Clone or download this repository
- Open Chrome and navigate to
chrome://extensions/ - Enable Developer mode (toggle in the top-right corner)
- Click Load unpacked
- Select the folder containing this extension
- The extension icon will appear in your toolbar
- Go to
chrome://extensions/ - Find Video Speed Controller
- Click the reload (↻) icon
- Refresh any open tabs you want the changes to apply to
- Navigate to any page with a video
- Hover over the video — the speed controller appears at the bottom-left
- Click a preset (0.5×, 1×, 1.25×, 1.5×, 2×, 3×) or use − / + to step through speeds
- Drag the bar anywhere on screen if it overlaps content you need to see
- Move your cursor away from the video — the controller fades out automatically
- Click the extension icon in the Chrome toolbar
- Select a preset from the grid, or use − / + / Reset 1×
- The speed updates instantly on the active tab
| Preset | Step ladder |
|---|---|
| 0.5× | 0.25× |
| 1× | 0.5× |
| 1.25× | 0.75× |
| 1.5× | 1× |
| 2× | 1.25× |
| 3× | 1.5×, 1.75×, 2×, 2.5×, 3× |
The − and + buttons step through every value in the step ladder column.
video-speed-extension/
├── manifest.json # Extension configuration (Manifest V3)
├── background.js # Service worker — sets default speed on install
├── content.js # Injects floating controller on every page
├── popup.html # Toolbar popup UI
├── popup.js # Popup logic
├── icon.png # Extension icon
└── README.md # This file
- Storage —
chrome.storage.syncsaves your speed and syncs it across devices - Floating controller —
content.jsinjects a fixed-position bar for each<video>found on the page; aMutationObservercatches videos added dynamically (e.g. YouTube SPA navigation) - Overlay-safe hover detection — sites like YouTube place a large invisible div on top of
<video>, which blocks standardmouseenterevents. The controller uses a globalmousemovelistener that checks raw cursor coordinates against each video's bounding rect, bypassing any overlay - Drag — the bar stores its dragged position and stops auto-repositioning once the user has moved it
- Sync — the popup sends a
chrome.tabs.sendMessageto the content script so changes apply immediately without a page reload
- Popup — right-click the popup → Inspect
- Content script — open DevTools on any page → Console tab (filter by
__vsc) - Service Worker —
chrome://extensions/→ click "service worker" link under the extension
- Zip all extension files (exclude
.gitignore,README.md, and any dev files) - Visit Chrome Web Store Developer Dashboard
- Pay the one-time $5 developer registration fee (if not already done)
- Create a new item and upload the zip
- Fill in the store listing (description, screenshots, category)
- Submit for review
| Browser | Status |
|---|---|
| Chrome | ✅ Supported |
| Edge | ✅ Supported (Chromium-based) |
| Brave | ✅ Supported (Chromium-based) |
| Firefox | ❌ Not supported (different extension API) |
| Safari | ❌ Not supported |
- Keyboard shortcuts (
</>) for speed control without touching the mouse - Per-domain speed memory (e.g. YouTube always opens at 1.5×)
- Custom speed input — type any value like 1.8×
- Scroll wheel on the floating controller to adjust speed
- Picture-in-Picture button on the floating controller
- Speed badge on the extension toolbar icon
This project is licensed under the MIT License — see the LICENSE file for details.
Contributions are welcome!
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Commit your changes (
git commit -m 'Add your feature') - Push to the branch (
git push origin feature/your-feature) - Open a Pull Request
If you encounter any issues or have suggestions, please open an issue on GitHub.
Enjoy faster (or slower) video playback across the web! 🎬