FilterTube is a browser extension that gives you control over your YouTube feed. Filter videos, shorts, channels, and comments using keywords and smart rulesβall processing happens privately on your device.
- Block by Keyword: Hide videos with specific words in the title.
- Block Channels: Paste Channel Name,
@handle,UCID, or evenc/CustomURLβFilterTube normalizes them all. - Hide Shorts: Optional toggle to remove every Shorts shelf and player hand-off.
- Smart Matching: Choose partial or whole-word matching to stay strict or flexible.
- Shelf & Playlist Cleanup: Refilters shelves and playlists so blocked creators stay gone even after navigation.
- Import / Export: One-click backups keep filters synced across browsers with schema-v3 JSON.
- Handle Enrichment Queue: Newly imported channels are resolved slowly in the background to avoid hammering YouTube.
- Kids Mode Profiles: Maintain a separate, safer rule set for YouTube Kids without mixing it with the main profile.
- Hide All Comments: Remove the comments section entirely for a cleaner interface.
- Filter Comments: Hide specific comments containing unwanted keywords.
- Release Notes Banner: Non-intrusive toast in YouTube surfaces highlights new capabilities.
- βWhatβs Newβ Dashboard Tab: Full changelog with deep links so you can jump straight to the feature that shipped.
- Time Saved: See how much time you've saved by blocking distractions.
- Daily Tracker: Count of videos hidden today.
- Zero Flash: Filters content before it renders on screen.
- 100% Private: No data leaves your browser. No analytics. No tracking.
- Help Page (Dashboard): In the new tab UI, a dedicated Help section explains every feature, import/export flow, and troubleshooting tip.
The easiest way to install FilterTube is via our official website: π Install FilterTube.in (Available for Chrome, Firefox, Edge, Brave, Opera)
Prefer a direct store link? Pick your browser:
- Chrome / Brave: Chrome Web Store listing
- Firefox: Firefox Add-ons listing
- Edge: Microsoft Edge Add-ons listing
If you want to contribute or build from source:
-
Clone the repository
git clone https://github.com/varshneydevansh/FilterTube.git cd FilterTube npm install -
Run in Developer Mode
- Chrome/Edge/Brave:
npm run dev:chrome - Firefox:
npm run dev:firefox
- Chrome/Edge/Brave:
-
Load Extension
- Chrome: Go to
chrome://extensions, enable Developer mode, click Load unpacked, and select theFilterTubefolder. - Firefox: Go to
about:debugging, click This Firefox, then Load Temporary Add-on, and selectmanifest.json.
- Chrome: Go to
- Set up: Connect your Android device to your computer via USB.
- Install: Use the Firefox build zip produced by
npm run build:firefox. - Debug: Follow Mozilla's guide to debug extensions on Android using
web-extor remote debugging.
- Click the FilterTube icon in your browser toolbar
- Enter keywords to filter (comma-separated)
- Enter channel names, @handles, or channel/IDs to filter (comma-separated)
- Click "Save" to apply filters
- Go to the channel's page on YouTube
- Copy the channel identifier from the URL:
https://www.youtube.com/@HandleNameβ Use@HandleNamehttps://www.youtube.com/channel/UCxxxxxxxxβ UseUCxxxxxxxxorchannel/UCxxxxxxxx
- Enter it in the Channels filter field
- Click the FilterTube icon
- Toggle "Hide all comments" to completely hide comments
- Or select "Filter comments with keywords/channels" to hide only matching comments
FilterTube filters unwanted content before it appears on your screen, giving you a clean YouTube experience.
Under the hood, FilterTube also maintains lightweight identity caches:
channelMap:@handle/c/<slug>/user/<slug>βUC...videoChannelMap:videoIdβUC...
On both YouTube Main and YouTube Kids, FilterTube can often learn the canonical channel ID without extra page fetches by harvesting ownership data from the same JSON payloads YouTube already loads (notably ytInitialPlayerResponse and /youtubei/v1/player). Once learned, Shorts and Watch surfaces can resolve identity instantly on the next encounter.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β YouTube loads video data β
β β β
β FilterTube intercepts the data BEFORE it renders β
β β β
β Checks against your keywords & channels β
β β β
β ββββββββββββββββ ββββββββββββββββ β
β β Matches your β β HIDDEN β Doesn't matchβ β SHOWN β
β β filters β β your filters β β
β ββββββββββββββββ ββββββββββββββββ β
β β
β Result: Clean YouTube feed with only content you want β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Lightning Fast - Filters content before YouTube renders it, so you never see unwanted videos flash on screen
100% Private - Everything happens in your browser. No data is sent to external servers.
Comprehensive - Filters videos, shorts, playlists, channels, comments, and more across all YouTube pages
Reliable - Uses a two-layer system: intercepts YouTube's data first, then monitors the page as backup
- Semantic ML Filtering: AI-powered filtering that understands video context, not just keywords
- Kids Mode: PIN-protected safe environment with whitelisted channels only
- Smart Sync: Automatic linking of channel @handles and IDs for better blocking
We believe in privacy by design.
- Storage: To save your settings locally.
- Active Tab: To scan the YouTube page you are viewing.
- No External Requests: FilterTube does not talk to any servers other than YouTube (for the content you requested).
FilterTube uses a robust hybrid blocking mechanism for YouTube Shorts.
Current behavior (v3.1.7): Shorts blocking is often near-instant because FilterTube learns videoId β UC... mappings from intercepted YouTube JSON and persists them. This makes Shorts behave much more like regular videos on Home/Search.
[User Clicks "Block"]
|
v
+-------------------------------+
| 1. Resolve UC ID (fast path) |
| - DOM /channel/UC... OR |
| - videoChannelMap cache OR |
| - Main-world JSON harvest |
+-------------------------------+
|
v
+-----------------------+
| 2. Block & Hide |
+-----------------------+
- Robust Verification: We resolve to a canonical
UC...channel ID whenever possible so blocking applies across Shorts + long-form + posts. - Zero Leakage: By resolving the canonical ID, we ensure that blocking a Short also blocks the channel's long-form videos and posts.
- Smart Layouts: Automatically adjusts the grid to prevent awkward blank spaces.
Note
What if the channel ID isn't available yet?
In rare cases where the card does not expose a UC... link and the mapping is not yet learned from intercepted JSON, FilterTube falls back to a slower network-based resolution (e.g., fetching a watch/shorts page) to guarantee correctness.
Found a bug or have a feature request? Open an issue on GitHub.
This project is licensed under the MIT License - see the LICENSE file for details.
See CHANGELOG.md for a detailed history of changes and improvements.
YouTube's recommendation algorithms can sometimes surface unwanted content. FilterTube gives you control over what appears in your feed, allowing for a more focused and pleasant viewing experience without distractions or unwanted content.
It all started with this thread on Google's support forum: When a parent said that he is helpless and his kid is just kept crying and screaming because of the content on YouTubeKids, and he asked me if I can create a tool to block videos by keyword or tag. And when Later YouTube Forum maintaner deleted mine and other parents comments and locked the thread, I decided to create FilterTube.
https://support.google.com/youtubekids/thread/54509605/how-to-block-videos-by-keyword-or-tag?hl=en
Perfect for:
- Parents who want to protect their children from inappropriate content
- Students who need to stay focused while researching
- Anyone who wants a distraction-free YouTube experience
# Install dependencies
npm install
# Develop for Chrome/Edge/Brave/Opera
npm run dev:chrome
# Develop for Firefox
npm run dev:firefox
# Build packages for distribution
npm run build # All browsers
npm run build:chrome # Chrome only
npm run build:firefox # Firefox onlyFor detailed technical documentation, see docs/ARCHITECTURE.md and docs/TECHNICAL.md.
FilterTube runs code in two JavaScript contexts on YouTube:
The following scripts are loaded as content scripts (see manifest*.json for the authoritative load order):
js/shared/identity.jsβ Shared channel identity helpers exposed aswindow.FilterTubeIdentity.js/content/menu.jsβ Menu styles + menu DOM helpers.js/content/dom_helpers.jsβ Small DOM helpers used by fallback logic.js/content/dom_extractors.jsβ DOM extraction helpers (video IDs, durations, card lookup).js/content/dom_fallback.jsβ DOM fallback filtering layer.js/content/block_channel.jsβ 3-dot menu observer/entry-point (detect dropdown + locate clicked card).js/content_bridge.jsβ Settings sync, bridge messaging, menu rendering/click handling, and blocking orchestration.
js/seed.jsβ Hook/override entry points forytInitialData,fetch, and XHR.js/injector.jsβ Coordinator + main-world search helpers (e.g.,ytInitialDatalookups).js/filter_logic.jsβ Filtering engine that removes blocked content from YouTubeβs JSON before render.