Remove all short videos from your homepage, subscription feed, search and watch page on YouTube.
// ==UserScript== // @name YouTube - Shorts remover // @namespace https://greasyfork.org/en/users/2755-robotoilinc // @author RobotOilInc // @version 0.6.0 // @license MIT // @description Remove all short videos from your homepage, subscription feed, search and watch page on YouTube. // @match https://*.youtube.com/ // @match https://*.youtube.com/feed/* // @match https://*.youtube.com/r###lts* // @match https://*.youtube.com/watch* // @match https://youtube.com/ // @match https://youtube.com/feed/* // @match https://youtube.com/r###lts* // @match https://youtube.com/watch* // @icon https://i.imgur.com/rvNc0hN.png // @grant none // ==/UserScript== const observer = new MutationObserver(function(mutationList, observer) { // Remove any reel shelves const shelves = document.getElementsByTagName('ytd-reel-shelf-renderer') for (let i = 0; i < shelves.length; i++) { console.log("Removing shorts shelf", shelves[i]); shelves[i].remove() } // Remove any rich reel shelves const richShelves = document.getElementsByTagName('ytd-rich-shelf-renderer') for (let i = 0; i < richShelves.length; i++) { console.log("Removing shorts shelf", richShelves[i]); richShelves[i].remove() } // Remove anything with the shorts overlay const overlays = document.querySelectorAll('ytd-thumbnail-overlay-time-status-renderer[overlay-style="SHORTS"]'); for (let i = 0; i < overlays.length; i++) { const element = overlays[i]; const section = element.closest('.ytd-item-section-renderer'); if (section) { console.log("Removing short overlay", element); section.remove(); return; } const grid = element.closest('.ytd-grid-renderer'); if (grid) { console.log("Removing short overlay", element); grid.remove(); return; } const list = element.closest('.ytd-section-list-renderer'); if (list) { console.log("Removing short overlay", element); list.remove(); } } }); const observeShorts = () => { observer.observe(document.querySelector('ytd-page-manager'), { childList: true, subtree: true }); } // Ensure the observer is update when we navigate away window.navigation.addEventListener("navigate", (event) => { observer.disconnect(); observeShorts() }); // Ensure we observe on initial load as well observeShorts();