Twitch DVR Player
A browser extension that replaces the standard Twitch video player with a custom DVR player built on video.js v8 + VHS (@videojs/http-streaming).
Features
- Live DVR — pause and rewind live streams, then resume from the same position
- VOD playback — watch past broadcasts on
/videos/<id>pages with resume position - Channel switching — navigate between live channels without a page reload
- VOD ↔ live navigation — switch between a VOD and a live stream
- Quality selector — pick from available resolutions (persisted across loads)
- Live UI seek bar — DVR-style seek bar with seek-to-live button
- VOD position resume — picks up where you left off across page loads
Installation
Install from the Chrome Web Store (use the Add to Chrome button at the top of this page), or build from source:
From source
git clone https://github.com/AshleyJackson/twitch-dvr.git
cd twitch-dvr
bun install
bun run build
Then load the build/ directory as an unpacked extension in Chrome:
- Open
chrome://extensions - Enable Developer mode
- Click Load unpacked
- Select the
build/directory
Keyboard Shortcuts
| Key | Action |
|---|---|
Space |
Play / Pause |
F |
Toggle fullscreen |
← / J |
Seek back 10 seconds |
→ / L |
Seek forward 30 seconds |
, |
Decrease playback speed |
. |
Increase playback speed |
↑ |
Volume up 5% |
↓ |
Volume down 5% |
M |
Toggle mute |
C |
Toggle chat overlay (fullscreen only) |
T |
Toggle theater mode |
Documentation
- Architecture — data flow and module responsibilities
- video.js Knowledge Base — setup, sizing, CSS, VHS hooks, gotchas
- Module Reference — module-by-module reference
- Development Guide — build pipeline and debugging
- Privacy Policy
Tech Stack
- Runtime: Chrome Manifest V3, video.js v8 + VHS
- Language: TypeScript
- Bundling: esbuild (content script), Vite/SvelteKit (popup)
- Validation: Zod (all external data: GQL, cookies, localStorage, HLS playlists)
- Testing: Vitest + jsdom
- Package Manager: Bun
License
MIT — see LICENSE
Privacy
See the Privacy Policy.