Self-hosted service
dmunozv04/iSponsorBlockTV avatar
dmunozv04/iSponsorBlockTV

iSponsorBlockTV: sponsor skipping for the apps that can't run extensions

SponsorBlock client for all YouTube TV clients.

6,180 stars265 forksPythonGPL-3.0

At a glance

What is it?
iSponsorBlockTV is a self-hosted Python application that connects to the YouTube TV app on your television or console and automatically skips sponsor and intro segments using the SponsorBlock API, with optional ad muting and Skip Ad pressing. It ships as bytecode-only Docker images and pairs with twelve device families.
Who is it for?
Run iSponsorBlockTV if you watch YouTube through a TV or console app and want crowd-sourced segment skipping there, and you have a always-on machine or Docker host to run it on. Skip it if you only watch in a browser, where the SponsorBlock extension already does this job.
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 10 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

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

Editorial analysis

SponsorBlock for the screen that cannot run extensions

SponsorBlock's segment database is useful wherever YouTube plays, but browser extensions only exist where there is a browser. iSponsorBlockTV fills the living-room gap: a self-hosted application that connects to your YouTube TV app and automatically skips segments like sponsors or intros using the SponsorBlock API at sponsor.ajay.app. Beyond skipping, it can auto mute and press the Skip Ad button the moment it becomes available on YouTube ads. Everything runs on your own hardware, the project is GPL-3.0 licensed Python, and the device never installs anything; the television keeps its stock app. The trade is architectural: a small service runs continuously somewhere in your house, paired to the app, acting as the remote control's invisible co-pilot.

Twelve device families, two asterisks

The compatibility table reads like a tour of the living room: Apple TV, Samsung TVs on Tizen, LG TVs on WebOS, Android TV, Chromecast, Google TV, Roku, Fire TV, Chromecast with Google TV, Nintendo Switch, Xbox One and Series, and PlayStation 4 and 5 all show as working. The asterisks matter as much as the checkmarks. On Apple TV, ad muting will not work when audio is sent over AirPlay to another speaker. Shorts are not fully supported due to limitations on YouTube's side, with a workaround documented: select Disconnect on the warning shown, or long press the thumbnail and play from the menu. The table invites pull requests for untested devices, so it functions as living documentation rather than a static claim.

Pairing, discovery, and a format change that broke every code

Deployment is a computer with network access, and notably not necessarily the same network as the device: only access to youtube.com is required for ongoing operation. Auto discovery, using SSDP and zeroconf under the hood, does require being on the same network during setup, and a device can alternatively be added manually with the YouTube TV code found in the app's settings page. The pairing layer is also where the project's current turbulence lives. A warning at the top of the README states that YouTube appears to have changed the screen ID code format and is revoking all existing codes, so every device must be paired again, with instructions in the wiki. Release history shows this area getting sustained attention, with v2.9.0 in May 2026 titled Pairing improved.

A Textual configurator and a Chromecast-shaped dependency list

The requirements file maps the feature set. pyytlounge handles interaction with the YouTube Lounge protocol the devices speak, and pychromecast appears for Chromecast-specific control. Textual, with textual-slider, powers what the README calls the amazing new graphical configurator, a terminal UI for setup, while rich and rich_click polish the command line. aiohttp, async-cache and yarl support the asynchronous API calls, ssdp and zeroconf the discovery, and xmltodict the protocol wrangling. Python 3.11 or newer is required, packaging is hatchling with a hook that reads dependencies straight from requirements.txt, and ruff enforces style at line-length 100. For a home automation project, the stack is unusually modern, entirely async and terminally fashionable.

A Docker image that ships bytecode, not source

The documented container deployment is a single service definition:

yaml
services:
  iSponsorBlockTV:
    image: ghcr.io/dmunozv04/isponsorblocktv
    container_name: iSponsorBlockTV
    restart: unless-stopped
    volumes:
      - /PATH_TO_YOUR_DATA_DIR:/app/data

The Dockerfile behind that image is a three-stage build on python:3.13-alpine with an unusual final step: the source is compiled with compileall, the .py files are deleted, and the container's entrypoint runs python3 -u main.pyc, shipping only bytecode. Dependencies get the same treatment, and pip, wheel and the gcc toolchain are uninstalled or removed after their work is done, leaving a small image with a reduced reading surface. Environment flags like iSPBTV_docker and iSPBTV_data_dir mark the container context, and a config.json.template at the repository root shows the shape of manual configuration.

An SSRF fix named in the release title

Release notes here are unusually honest about security. Version 2.11.0, released 2026-08-21, is titled fixing a blind SSRF on DIAL auto discovery, server-side request forgery in the discovery path being exactly the class of bug a network-listening tool can harbor, and the fix names the vulnerability rather than burying it. Version 2.10.0, from 2026-07-13, added support for alternative SponsorBlock API URLs, meaning users can point the client at a different segment database instance instead of the default one. The cadence, three feature releases across May, July and August 2026 with the last push on 2026-09-19, matches the reality of software that chases a platform, YouTube, actively hostile to automation.

Home Assistant integration and the self-hosting niche

The project's classifier list includes Topic :: Home Automation, and the ecosystem confirms it: a third-party Home Assistant add-on packages iSponsorBlockTV for the smart home crowd, linked from the README alongside the Docker images on ghcr.io and Docker Hub. Repository hygiene holds up too, with pre-commit configuration, DeepSource analysis and markdownlint keeping the docs tidy, and a standard fork, branch, pull request contribution flow with a contrib.rocks contributor graph. The niche is precise and durable: browser users have their extension, and everyone staring at a YouTube app on a television has this. GPL-3.0 keeps it free software, and the wiki, not the README, is where operational knowledge lives.

Editorial conclusion

Run iSponsorBlockTV if you watch YouTube through a TV or console app and want crowd-sourced segment skipping there, and you have a always-on machine or Docker host to run it on. Skip it if you only watch in a browser, where the SponsorBlock extension already does this job. Verify first that your device is in the compatibility table and note its asterisks, that ad muting breaks over AirPlay audio and that YouTube's screen ID format change forces a re-pairing, then follow the wiki's installation page rather than improvising.

Frequently asked questions

How does iSponsorBlockTV work?

It runs self-hosted on a computer with access to youtube.com and connects to the YouTube TV app on your device. Using the SponsorBlock API it automatically skips segments like sponsors and intros, and it can also auto mute ads and press the Skip Ad button when it appears.

How do you install iSponsorBlockTV?

Installation instructions are maintained in the project's wiki on GitHub, under the Installation page. Prebuilt Docker images are published at ghcr.io/dmunozv04/isponsorblocktv and on Docker Hub.

How do you set up iSponsorBlockTV?

Run it on a computer with network access, then add the device using auto discovery on the same network during setup, or manually with the YouTube TV code found in the app's settings page. Note that YouTube changed its screen ID code format, so previously paired devices need re-pairing.

Is there an ad blocker for YouTube on TVs?

Yes, iSponsorBlockTV is one: a self-hosted SponsorBlock client that works with YouTube TV apps on Apple TV, Samsung and LG televisions, Android TV, Chromecast, Roku, Fire TV, and game consoles. It skips sponsored segments and can mute or skip YouTube ads.

Official sources

  1. dmunozv04/iSponsorBlockTV on GitHub
  2. Issues
  3. License: GPL-3.0
  4. README
  5. Releases
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.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/dmunozv04-isponsorblocktv.svg)](https://hysenlabs.com/projects/dmunozv04-isponsorblocktv)