MCPcopy Index your code
hub / github.com/igrigorik/videospeed

github.com/igrigorik/videospeed @v0.10.2 sqlite

repository ↗ · DeepWiki ↗ · release v0.10.2 ↗
384 symbols 1,220 edges 84 files 203 documented · 53%
README

Install from Chrome Web Store

Chrome Web Store Chrome Web Store Users Chrome Web Store Users

Video Speed Controller gives you fine-grained control over any HTML5 video or audio element, on any site.

The science of accelerated playback

TL;DR -- faster playback translates to better engagement and retention.

The average adult reads at 250-300 words per minute (wpm). Speech averages ~150 wpm; slide presentations often closer to 100 wpm. Given the choice, most viewers speed up playback to ~1.3-1.5x to close the gap. Accelerated viewing keeps attention longer -- faster delivery means higher engagement. With practice, many settle at 2x or above and find it uncomfortable to return to 1x.

HTML5 media elements expose a native playback rate API, but most players hide or artificially limit it. Speed adjustments should be effortless and frequent: we don't read at a fixed pace, and we shouldn't watch at one either.

Features

  • Universal - works on any site with HTML5 media: YouTube, Netflix, Coursera, podcasts, local files, etc.
  • Video and audio - controls both <video> and <audio> elements.
  • Fine-grained speed - 0.07x to 16x in configurable increments.
  • Per-site speed rules - set a default playback speed for specific domains (e.g., always 2x on lecture sites).
  • Per-site disable - turn off the controller on sites where you don't want it.
  • Remember speed - optionally persist your last speed across sessions and tabs.
  • Speed fightback - automatically re-applies your chosen speed when a site's player tries to reset it.
  • Draggable overlay - reposition the on-video speed indicator anywhere you like.
  • Fully customizable shortcuts - remap every key, add modifier combos (Ctrl, Shift, Alt), create multiple preferred-speed toggles.
  • Custom controller CSS - style or reposition the overlay with your own CSS rules.

Default keyboard shortcuts

  • S - decrease playback speed
  • D - increase playback speed
  • R - reset playback speed to 1.0x
  • Z - rewind video by 10 seconds
  • X - advance video by 10 seconds
  • G - toggle between current and preferred speed
  • V - show/hide the controller
  • M - set a marker at current position
  • J - jump back to the previously set marker

All shortcuts are fully customizable in the extension's settings page. You can reassign keys, add modifier combinations, and define multiple preferred-speed shortcuts with different values for quick toggling. Click Add New in settings to create additional bindings. Refresh the page after making changes for them to take effect.

License

(MIT License) - Copyright (c) 2014 Ilya Grigorik

Core symbols most depended-on inside this repo

log
called by 200
src/utils/logger.js
load
called by 184
src/core/settings.js
debug
called by 100
src/utils/logger.js
adjustSpeed
called by 68
src/core/action-handler.js
remove
called by 68
src/core/storage-manager.js
save
called by 63
src/core/settings.js
error
called by 48
src/utils/logger.js
runAction
called by 36
src/core/action-handler.js

Shape

Method 200
Function 140
Class 44

Languages

TypeScript100%

Modules by API surface

src/ui/options/options.js32 symbols
src/core/action-handler.js19 symbols
src/content/inject.js19 symbols
src/utils/logger.js17 symbols
src/utils/event-manager.js16 symbols
src/core/video-controller.js15 symbols
src/utils/debug-helper.js14 symbols
src/site-handlers/index.js14 symbols
src/observers/mutation-observer.js14 symbols
src/site-handlers/base-handler.js12 symbols
src/observers/media-observer.js12 symbols
src/core/state-manager.js11 symbols

Dependencies from manifests, versioned

@eslint/js10.0.1 · 1×
archiver7.0.1 · 1×
esbuild0.27.4 · 1×
eslint10.1.0 · 1×
fs-extra11.2.0 · 1×
globals17.4.0 · 1×
husky9.1.7 · 1×
jsdom29.0.1 · 1×
lint-staged16.4.0 · 1×
prettier3.1.0 · 1×
puppeteer24.10.2 · 1×
vitest4.1.1 · 1×

For agents

$ claude mcp add videospeed \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact