├── .gitignore ├── .github ├── pull_request_template.md └── ISSUE_TEMPLATE │ └── shorts-not-being-filtered.md ├── README.md ├── LICENSE.md ├── CONTRIBUTING.md └── list.txt /.gitignore: -------------------------------------------------------------------------------- 1 | # OS related files 2 | .DS_Store 3 | .directory 4 | Thumbs.db 5 | 6 | # Editor files 7 | /.idea/ 8 | /.vscode/ -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hide YouTube Shorts List 2 | 3 | A [uBlock Origin](https://github.com/gorhill/uBlock) filter list to hide all traces of YouTube shorts videos. 4 | 5 | This filter list might work with other content blockers, but I haven't looked into that (yet). 6 | 7 | Copy the link below, go to uBlock Origin > Dashboard > Filter lists, scroll to the bottom, and paste the link underneath the 'Import...' heading: 8 | - [https://raw.githubusercontent.com/gijsdev/ublock-hide-yt-shorts/master/list.txt](ubo:subscribe?location=https://raw.githubusercontent.com/gijsdev/ublock-hide-yt-shorts/master/list.txt) 9 | 10 | ## Contributing 11 | See [CONTRIBUTING.md](CONTRIBUTING.md) 12 | 13 | ## License 14 | 15 | See [LICENSE.md](LICENSE.md) 16 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/shorts-not-being-filtered.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Shorts not being filtered 3 | about: Report a Shorts element that's not being filtered. 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Desktop or Mobile:** 11 | Are you on a desktop device or a mobile device? 12 | 13 | **Browser:** 14 | What browser are you using? (Firefox, Brave, etc.) 15 | 16 | **Extension:** 17 | In what extension are you importing this list? (uBlock, Adblock Plus, etc.) 18 | 19 | **URL of the page you saw Shorts:** 20 | Paste the URL where the Shorts element(s) were not being filtered. 21 | 22 | **Screenshots** 23 | Add a screenshot of the Shorts element. 24 | 25 | **Additional context** 26 | Add any other context about the problem here. 27 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Gijsdev 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | I only want to state a couple of rules when submitting a pull request: 4 | 5 | ## Only include YouTube Shorts 6 | The function is in the repository name. 7 | 8 | ## Never change the metadata on top of the list 9 | *Metadata = Title, Version, Last modified etc. on the top of the list.* 10 | 11 | This will only be done by one of the maintainers. You may or may not be the only pull request accepted between a version bump for example. 12 | 13 | ## Always include the full subdomain 14 | Don't start your filter with `youtube.com` but with either `www.youtube.com` or `m.youtube.com`. 15 | This is to prevent hiding elements on other subdomains like `studio.youtube.com`. 16 | 17 | ## Don't make your selector more complicated than it needs to be 18 | Don't keep unnecessary `.style-scope` classes in your filter, for example. 19 | 20 | ## Always try to include "Shorts" in your filter 21 | Always try to select an element which has the name or text "Shorts" in it. I might add Reels to the list, but I'm cautious to not interfere with other elements on the page. 22 | 23 | ## Point to the specific elements 24 | It's not always immediately clear what elements you're talking about. Try to include a screenshot of the elements or a link to a specific page where you will find the elements. -------------------------------------------------------------------------------- /list.txt: -------------------------------------------------------------------------------- 1 | ! Title: Hide YouTube Shorts 2 | ! Description: Hide all traces of YouTube shorts videos on YouTube 3 | ! Version: 2025.8.31 4 | ! Last modified: 2025-08-31 22:38 5 | ! Expires: 2 weeks (update frequency) 6 | ! Homepage: https://github.com/gijsdev/ublock-hide-yt-shorts 7 | ! License: https://github.com/gijsdev/ublock-hide-yt-shorts/blob/master/LICENSE.md 8 | 9 | ! Remove empty spaces in grid 10 | www.youtube.com##ytd-rich-grid-row,#contents.ytd-rich-grid-row:style(display: contents !important) 11 | 12 | ! Hide all videos containing the phrase "#shorts" 13 | www.youtube.com##ytd-grid-video-renderer:has(#video-title:has-text(/(^| )#Shorts?( |$)/i)) 14 | www.youtube.com##ytd-rich-item-renderer:has(#video-title:has-text(/(^| )#Shorts?( |$)/i)) 15 | 16 | ! Hide all videos with the shorts indicator on the thumbnail 17 | www.youtube.com##ytd-grid-video-renderer:has([overlay-style="SHORTS"]) 18 | www.youtube.com##ytd-rich-item-renderer:has([overlay-style="SHORTS"]) 19 | www.youtube.com##ytd-video-renderer:has([overlay-style="SHORTS"]) 20 | www.youtube.com##ytd-item-section-renderer.ytd-section-list-renderer[page-subtype="subscriptions"]:has(ytd-video-renderer:has([overlay-style="SHORTS"])) 21 | 22 | ! Hide shorts button in sidebar 23 | www.youtube.com##ytd-guide-entry-renderer:has(yt-formatted-string:has-text(/^Shorts$/i)) 24 | ! Tablet resolution 25 | www.youtube.com##ytd-mini-guide-entry-renderer:has(.title:has-text(/^Shorts$/i)) 26 | 27 | ! Hide shorts sections except on history page 28 | www.youtube.com##:matches-path(/^(?!\/feed\/history).*$/)ytd-rich-section-renderer:has(#title:has-text(/(^| )Shorts( |$)/i)) 29 | www.youtube.com##:matches-path(/^(?!\/feed\/history).*$/)ytd-reel-shelf-renderer:has(.ytd-reel-shelf-renderer:has-text(/(^| )Shorts( |$)/i)) 30 | 31 | ! Hide shorts tab on channel pages` 32 | ! Old style 33 | www.youtube.com##tp-yt-paper-tab:has(.tp-yt-paper-tab:has-text(Shorts)) 34 | ! New style (2023-10) 35 | www.youtube.com##yt-tab-shape:has-text(/^Shorts$/) 36 | 37 | ! Hide short remixes in video descriptions and in suggestions beside the comments 38 | www.youtube.com##ytd-reel-shelf-renderer:has(#title:has-text(/(^| )Shorts.?Remix.*$/i)) 39 | 40 | ! Hide shorts category on homepage and search pages 41 | www.youtube.com##yt-chip-cloud-chip-renderer:has(yt-formatted-string:has-text(/^Shorts$/i)) 42 | 43 | ! Hide shorts sections on search page 44 | www.youtube.com##.shelf-header-layout-wiz__title:has-text(/(^| )Shorts( |$)/i):upward(grid-shelf-view-model) 45 | www.youtube.com##.yt-shelf-header-layout__title:has-text(/(^| )Shorts( |$)/i):upward(grid-shelf-view-model) 46 | 47 | !!! MOBILE !!! 48 | 49 | ! Hide all videos in home feed containing the phrase "#shorts" 50 | www.youtube.com##ytm-rich-item-renderer:has(#video-title:has-text(/(^| )#Shorts?( |$)/i)) 51 | 52 | ! Hide all videos in subscription feed containing the phrase "#shorts" 53 | m.youtube.com##ytm-item-section-renderer:has(#video-title:has-text(/(^| )#Shorts?( |$)/i)) 54 | 55 | ! Hide shorts button in the bottom navigation bar 56 | m.youtube.com##ytm-pivot-bar-item-renderer:has(.pivot-shorts) 57 | 58 | ! Hide all videos with the shorts indicator on the thumbnail 59 | m.youtube.com##ytm-video-with-context-renderer:has([data-style="SHORTS"]) 60 | 61 | ! Hide shorts sections except on history page 62 | m.youtube.com##:matches-path(/^(?!\/feed\/history).*$/)ytm-rich-section-renderer:has(.yt-core-attributed-string:has-text(/(^| )Shorts( |$)/i)) 63 | m.youtube.com##:matches-path(/^(?!\/feed\/history).*$/)ytm-reel-shelf-renderer.item:has(.reel-shelf-title-wrapper .yt-core-attributed-string:has-text(/(^| )Shorts( |$)/i)) 64 | 65 | ! Hide shorts tab on channel pages 66 | ! Old style 67 | m.youtube.com##.single-column-browse-results-tabs>a:has-text(Shorts) 68 | ! New style (2023-10) 69 | m.youtube.com##yt-tab-shape:has-text(/^Shorts$/) 70 | 71 | ! Hide short remixes in video descriptions and in suggestions below the player 72 | m.youtube.com##ytm-reel-shelf-renderer:has(.reel-shelf-title-wrapper .yt-core-attributed-string:has-text(/(^| )Shorts.?Remix.*$/i)) 73 | 74 | ! Hide shorts category on homepage 75 | m.youtube.com##ytm-chip-cloud-chip-renderer:has(.yt-core-attributed-string:has-text(/^Shorts$/i)) 76 | 77 | ! Hide shorts sections on search page 78 | m.youtube.com##ytm-reel-shelf-renderer:has(ytm-shorts-lockup-view-model) --------------------------------------------------------------------------------