Skip to content

Instantly share code, notes, and snippets.

@tadwohlrapp
Last active October 17, 2025 18:23
Show Gist options
  • Save tadwohlrapp/722bbe97cb20bb34da8df73675415cae to your computer and use it in GitHub Desktop.
Save tadwohlrapp/722bbe97cb20bb34da8df73675415cae to your computer and use it in GitHub Desktop.
Filters for uBlock Origin I use to block annoying elements on YouTube
! ============================
! YouTube Top Nav Bar
! ============================
! always show normal YouTube logo, never that distracting doodleyoodle
www.youtube.com##ytd-topbar-logo-renderer > a > ytd-yoodle-renderer
www.youtube.com##ytd-topbar-logo-renderer > a > div:remove-attr(hidden)
! hide "Search with your voice" button (YouTube users have no voice)
www.youtube.com###masthead #center #voice-search-button
! hide "+Create" button
www.youtube.com###masthead #end #buttons > ytd-button-renderer
! rather experimental: fix weird height issue with top navigation bar after page-navigation + remove annoying frosted glass background effect
www.youtube.com#$##frosted-glass.with-chipbar.ytd-app {background: var(--yt-spec-base-background)!important;height: var(--ytd-toolbar-height)!important;}
www.youtube.com#$#ytd-feed-filter-chip-bar-renderer[frosted-glass-mode=with-chipbar] #chips-wrapper.ytd-feed-filter-chip-bar-renderer, ytd-masthead[frosted-glass-mode=without-chipbar] #background.ytd-masthead {background: var(--yt-spec-base-background)!important;}
! ============================
! YouTube Left Main Menu
! ============================
! hide "Shorts" menu item
www.youtube.com##ytd-guide-renderer ytd-guide-entry-renderer:has(a[title="Shorts"]), ytd-mini-guide-entry-renderer[aria-label="Shorts"]
! hide "Explore" menu section
www.youtube.com##ytd-guide-section-renderer:has(#guide-section-title:has-text(/Explore/))
! hide "More from YouTube" menu section
www.youtube.com##ytd-guide-section-renderer:has(#guide-section-title:has-text(/More from YouTube/))
! ============================
! YouTube Home Page
! ============================
! hide disruptive sections like "Shorts" or "Top News" on Home Page
www.youtube.com##[page-subtype="home"] ytd-rich-section-renderer:has(#dismissible)
! hide "How is this recommendation?" tooltip below videos on Home Page
www.youtube.com##[page-subtype="home"] ytd-rich-item-renderer #attached-survey
! hide videos I already watched in full (>=70%) on Home Page
www.youtube.com##[page-subtype="home"] ytd-rich-item-renderer:has(:is(#progress, yt-lockup-view-model .ytThumbnailOverlayProgressBarHostWatchedProgressBarSegment):matches-attr(style="/width: ([789][0-9]|100)%/"))
! hide old videos (1 year and older) on Home Page
www.youtube.com##[page-subtype="home"] ytd-rich-item-renderer:has(:is(.inline-metadata-item.ytd-video-meta-block, yt-lockup-view-model yt-content-metadata-view-model span):has-text(/ years? ago$/))
! hide videos with less than 2000 views on Home Page
www.youtube.com##[page-subtype="home"] ytd-rich-item-renderer:has(:is(.inline-metadata-item.ytd-video-meta-block, yt-lockup-view-model yt-content-metadata-view-model span):has-text(/^(\d{1,3} |No |1(\.\d)?K )views?$/))
! hide mixes on Home Page
www.youtube.com##[page-subtype="home"] ytd-rich-item-renderer:has(yt-collections-stack:has-text(/[\w\W]{1}/))
! hide ALL live streams on Home Page
# www.youtube.com##[page-subtype="home"] ytd-rich-item-renderer:has(:is(.badge[aria-label="LIVE"], .badge-shape-wiz--thumbnail-live))
! hide small live streams (under 100 watching) on Home Page
www.youtube.com##[page-subtype="home"] ytd-rich-item-renderer:has(:is(.inline-metadata-item.ytd-video-meta-block, yt-lockup-view-model yt-content-metadata-view-model span):has-text(/^\d{1,2} watching?$/))
! hide all recorded live streams turned into videos ("Streamed 8 hours ago" etc.) on Home Page
www.youtube.com##[page-subtype="home"] ytd-rich-item-renderer:has(:is(.inline-metadata-item.ytd-video-meta-block, yt-lockup-view-model yt-content-metadata-view-model span):has-text(/^Streamed/))
! hide garbage videos (less than 80% like ratio) on Home Page
! (used in conjunction with with https://github.com/elliotwaite/thumbnail-rating-bar-for-youtube)
www.youtube.com##[page-subtype="home"] ytd-rich-item-renderer:has(.ytrb-percentage:has-text(/^(?:[0-9]|[1-7][0-9])(\.[0-9]{1,2})?%$/))
! hide super short videos (shorter than 1 minute) on Home Page
# www.youtube.com##[page-subtype="home"] ytd-rich-item-renderer:has(ytd-thumbnail-overlay-time-status-renderer:has-text(/^0:/))
! hide super long videos (1 hour and longer) on Home Page
# www.youtube.com##[page-subtype="home"] ytd-rich-item-renderer:has(ytd-thumbnail-overlay-time-status-renderer:has-text(/^\d+:\d\d:/))
! hide "Members only" videos on Home Page
www.youtube.com##[page-subtype="home"] ytd-rich-item-renderer:has(.badge-style-type-members-only)
! hide "Premium" videos on Home Page
www.youtube.com##[page-subtype="home"] ytd-rich-item-renderer:has(.badge[aria-label="Premium"])
! hide "Pay to watch" videos on Home Page
www.youtube.com##[page-subtype="home"] ytd-rich-item-renderer:has(.badge[aria-label="Pay to watch"])
! hide "Upcoming" videos on Home Page
www.youtube.com##[page-subtype="home"] ytd-rich-item-renderer:has(ytd-thumbnail-overlay-time-status-renderer[overlay-style="UPCOMING"])
! hide big yoodle banner on Home Page
www.youtube.com##[page-subtype="home"] #big-yoodle
! hide "how did you like this video" survey crap on Home Page
www.youtube.com##[page-subtype="home"] ytd-rich-section-renderer:has(ytd-inline-survey-renderer)
! remove badges like "Fundraiser" from videos on Home Page
! (using :remove() here because of clashes with thumbnail-rating-bar)
www.youtube.com##[page-subtype="home"] yt-lockup-view-model yt-content-metadata-view-model > div:nth-child(3):remove()
! set responsive grid layout on Home Page and fix item margins
www.youtube.com##[page-subtype="home"] ytd-rich-grid-renderer.ytd-two-column-browse-results-renderer:matches-media((max-width: 1500px)):style(--ytd-rich-grid-items-per-row: 3 !important;)
www.youtube.com##[page-subtype="home"] ytd-rich-grid-renderer.ytd-two-column-browse-results-renderer:matches-media((min-width: 1500px) and (max-width: 2000px)):style(--ytd-rich-grid-items-per-row: 4 !important;)
www.youtube.com##[page-subtype="home"] ytd-rich-grid-renderer.ytd-two-column-browse-results-renderer:matches-media((min-width: 2000px) and (max-width: 2500px)):style(--ytd-rich-grid-items-per-row: 5 !important;)
www.youtube.com##[page-subtype="home"] ytd-rich-grid-renderer.ytd-two-column-browse-results-renderer:matches-media((min-width: 2500px)):style(--ytd-rich-grid-items-per-row: 6 !important;)
www.youtube.com##[page-subtype="home"] ytd-rich-grid-renderer > #contents > ytd-rich-item-renderer[rendered-from-rich-grid]:remove-attr(is-in-first-column)
! ============================
! YouTube Subscriptions Page
! ============================
! hide disruptive sections like "Shorts" on Subscriptions Page
www.youtube.com##[page-subtype="subscriptions"] ytd-rich-section-renderer:has(#dismissible)
! hide upcoming videos on Subscriptions Page
www.youtube.com##[page-subtype="subscriptions"] ytd-rich-item-renderer:has(ytd-thumbnail-overlay-time-status-renderer[overlay-style="UPCOMING"])
! hide "Members only" videos on Subscriptions Page
www.youtube.com##[page-subtype="subscriptions"] ytd-rich-item-renderer:has(.badge-style-type-members-only)
! hide "Premium" videos on Subscriptions Page
www.youtube.com##[page-subtype="subscriptions"] ytd-rich-item-renderer:has(.badge[aria-label="Premium"])
! hide videos I already watched in full (>=70%) on Subscriptions Page
www.youtube.com##[page-subtype="subscriptions"] ytd-rich-item-renderer:has(:is(#progress, .ytThumbnailOverlayProgressBarHostWatchedProgressBarSegment):matches-attr(style="/width: ([789][0-9]|100)%/"))
! hide all recorded live streams turned into videos ("Streamed 8 hours ago" etc.) on Subscriptions Page
www.youtube.com##[page-subtype="subscriptions"] ytd-rich-item-renderer:has(:is(.inline-metadata-item.ytd-video-meta-block, yt-lockup-view-model yt-content-metadata-view-model span):has-text(/^Streamed/))
! remove badges like "Fundraiser" from videos on Subscriptions Page
! (using :remove() here because of clashes with thumbnail-rating-bar)
www.youtube.com##[page-subtype="subscriptions"] yt-lockup-view-model yt-content-metadata-view-model > div:nth-child(3):remove()
! set responsive grid layout on Subscriptions Page and fix item margins
www.youtube.com##[page-subtype="subscriptions"] ytd-rich-grid-renderer.ytd-two-column-browse-results-renderer:matches-media((max-width: 1500px)):style(--ytd-rich-grid-items-per-row: 3 !important;)
www.youtube.com##[page-subtype="subscriptions"] ytd-rich-grid-renderer.ytd-two-column-browse-results-renderer:matches-media((min-width: 1500px) and (max-width: 2000px)):style(--ytd-rich-grid-items-per-row: 4 !important;)
www.youtube.com##[page-subtype="subscriptions"] ytd-rich-grid-renderer.ytd-two-column-browse-results-renderer:matches-media((min-width: 2000px) and (max-width: 2500px)):style(--ytd-rich-grid-items-per-row: 5 !important;)
www.youtube.com##[page-subtype="subscriptions"] ytd-rich-grid-renderer.ytd-two-column-browse-results-renderer:matches-media((min-width: 2500px)):style(--ytd-rich-grid-items-per-row: 6 !important;)
www.youtube.com##[page-subtype="subscriptions"] ytd-rich-grid-renderer > #contents > ytd-rich-item-renderer[rendered-from-rich-grid]:remove-attr(is-in-first-column)
! ============================
! YouTube Search Results
! ============================
! hide garbage videos (less than 80% like ratio) in Search Results
! (used in conjunction with with https://github.com/elliotwaite/thumbnail-rating-bar-for-youtube)
www.youtube.com##ytd-search ytd-video-renderer:has(.ytrb-percentage:has-text(/^(?:[0-9]|[1-7][0-9])(\.[0-9]{1,2})?%$/))
! hide shorts (disguised as regular videos) in Search Results
www.youtube.com##ytd-search ytd-video-renderer:has(badge-shape[aria-label="Shorts"])
! hide shorts shelf in Search Results
www.youtube.com##ytd-search ytd-reel-shelf-renderer
www.youtube.com##ytd-search grid-shelf-view-model:has(.shortsLockupViewModelHost)
! hide fluff ("People also watched", "For you", "Previously watched" etc.) in Search Results
www.youtube.com##ytd-search ytd-shelf-renderer[thumbnail-style]
www.youtube.com##ytd-search #contents > ytd-horizontal-card-list-renderer
! hide videos I already watched in full (>=70%) in Search Results
www.youtube.com##ytd-search ytd-video-renderer:has(:is(#progress, .ytThumbnailOverlayProgressBarHostWatchedProgressBarSegment):matches-attr(style="/width: ([789][0-9]|100)%/"))
! hide movies you can rent or "buy" in Search Results
www.youtube.com##ytd-search ytd-movie-renderer
! hide right sidebar with ads for streaming services in Search Results
www.youtube.com##ytd-search ytd-secondary-search-container-renderer:has(ytd-universal-watch-card-renderer)
! ============================
! YouTube Channel Page
! ============================
! Channel Page: Header & Tabs Menu
! hide big top banner on channel header
www.youtube.com##[page-subtype="channels"] #page-header-banner
! hide links ("example.com and 3 more links") on channel header
www.youtube.com##[page-subtype="channels"] yt-attribution-view-model
! hide "Join" button on channel header
www.youtube.com##[page-subtype="channels"] yt-flexible-actions-view-model .yt-flexible-actions-view-model-wiz__action:has(button-view-model:has-text(/^Join/))
! hide "Subscribe +" button on channel header
www.youtube.com##[page-subtype="channels"] yt-flexible-actions-view-model .yt-flexible-actions-view-model-wiz__action:has(yt-subscribe-plus-button-view-model)
www.youtube.com##[page-subtype="channels"] yt-flexible-actions-view-model .ytFlexibleActionsViewModelAction:has(>yt-subscribe-plus-button-view-model)
! fix existing "Subscribed" button (restore deleted button text)
www.youtube.com##[page-subtype="channels"] yt-flexible-actions-view-model yt-subscribe-button-view-model.yt-subscribe-button-view-model-wiz:style(width:auto !important;)
www.youtube.com##[page-subtype="channels"] yt-flexible-actions-view-model button.yt-spec-button-shape-next--icon-leading-trailing-no-text .yt-spec-button-shape-next__secondary-icon::before:style(display: block; content: "Subscribed"; margin-right: 6px;)
www.youtube.com##[page-subtype="channels"] yt-flexible-actions-view-model button.yt-spec-button-shape-next--icon-leading-trailing-no-text .yt-spec-button-shape-next__secondary-icon:style(display: flex; align-items: center; width: inherit;)
! hide "Shorts" tab in tab-menu on channel page
# www.youtube.com##[page-subtype="channels"] yt-tab-group-shape yt-tab-shape[tab-title="Shorts"]
! hide "Live" tab in tab-menu on channel page
# www.youtube.com##[page-subtype="channels"] yt-tab-group-shape yt-tab-shape[tab-title="Live"]
! hide "Posts" tab in tab-menu on channel page
# www.youtube.com##[page-subtype="channels"] yt-tab-group-shape yt-tab-shape[tab-title="Posts"]
! hide "Store" tab in tab-menu on channel page
# www.youtube.com##[page-subtype="channels"] yt-tab-group-shape yt-tab-shape[tab-title="Store"]
! quick CSS fix for that little bar below the tab-menu when some tabs are hidden
# www.youtube.com##[page-subtype="channels"] yt-tab-group-shape .yt-tab-group-shape-wiz__slider
# www.youtube.com##[page-subtype="channels"] yt-tab-group-shape .yt-tab-shape-wiz__tab-bar--tab-bar-selected:style(height: 2px !important;background-color: var(--yt-spec-text-primary) !important;)
! Channel Page: Page Content
! hide "Shorts" section on channel home page
www.youtube.com##[page-subtype="channels"] ytd-section-list-renderer > #contents > ytd-item-section-renderer:has(ytd-reel-shelf-renderer)
! hide "Our Members" section on channel home page
www.youtube.com##[page-subtype="channels"] ytd-section-list-renderer > #contents > ytd-item-section-renderer:has(ytd-recognition-shelf-renderer)
! hide "For You" section on channel home page
# www.youtube.com##[page-subtype="channels"] ytd-section-list-renderer > #contents > ytd-item-section-renderer:has(h2:has-text(/For You/))
! hide videos I already watched in full (>=70%) on channel home page
www.youtube.com##[page-subtype="channels"] ytd-grid-video-renderer:has(:is(#progress, .ytThumbnailOverlayProgressBarHostWatchedProgressBarSegment):matches-attr(style="/width: ([789][0-9]|100)%/"))
! hide videos I already watched in full (>=70%) on channel videos page
www.youtube.com##[page-subtype="channels"] ytd-rich-item-renderer:has(:is(#progress, .ytThumbnailOverlayProgressBarHostWatchedProgressBarSegment):matches-attr(style="/width: ([789][0-9]|100)%/"))
! hide "Premium" videos on channel videos page
www.youtube.com##[page-subtype="channels"] ytd-rich-item-renderer:has(.badge[aria-label="Premium"])
! hide "Members only" videos on channel videos page
www.youtube.com##[page-subtype="channels"] ytd-rich-item-renderer:has(.badge-style-type-members-only)
! ============================
! YouTube Video Page
! ============================
! Video Page: Video Player
! reenable the possibility to scroll down the page when the player is in fullscreen
! Source: https://www.reddit.com/r/uBlockOrigin/comments/1n13if0/youtube_with_player_in_fullscreen_unable_to/
www.youtube.com##[deprecate-fullerscreen-ui]:remove-attr(deprecate-fullerscreen-ui)
! hide "1080p Premium HD" (which is nothing more than an ad for premium) in video quality settings menu
www.youtube.com##.ytp-quality-menu .ytp-menuitem:has(.ytp-premium-label)
! hide video overlay on endcards
www.youtube.com##ytd-player .ytp-ce-element.ytp-ce-element-show.ytp-ce-video
! hide playlist overlay on endcards
www.youtube.com##ytd-player .ytp-ce-element.ytp-ce-element-show.ytp-ce-playlist
! hide website overlay on endcards
www.youtube.com##ytd-player .ytp-ce-element.ytp-ce-element-show.ytp-ce-website
! hide channel overlay on endcards
www.youtube.com##ytd-player .ytp-ce-element.ytp-ce-element-show.ytp-ce-channel
! automatically click on "I understand and wish to proceed" button on "The following content may contain ..." warnings
! trusted-click-element will ONLY work within "trusted" filters (https://github.com/gorhill/ublock/wiki/Advanced-settings#trustedlistprefixes)!
www.youtube.com##+js(trusted-click-element, div[id^="player-container"] + #error-screen #info:has(#reason) button[aria-label*="proceed"])
! Video Page: Title and Description
! prevent stats (such as likes and views) from live-updating
! example: https://www.reddit.com/r/youtube/comments/15c7ndi/youtube_has_added_live_updating_view_counts/
||youtube.com/youtubei/v1/updated_metadata
! hide "smartimation" animations
! example: https://www.reddit.com/r/youtube/comments/15ri8fp/the_subscribe_button_now_plays_an_animation_when/
www.youtube.com##yt-smartimation > :not(.smartimation__content)
www.youtube.com##yt-animated-action > :not(.animated-action__content-with-background, .ytAnimatedActionContentWithBackground)
www.youtube.com##:is(.smartimation__content, .animated-action__content-with-background, .ytAnimatedActionContentWithBackground) > :has(> lottie-component)
! disable live reaction overlays
! example: https://www.reddit.com/r/youtube/comments/13886xr/how_can_i_disable_the_new_live_emoji_reactions/
www.youtube.com##yt-reaction-control-panel-view-model, yt-reaction-control-panel-overlay-view-model
! hide "Purchase" button below video
www.youtube.com##ytd-video-owner-renderer > #purchase-button
! hide "Join" button below video
www.youtube.com##ytd-video-owner-renderer > #sponsor-button
! fix existing "Subscribed" button (restore deleted button text)
www.youtube.com#$#ytd-subscribe-button-renderer[subscribe-button-invisible][style^="width"],ytd-subscribe-button-renderer[subscribe-button-invisible] yt-subscribe-button-view-model[style^="width"] { width: auto!important; }
www.youtube.com#$#ytd-subscribe-button-renderer[subscribe-button-invisible] button.yt-spec-button-shape-next--icon-leading-trailing-no-text .yt-spec-button-shape-next__secondary-icon::before {display: block; content: "Subscribed"; margin-right: 6px;}
www.youtube.com#$#ytd-subscribe-button-renderer[subscribe-button-invisible] button.yt-spec-button-shape-next--icon-leading-trailing-no-text .yt-spec-button-shape-next__secondary-icon {display: flex; align-items: center; width: inherit;}
! hide "Download" button (just an ad for premium) below video
www.youtube.com###below ytd-download-button-renderer
www.youtube.com##ytd-menu-popup-renderer ytd-menu-service-item-download-renderer
! hide "Thanks" button below video
www.youtube.com###below yt-button-view-model:has(button[aria-label="Thanks"])
www.youtube.com##ytd-menu-popup-renderer ytd-menu-service-item-renderer:has(yt-formatted-string:has-text(/^Thanks/))
! hide "Clip" button below video
www.youtube.com###below yt-button-view-model:has(button[aria-label="Clip"])
www.youtube.com##ytd-menu-popup-renderer ytd-menu-service-item-renderer:has(yt-formatted-string:has-text(/^Clip/))
! hide fundraiser badge below video title
www.youtube.com###below ytd-badge-supported-renderer
! hide that light blue "Clarify box" below video player, above video title
www.youtube.com###below > #clarify-box
! hide that "... is a public broadcast service" box between video and description
www.youtube.com###below #middle-row:has(ytd-info-panel-content-renderer)
! hide merch shelf in description
www.youtube.com###below ytd-structured-description-content-renderer #merch-shelf
! hide "Chapters" in description
www.youtube.com###below ytd-structured-description-content-renderer #items ytd-horizontal-card-list-renderer[modern-chapters]
! hide "Shorts remixing this video" in description
www.youtube.com###below ytd-structured-description-content-renderer #items ytd-reel-shelf-renderer
! hide "Music" in description
www.youtube.com###below ytd-structured-description-content-renderer #items ytd-horizontal-card-list-renderer[has-video-attribute-view-models]
! hide "Transcription" in description
www.youtube.com###below ytd-structured-description-content-renderer #items ytd-video-description-transcript-section-renderer
! hide that creator infobox with links at the end of the description box
www.youtube.com###below ytd-structured-description-content-renderer #items ytd-video-description-infocards-section-renderer
! hide "Live Chat Replay" box which sometimes appears next to the description
www.youtube.com###below #teaser-carousel
! hide merch shelf below description
www.youtube.com###below ytd-merch-shelf-renderer
! hide shitty AI summary nobody ever asked for below description
www.youtube.com###below [has-video-summary]
! hide all "Age-restricted video" notices below description, above comment section (https://support.google.com/youtube/answer/2802167)
www.youtube.com##ytd-metadata-row-container-renderer > #always-shown > ytd-metadata-row-renderer:has(a[href*="community_guidelines"],a[href*="age_restrictions"])
! hide all "Rating" notices below video description, above comment section (https://support.google.com/youtube/answer/146397)
www.youtube.com##ytd-metadata-row-container-renderer > #always-shown > ytd-metadata-row-renderer:has(a[href*="answer/146397"])
! hide that fucking "Experiencing interruptions?" toast message because of AdBlock
www.youtube.com##tp-yt-paper-toast#toast:has(yt-button-renderer#action-button a[href*=blocker])
! Video Page: Sidebar / Related videos
! hide donation box for fundraiser videos
www.youtube.com###secondary #donation-shelf
! hide Shorts in video sidebar
www.youtube.com###columns #secondary ytd-compact-video-renderer:has(a[href^="/shorts/"])
! hide that weird channel card which sometimes appears somewhere in video sidebar
www.youtube.com###columns #secondary ytd-channel-renderer
! hide garbage videos (less than 80% like ratio) in video sidebar
! (used in conjunction with with https://github.com/elliotwaite/thumbnail-rating-bar-for-youtube)
www.youtube.com##ytd-watch-flexy yt-lockup-view-model:has(.ytrb-percentage:has-text(/^(?:[0-9]|[1-7][0-9])(\.[0-9]{1,2})?%$/))
! hide "Members first" videos in video sidebar
www.youtube.com##ytd-watch-flexy yt-lockup-view-model:has(.badge-shape-wiz--commerce)
! hide old videos (1 year and older) in video sidebar
www.youtube.com##ytd-watch-flexy yt-lockup-view-model:has(yt-content-metadata-view-model span:has-text(/^\d+ years? ago$/))
! hide super short videos (shorter than 1 minute) in video sidebar
www.youtube.com##ytd-watch-flexy yt-lockup-view-model:has(yt-thumbnail-overlay-badge-view-model:has-text(/^0:/))
! hide super long videos (1 hour and longer) in video sidebar
www.youtube.com##ytd-watch-flexy yt-lockup-view-model:has(yt-thumbnail-overlay-badge-view-model:has-text(/^\d+:\d\d:/))
! hide live streams in video sidebar
www.youtube.com##ytd-watch-flexy yt-lockup-view-model:has(.badge-shape-wiz--thumbnail-live)
! hide videos I already watched in full (>=70%) in video sidebar
www.youtube.com##ytd-watch-flexy yt-lockup-view-model:has(.ytThumbnailOverlayProgressBarHostWatchedProgressBarSegment:matches-attr(style="/width: ([789][0-9]|100)%/"))
! hide playlists in video sidebar
www.youtube.com##ytd-watch-flexy yt-lockup-view-model:has(yt-content-metadata-view-model:has-text(/^Playlist/))
! hide videos with less than 2000 views in video sidebar
www.youtube.com##ytd-watch-flexy yt-lockup-view-model:has(yt-content-metadata-view-model span:has-text(/^(\d{1,3} |No |1(\.\d)?K )views?$/))
! remove badges like "Fundraiser" from videos in video sidebar
! (using :remove() here because of clashes with thumbnail-rating-bar)
www.youtube.com##ytd-watch-flexy yt-lockup-view-model yt-content-metadata-view-model > div:nth-child(3):remove()
@tadwohlrapp
Copy link
Author

@Zaer-x Yeah, that really annoys me too! I haven't looked into it in detail yet, but it would probably need something beyond what an adblock filter can handle. Most likely a userscript or browser extension, as you’d have to check each video individually to see if it’s already been watched. I may tackle this at some point, but unfortunately I don't have a solution at the moment.

@rraallvv
Copy link

rraallvv commented Sep 9, 2025

It seems like it doesn't work for Upcoming videos anymore

@Styphoryte
Copy link

Styphoryte commented Oct 10, 2025

Im glad I found this list somehow! so many different options exept for being able to get rid of already watched videos at the end of a video. Is there a way to add this Screenshot 2025-08-19 121740

So many different plugins offers this, Enhancer for YouTube, YouTube Tweaks plugin, (also available as a Stylus plugin), Unhook Remove Recommended & Shorts has a bunch of hiding options as well like hiding promotional banners and other little things as well.

@rraallvv Not sure if one of these plugins I mentioned may help you as well. I saw an option in unhook for "Hide more from YouTube" that might be the one you mean?

@rraallvv
Copy link

rraallvv commented Oct 10, 2025

www.youtube.com##[page-subtype="subscriptions"] ytd-rich-item-renderer:has-text(Upcoming)
www.youtube.com##[page-subtype="subscriptions"] ytd-rich-item-renderer:has-text(Premiere)

@Styphoryte I got rid of all the YouTube filters in uBlock and I'm using those... they seem to be doing the trick, at least for now.

@AdKiller
Copy link

I was looking for a way to remove the stupid "Members Only" videos. I am never ever going to pay for that. so I came across your list. but couldn't achieve that. so I tried to make my own filter:

! Hides "Members only" videos from the sidebar on YouTube watch pages
www.youtube.com##ytd-watch-flexy yt-lockup-view-model:has(.yt-badge-shape__text--has-multiple-badges-in-row.yt-badge-shape__text:has-text(Members only))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment