A lightweight, open-source browser extension that quietly removes Netflix playback interruptions.
Install it, forget it, and let it quietly remove interruptions.
- Skip Intro — Clicks "Skip Intro" as soon as it appears on screen.
- Skip Recap — Automatically bypasses previous episode summaries.
- Next Episode — Skips post-play credit countdowns to play the next episode immediately.
- Auto-Confirm "Still Watching" — Dismisses playback pause prompts during binge sessions.
- On-Screen HUD Toast — Sleek, subtle floating indicator when an action occurs (optional).
- Customizable Toggles — Turn individual automation features on or off anytime via the popup.
- Local Skip Counters — Tracks skip counts directly on your machine.
- Download Release: Grab
netflix-auto-skip-v1.1.4.zipfrom thedist/folder or GitHub Releases. - Extract ZIP: Extract the archive to a folder on your computer.
- Load Extension:
- Open your browser's extension page (e.g.
chrome://extensionsorvivaldi://extensions). - Enable Developer mode (top-right toggle).
- Click Load unpacked and select the extracted folder.
- Open your browser's extension page (e.g.
Open Netflix and start watching!
Designed for Chromium-based desktop browsers with Manifest V3 support. Netflix DOM changes can affect selector compatibility:
| Browser | Support | Installation Path |
|---|---|---|
| Google Chrome | ✅ | chrome://extensions |
| Vivaldi | ✅ | vivaldi://extensions |
| Microsoft Edge | ✅ | edge://extensions |
| Brave | ✅ | brave://extensions |
| Opera / Opera GX | ✅ | opera://extensions |
| Arc | ✅ | arc://extensions |
graph LR
A[Netflix Video Player] --> B[DOM Observer]
B --> C{Safe Guards}
C -->|Valid Skip Button| D[Atomic Click]
C -->|Player Controls / Menus| E[Ignored]
D --> F[HUD Toast & Local Stats]
- Targeted Selectors: Matches verified Netflix skip buttons while explicitly excluding player controls, audio/subtitle menus, and episode drawers.
- Episode State Machine: Uses the canonical watch-route identity, so transient title DOM changes do not reset one-shot actions.
- Low Overhead: A lightweight route check finds playback transitions, while the playback observer and 1-second fallback poll exist only while a recognized player-root video is active; mutation scans are batched with
requestAnimationFrame.
For detailed architectural specifications, state machine transitions, and design diagrams, see docs/ARCHITECTURE.md.
This repository has no runtime dependencies. Run the complete local verification pipeline with:
npm run buildThat command validates JavaScript syntax, runs production-code QA, checks release metadata, builds the deterministic ZIP, and verifies its contents.
Releases are tag-driven. To prepare the next version and synchronize the manifest, popup, documentation, and changelog surfaces:
npm run release:prepare -- X.Y.ZReview and complete the generated version section in CHANGELOG.md, then commit and push the matching tag (vX.Y.Z). GitHub Actions verifies the tag, runs the same build pipeline, attaches the ZIP, and publishes the release notes automatically.
See CONTRIBUTING.md for change guidelines and SECURITY.md for private vulnerability reporting.
- No telemetry or network backend: No telemetry, analytics, remote backend, or extension-initiated external network requests.
- Scoped Permission: Operates only on
https://www.netflix.com/*and requests thestoragepermission. - Transparent Storage:
- User toggle settings sync across your own logged-in browser profile via
chrome.storage.sync(with local fallback). - Skip counts stay strictly on your local device in
chrome.storage.local.
- User toggle settings sync across your own logged-in browser profile via
- Playback-only behavior: The content script inspects the Netflix playback-page DOM for supported controls. It does not intentionally collect or transmit credentials, cookies, payment details, or account data.
Distributed under the MIT License.
