TwitchNoSub: a browser extension that patches Twitch's own player
An extension to watch sub only VOD on Twitch
At a glance
- What is it?
- Two manifests, one dependency, a patch script, and a release history that reads like a running commentary on how Twitch keeps changing its VOD plumbing.
- Who is it for?
- TwitchNoSub is a small project with a surprisingly hard job. It does not implement a video player or talk to the Twitch API in any deep way, it makes a small set of corrections to the platform's own player so that subscriber-only past broadcasts play in the page where every other Twitch feature already works, which is why the README can claim it supports every Twitch feature.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 51 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A patch job, not a player
The one-line description in the repository metadata says it all: an extension to show sub only VOD on Twitch. The README expands on it by saying you can watch any sub-only vod on Twitch, integrated in the website and support every twitch features.
That last clause is the design constraint. The extension does not build a parallel player or a separate viewing page, it corrects Twitch's existing player so the video plays in the normal page, with the normal interface. That is why the README lists browser support in terms of engines rather than versions, covering Chromium-based browsers including Chrome, Edge, Brave and Opera, plus Firefox, and why the topics include chrome-extension, firefox-addon, twitch-api and vods.
The dependency list in package.json is one line long: amazon-ivs-player at 1.34.1, which is Amazon's low latency streaming player library and the component Twitch's own web player is built from. So the extension inherits Twitch's player and corrects the requests around it, rather than reimplementing playback.
The scope has a limit worth stating plainly. It addresses access control on past broadcasts. It does not give you a subscription, and it does not affect live streams, which everyone can already watch. It also sits outside what Twitch's terms of service would want, and the README offers a warning section rather than any discussion of that, which is a choice of framing worth keeping in mind.
Two install paths that are not the same procedure
The installation instructions are short, and they diverge sharply between the two browser families because the packaging models differ.
For Chromium-based browsers you take the latest release from the releases section or clone the repo, then install manually. The steps given are to go into extension management at chrome://extensions, make sure Developer mode is enabled, and hit Load unpacked extension and select the unzipped folder. There is an optional path for Chromium proper rather than Chrome: pack the extension yourself into a crx file so you do not need to keep a directory on disk.
chromium --pack-extension=TwitchNoSubThat command runs in the parent directory of the extension, and you drop the created crx file onto the extensions page with Developer mode enabled. The README notes this will not work with developer mode left on, which is a small but real detail.
For Firefox the process is simpler because there is a signed artifact. You download the latest xpi file from the releases section, drag and drop it onto Firefox, and click Add in the confirmation popup. No developer mode, no unpacked directory.
So if you are on Firefox you consume a build someone packaged, and if you are on Chrome you are assembling the extension yourself from source. That difference matters when something breaks, since a Chrome user can read the code they are running.
What the three releases actually fixed
The release history is short and unusually informative, because each entry is one commit with a plain description of the breakage.
Version 0.9.1, published 2025-02-13, did four things: added support with other third party scripts, fixed a fetch TypeError in patch, resized an icon, and switched to a local amazon worker to support Firefox guidelines. The third-party script support is the interesting one. If you already run userscripts that touch Twitch pages, an extension that fights them is useless, so 0.9.1 made them coexist. The Firefox guidelines change is a compliance fix, moving off a remote worker to satisfy store rules.
Version 0.9.2, from 2025-06-07, added support for h265 VODs, added support for the Twitch player inside iframes, and removed a preview card restriction. That third item is telling. A preview card is a gate in front of the video, and lifting it was necessary for the extension to do its job.
Version 0.9.3, published 2025-11-12, is a single fix: retrieve the correct vodId with the usher v2 url. Usher is Twitch's manifest service for video delivery, and the v2 URL format changed, so previously working links stopped resolving.
Read together, those three releases are a maintenance history against an upstream that keeps moving. The last push was on 2026-08-16, so work continued after that release, and the repository is not archived.
The tree explains the patching strategy
The repository layout is compact and tells you more than the README does about how the thing works. There is a src directory for the extension source, a tools directory for build and patch tooling, an assets directory, and two manifests: manifest.json for Chromium and firefox-manifest.json for Firefox. There is also a userscript directory, which is the fallback path if you would rather not install an extension at all.
The package.json defines a single script, which reveals the mechanism: a patch step that runs a Node script from the tools directory. So the project is built around modifying something rather than authoring it, most plausibly the Twitch player bundle that the extension then serves in place of the original. That is a patch and not a fork, and it is why releases are frequent and small: when Twitch ships a change, the fix is adjusting where in the bundle to intervene.
Two details in the metadata are worth noting. The package version field reads 1.0.0 while the released extension versions are 0.9.x, which tells you the package version and the extension release version are tracked separately, so package.json is not your source of truth for what is installed. And the license field inside package.json says ISC, while the repository LICENSE file and the GitHub metadata both say Apache-2.0. If you are vendoring this code, the Apache-2.0 line in the repository is the one to go by.
What the README does not cover
There are no hidden gaps here, but a few things a reader might want are simply absent from the README.
There is no description of what the patch actually changes in the player. No explanation of how the subscriber-only check is circumvented, no notes on which Twitch surfaces are affected, and no statement about whether clips work alongside VODs. There is also no troubleshooting section, no compatibility matrix mapping extension versions to Twitch changes, and no mention of what permissions the extension requests or what data it sends anywhere. For an extension that runs inside your browser on an authenticated session, that permission story is the first thing worth checking for yourself in manifest.json before installing.
The project does carry 29 open issues, and the README closes with an explicit statement that the extension is still a work in progress and asks for reports if there is a problem. Combined with 2,809 stars and 148 forks, that is a reasonable ratio for a utility people depend on but do not often contribute to.
There is no documentation site, no changelog file beyond the release entries, and no build documentation. For most users that is fine, since the packaged release is the intended artifact and installation is four clicks.
Whether this is a reasonable thing to install
Judging a project like this comes down to three questions: does it do one narrow thing, does it do it without asking you to trust it blindly, and will someone notice when it stops working.
On the first, yes. There is one job, the code is small enough to read, and the single dependency is Amazon's own player library rather than a framework.
On the second, partly. Being able to read the source is a real advantage over a closed extension doing the same thing, and the fact that a userscript alternative exists in the repository means the least intrusive path is available. But the README does not document permissions, so you would need to open manifest.json yourself to know what the extension may touch, and the patch mechanism means the code that runs is derived from Twitch's own bundle rather than only the source in src.
On the third, yes. Twenty-nine open issues, a work in progress warning in the README, and a release history of honest one line fixes all point to a maintainer who ships when things break rather than going quiet. The repository was pushed to on 2026-08-16 and is not archived.
Practically, install the packaged release from the releases section, prefer Firefox if you want the signed artifact, and if you are on Chrome build from source so you can read what runs. Then expect it to break whenever Twitch changes its video delivery, because that has now happened three times in the release history.
Editorial conclusion
TwitchNoSub is a small project with a surprisingly hard job. It does not implement a video player or talk to the Twitch API in any deep way, it makes a small set of corrections to the platform's own player so that subscriber-only past broadcasts play in the page where every other Twitch feature already works, which is why the README can claim it supports every Twitch feature. The architecture follows from that, with a patch step in tools, source in src, and separate manifests for Chromium and Firefox because the two stores review and package differently. The honest limitation is upstream dependence. Releases from 0.9.1 through 0.9.3 fix a third-party script breakage, add h265 VOD support, and repair a change in the usher v2 URL, which tells you the extension is chasing a moving target and will break again when Twitch changes something else. Install the packaged release rather than the repository, keep the version current, and expect to report the next breakage rather than work around it.
Frequently asked questions
How to watch Twitch vods for free?
TwitchNoSub is a browser extension whose stated purpose is to let you watch subscriber-only past broadcasts in the normal Twitch page, keeping the standard player and features. It covers Chromium-based browsers and Firefox, ships as a release artifact for both, and is unrelated to live streams, which are already free to watch.
How do I install TwitchNoSub on Chrome and Firefox?
On Firefox, download the latest xpi from the releases section, drag it onto the browser and click Add. On Chrome, take the latest release or clone the repo, open chrome://extensions, enable Developer mode, and use Load unpacked extension to select the unzipped folder. Chromium users can instead pack it with chromium --pack-extension=TwitchNoSub and drop the crx onto the extensions page.
What browser permissions does the TwitchNoSub extension need?
The README does not document them, so you would need to read manifest.json and firefox-manifest.json yourself before installing. The extension runs in your browser on an authenticated Twitch session, which is why the permission list is worth checking rather than assuming. A userscript alternative is present in the repository for people who prefer a less intrusive path.
Why does TwitchNoSub stop working from time to time?
Because it patches Twitch's own player rather than shipping its own, so upstream changes break it. Recent releases fixed exactly that class of problem: 0.9.2 added h265 VOD support and lifted a preview card restriction, and 0.9.3 fixed retrieval of the correct vodId from the usher v2 URL. The last release was 0.9.3 on 2025-11-12.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/besuper-twitchnosub)