Open-source project
younesaassila/ttv-lol-pro avatar
younesaassila/ttv-lol-pro

TTV LOL PRO: a Twitch livestream ad blocker that keeps ad segments out of the manifest

TTV LOL PRO removes most livestream ads from Twitch.

1,889 stars44 forksTypeScriptGPL-3.0

At a glance

What is it?
TTV LOL PRO is a TypeScript browser extension that removes most livestream ads from Twitch by routing playback through proxies, and it is a fork of TTV LOL with an improved blocking method, standard HTTP proxies, channel whitelisting and a stream status widget. It suits viewers of Twitch streams, and it does not touch banner ads or VODs.
Who is it for?
Adopt TTV LOL PRO if you watch Twitch streams and want the mid-roll ad segments removed, and you are willing to also run uBlock Origin and to point the extension at a proxy you trust. Do not expect it to remove banner ads or ads from VODs, since the project states plainly that it does not, and treat the proxy as part of your threat model rather than an implementation detail.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 142 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 7, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • younesaassila/ttv-lol-pro1,889 ★ · +2
Star history
Repository2026-10-202026-11-07
younesaassila/ttv-lol-pro1.9k1.9k

2 Stars in the last 18 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

What it removes, and what it explicitly leaves alone

TTV LOL PRO removes most livestream ads from Twitch, and the scope statement is unusually precise for an ad blocker. The project says it does not remove banner ads, nor does it remove ads from VODs, and it asks you to use uBlock Origin alongside it. Without uBlock Origin, the effectiveness of the extension cannot be guaranteed.

That last sentence is the honest framing of the whole project. This is not a standalone shield that replaces a general purpose blocker. It is a targeted tool for one specific ad format, and the project tells you to keep your general blocker on as well.

The targeting is what makes it useful. Stream ads on Twitch are delivered as segments inside the live HLS stream rather than as page elements, so a DOM filter never sees them. The approach here is to stop the ad segments from being requested in the first place, and the project describes this as an improved ad blocking method relative to the original TTV LOL that it forked from.

The audience is therefore narrow and obvious: people who watch Twitch streams and find the mid-roll ad segments disruptive. It is not a tool for a site owner, and it does not touch the advertising that appears around a channel page or inside a replay.

The proxy is the architecture, not an implementation detail

The listed changes in the fork point at the same mechanism from several angles: it uses an improved ad blocking method, it uses standard HTTP proxies, which improves proxy compatibility and your privacy, and it lets you use your own proxies.

That last capability is the one to think about carefully. A proxy in the path of a Twitch stream sees the manifest requests for that stream, which means the party operating the proxy is in a position to observe what you are watching. The project treats the ability to run your own proxy as a feature for exactly that reason, and the fact that standard HTTP proxies are used rather than something bespoke is presented as a privacy and compatibility improvement, because a standard proxy can be one you run, one you can inspect, or one served over a protocol you can verify.

The proxy infrastructure is credited separately from the extension. The extension is maintained by Younes Aassila, and the proxies are maintained by Marc Gómez, who is also listed as a contributor in the package manifest. So the project has two operational halves, and the second one is outside the extension repository.

The privacy stance is not only about the proxy. The repository carries a PRIVACY.md file, and the package manifest and repository layout show a normal extension structure with a src directory, a manifest per browser, and a .env.development.example for local configuration.

The dependencies explain what the extension actually parses

The runtime dependency list is short and it maps directly onto the mechanism. There is m3u8-parser, which is an HLS manifest parser, and that is the giveaway that the extension works on the stream manifest rather than on the page. There is bowser for browser detection, ip-address for handling proxy addresses, and async-mutex for locking, which fits an extension that has to avoid two of its own operations racing when a stream starts or a proxy rotates.

Taken together, the mechanism is understandable without the source being read line by line. The extension intercepts the playback request, obtains the stream manifest, identifies the advertising segments the way the improved method does, and then requests the remaining segments through a proxy so the ad segments are never fetched. When the user supplies their own proxy, the same pipeline runs with a different endpoint.

The manifest also shows how the project is built. It is TypeScript, bundled with Parcel, and there is a .parcelrc file at the root along with a tsconfig.json and a .prettierrc. The build produces a separate bundle per browser, which the scripts make explicit.

json
    "build:firefox": "parcel build --target webext-prod",
    "build:chromium": "parcel build --target webext-prod"

The prebuild step for each target copies the matching manifest into place, which is how a single source tree produces a Firefox build and a Chromium build with their different manifest files.

json
    "prebuild:firefox": "npm run clean && shx cp src/manifest.firefox.json src/manifest.json",
    "prebuild:chromium": "npm run clean && shx cp src/manifest.chromium.json src/manifest.json",

Installing: stores first, manual load as the fallback

The documented install routes are the Chrome Web Store and Firefox Add-ons, and both are listed with the project. The manual route exists for people who want a specific build or who cannot use the stores.

The manual path starts with downloading the version for your browser from the Assets section of the latest release, and then the steps differ per browser. For Chrome, the permanent install is to unzip the download, go to chrome://extensions, enable developer mode, and load the unpacked extension. For Firefox on all editions, the temporary path is about:debugging#/runtime/this-firefox and Load Temporary Add-on. For Firefox Developer Edition, the permanent path is to set xpinstall.signatures.required to false in about:config, then use the Extensions page, the gear menu, and Install Add-on From File.

Two warnings from the project deserve to be read before anything is installed. The first is that any other Twitch-specific ad blocker must be removed, and the project names the VAFT script as one of them, while uBlock Origin is recommended as the general purpose blocker. The second is to clear the browser cache after installing the extension, which matters because a cached manifest or cached segment can keep the old behaviour alive.

Running two blockers at once is the classic failure mode here. When two extensions both rewrite the same request, the result is not better blocking but a conflict that shows up as a broken stream, and the diagnosis usually takes longer than the installation.

Whitelisting, the stream widget, and the fork's other additions

Beyond the blocking change, the fork adds three things a user will notice in the interface.

The first is a stream status widget in the popup. The popup is where the extension shows its state, and the widget surfaces the status of the stream being watched, which is a small addition that answers the question the user actually has, which is whether the current session is being proxied and what state it is in.

The second is channel whitelisting. This is the escape hatch for the case where a channel should not be touched at all, which matters for creators who stream on their own channel, for embedded or special contexts, and for anyone who would rather see the ads on a particular channel than have the extension act on it.

The third is the ability to use your own proxies, which as noted above is the feature with the most operational weight.

The fork relationship is documented in the repository itself, and the older line is still reachable. A note points anyone who wants the previous major version to the v1 branch of the repository, so the two lines can be compared directly if you want to see what changed.

The project also ships a wiki, and it points people there first for questions, which is a reasonable convention for an extension with as many browser-specific details as this one has.

GPL-3.0, a v2 branch, and release gaps worth planning around

The package manifest declares the licence as GPL-3.0, and the repository carries a COPYING file, a CONTRIBUTING.md and a CODE_OF_CONDUCT.md. GPL-3.0 is a strong copyleft licence, and for an extension that people install and modify locally the practical effect on an end user is small. For anyone who plans to fork it and redistribute a build, the obligations on derived works are real, so read COPYING before you do that. None of this is legal advice.

The default branch is v2, and the project version in the manifest is 2.6.2. The release history shows v2.6.0 on 2025-11-30, v2.6.1 on 2025-12-16, and v2.6.2 on 2026-05-08. The last push to the repository was on 2026-06-19, and the repository is not archived.

Two things follow from that pattern. First, the extension is not dead, and the code has moved past the newest published tag by more than a month, so a user who wants the bleeding edge has to build from source or wait for the next tag, while a user who installs from the stores gets whatever the store carries. Second, the cadence is not predictable. Two patch releases three weeks apart, then a gap of five months to the next one, is the kind of history that makes pinning a version in your own tooling the sensible choice.

Since the extension is delivered through the Chrome Web Store and Firefox Add-ons, update timing for most users is decided by those stores rather than by the tags in this repository.

Editorial conclusion

Adopt TTV LOL PRO if you watch Twitch streams and want the mid-roll ad segments removed, and you are willing to also run uBlock Origin and to point the extension at a proxy you trust. Do not expect it to remove banner ads or ads from VODs, since the project states plainly that it does not, and treat the proxy as part of your threat model rather than an implementation detail. Before installing, remove any other Twitch-specific ad blocker, including the VAFT script, clear the browser cache, and check that the version you install from the release assets matches the browser you use, since the manual steps differ between Chrome, Firefox and Firefox Developer Edition.

Frequently asked questions

Does TTV LOL PRO remove ads from Twitch VODs and banner ads?

No. The project states that TTV LOL PRO does not remove banner ads, nor does it remove ads from VODs, and it asks you to use uBlock Origin alongside it, without which the effectiveness of the extension cannot be guaranteed.

How do I install TTV LOL PRO manually?

Download the version for your browser from the Assets section of the latest release, then unzip it and load the unpacked extension from chrome://extensions with developer mode enabled for Chrome, or load a temporary add-on from about:debugging#/runtime/this-firefox for Firefox.

Why do I need to remove other Twitch ad blockers first?

The project warns that any other Twitch-specific ad blocker must be removed, and names the VAFT script as one of them, because two extensions rewriting the same request conflict. uBlock Origin is recommended as the general purpose blocker to keep alongside TTV LOL PRO, and the browser cache should be cleared after installing.

Can I run my own proxy with TTV LOL PRO?

Yes, one of the listed changes in the fork is that it lets you use your own proxies, and it uses standard HTTP proxies, which the project presents as improving proxy compatibility and privacy. The proxies themselves are credited to a separate maintainer from the extension.

What is the difference between TTV LOL PRO and TTV LOL?

TTV LOL PRO is a fork of TTV LOL that uses an improved ad blocking method, uses standard HTTP proxies, adds a stream status widget to the popup, lets you whitelist channels and lets you use your own proxies. The earlier major version is still available on the v1 branch of the repository.

Official sources

  1. License: GPL-3.0
  2. Project website
  3. README
  4. Releases
  5. younesaassila/ttv-lol-pro on GitHub

Was this useful?