Greasy Fork is available in English.
Remove all short videos from your homepage, subscription feed, search and watch page on YouTube.
// ==UserScript==// @name YouTube - Shorts remover// @namespace https://gfork.dahi.icu/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 shelvesconst 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 shelvesconst 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 overlayconst 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 awaywindow.navigation.addEventListener("navigate", (event) => {observer.disconnect();observeShorts()});// Ensure we observe on initial load as wellobserveShorts();