See what's being skipped
24h, 7d, and 30d views show what changed, what was skipped, and how much watch time came back.
24h skip mix
31h saved
1,284 skipped
Open-source. Self-hosted. GPLv3.
Pair every smart TV in the house. Sponsors and ads skip automatically, anything unskippable gets muted, all from one calm dashboard.
At a glance
Skips sponsors, ads, intros, outros, and self-promo across every paired TV. Mutes the ads it can't skip.
Install to first paired device takes about five minutes.
Self-hosted on your LAN. No cloud account, no tracking, no SaaS in the loop.
GPL-licensed and free. Community project, no SaaS bill to upsell to.
Built for the operator
SponsorShield turns the SponsorBlock engine that lives in JSON files and SSH sessions into a calm dashboard. Pair devices, tune skip categories, dial in per-room timing.

Why SponsorShield
The core engine is powerful, but it lives in JSON files and SSH sessions. SponsorShield gives every part of it a face, and surfaces problems before you notice them on the TV.
Pairing console
Auto-discover smart TVs on your network, or type the 12-digit code from the YouTube app on your TV. No SSH, no editing JSON.
24h, 7d, and 30d views show what changed, what was skipped, and how much watch time came back.
24h skip mix
31h saved
1,284 skipped
A rotated token or a YouTube schema change shows up as a dashboard banner, not a black screen mid-episode. Re-pair in two taps.
YouTube schema changed
Engine paused skips on Bedroom Apple TV.
Tune each room without touching JSON: name every TV, drag its timing offset into sync, and pause skipping on one device while the rest keep going.
Ownership
Runs beside the Engine you already use. One local container, two processes, single-admin auth from environment variables.
Keeps config.json as source of truth. Dashboard edits go through the Engine, which writes the same file it always has and reloads live. No restart.
No cloud. No tracking. GPLv3.
Architecture: the Dashboard (Next.js) and the Engine (Python) run as two processes in one local container on your network. The Dashboard talks to the Engine over a unix socket; the Engine reaches your four TVs over the YouTube Lounge API, the only hop that leaves your LAN. config.json stays the source of truth: the Engine writes it and hot-reloads live, with no restart.
Pull the SponsorShield image to your home server, NAS, or Pi. Engine and dashboard run as two processes inside, talking over a Unix socket.
$ docker compose up -dOpen the dashboard. Scan your LAN: devices running the YouTube TV app reply with metadata. Or type the 12-digit code from the YouTube app on the TV.
Living Room Roku · 192.168.1.42 Master Bed Firestick · 192.168.1.58
Pick which categories to skip, set per-device timing offsets if you need them, then close the tab. Re-open it next week to see how much TV time you got back.
31h 12m saved this week
Same config.json, same skips, two ways to drive it. Here is how they compare.
Pair a new smart TV
Command-line
Run the CLI in pairing mode, paste the 12-digit code into the terminal
With SponsorShield
Auto-discover on LAN, or type the 12-digit TV code into the pairing dialog
Adjust skip categories
Command-line
Edit config.json, restart the daemon, hope nothing typo'd
With SponsorShield
Toggle each category. Saves and hot-reloads automatically.
Tune audio sync per device
Command-line
Math out the offset, edit the device entry by hand
With SponsorShield
Drag the slider in the device drawer. −2.0 to +2.0 seconds.
Know when something's broken
Command-line
Notice the TV is showing sponsors again, grep the logs
With SponsorShield
Banner in the dashboard the moment the token revokes
See what's been skipped
Command-line
Tail the log file, eyeball the timestamps
With SponsorShield
24h, 7d, 30d charts, sortable activity log, category breakdown
Self-hosted, set up in minutes, and your smart TV skips every YouTube sponsor, and skips or mutes every ad, on its own from then on.