5 tweeksBundle by reaver
YT2026: Clean YouTube App Interface
Tries to clean up the messy browser experience with opinionated tweeks to make YouTube feel better and app-like in the browser, especially in smaller windows. Share feedback/suggestions/edits with me on Tweeks Discord (Reaver)
Tweeks
5Tweeks in this bundle
YouTube Quick "Not Interested" Buttons
youtube.comAdds quick "Not interested" icon button directly on YouTube video cards. The "Don't recommend channel" button is hidden by default; set SHOW_DONT_RECOMMEND to true in the code to enable it. Share feedback/suggestions/edits with me on Tweeks Discord (Reaver)
YouTube PiP Header Buttons
youtube.comAdds YouTube header navigation/PiP buttons and lets Alt+P toggle Picture-in-Picture on watch pages
YouTube Shorts & Clutter Remover
youtube.comRemoves YouTube Shorts, promotional feed modules, community/survey clutter, paid-content overlays, and unwanted sidebar entries while providing an Alt+M/menu toggle to temporarily restore the default sidebar.
YouTube Focus Mode and Alternate Watch Page Tools
youtube.comHides suggested videos in theater/mobile mode, removes YouTube notification toasts, adds compact header focus controls, and adds an Alternate Watch Page mode with independently scrolling suggestions/comments, including theater mode. Suggested sidebar thumbnails are extracted into bounded 100%-wide, top-aligned 16:9 image boxes with a subtle bottom fade, black title/details bar, and restored YouTube hover video previews. Alt+T toggles compact mode; Alt+V toggles Alternate Watch Page; Alt+C toggle
YouTube Row-by-Row Scroll
youtube.commake this exact script // ==UserScript== // @name YouTube Row-by-Row Scroll // @description Advances YouTube Home and Subscriptions feeds by one complete visual grid row per mouse wheel notch with banner clearance. Alt+L toggles row scrolling. // @version 2.3 // @namespace tweeks.io // @author Tweeks // @match *://*.youtube.com/* // @grant GM_registerMenuCommand // @grant GM_unregisterMenuCommand // @run-at document-idle // ==/UserScript== (function () { 'use strict'; // ── State ────────────────────────────────────────────────────────────────── const STORAGE_KEY = 'yt-row-by-row-scroll'; let enabled = localStorage.getItem(STORAGE_KEY) !== 'false'; let menuCmdId = null; const WHEEL_DEBOUNCE_MS = 60; let lockedUntil = 0; let lastDirection = 0; // ── Menu Command & Toggle ────────────────────────────────────────────────── function updateMenuCommand() { if (typeof GM_unregisterMenuCommand === 'function' && menuCmdId !== null) { GM_unregisterMenuCommand(menuCmdId); } const label = enabled ? 'Row-by-Row Scroll: ON (Alt+L to toggle)' : 'Row-by-Row Scroll: OFF (Alt+L to toggle)'; if (typeof GM_registerMenuCommand === 'function') { menuCmdId = GM_registerMenuCommand(label, toggleRowScroll); } } function toggleRowScroll() { enabled = !enabled; localStorage.setItem(STORAGE_KEY, String(enabled)); updateMenuCommand(); } document.addEventListener('keydown', (event) => { if (event.altKey && event.key.toLowerCase() === 'l') { event.preventDefault(); toggleRowScroll(); } }); // ── Route & Feed Detection ───────────────────────────────────────────────── function isFeedRoute() { const p = location.pathname; return p === '/' || p.startsWith('/feed/subscriptions'); } function getActiveFeed() { if (!isFeedRoute()) return null; const browses = document.querySelectorAll('ytd-page-manager > ytd-browse'); for (const b of browses) { if (!b.hasAttribute('hidden') && b.isConnected) { return b; } } return null; } // Calculates the true visual baseline for the top row: // 56px (masthead) + 56px (chip banner) + 34px (content padding) = ~146px function getTargetContentY(feed) { let topOffset = 56; // Fixed masthead height const masthead = document.querySelector('ytd-masthead'); if (masthead) { const r = masthead.getBoundingClientRect(); if (r.bottom > 0) topOffset = Math.round(r.bottom); } // Measure top chip banner if present on the active feed const chips = feed ? feed.querySelector('#chips-wrapper, ytd-feed-filter-chip-bar-renderer, yt-chip-cloud-renderer') : null; if (chips) { const r = chips.getBoundingClientRect(); if (r.height > 20) { topOffset += Math.round(r.height); // +56px banner offset } } // 34px visual margin so cards line up with YouTube's default content position return topOffset + 34; } // Collects all rendered cards/rows grouped by visual tier function getVisibleRows(feed) { if (!feed) return []; const items = feed.querySelectorAll( 'ytd-rich-grid-row, ytd-rich-section-renderer, ytd-rich-item-renderer, ytd-video-renderer' ); const rows = []; for (const item of items) { const rect = item.getBoundingClientRect(); if (rect.width < 50 || rect.height < 50) continue; // Group elements sharing the same horizontal tier (45px tolerance) if (!rows.some((r) => Math.abs(r.rect.top - rect.top) <= 45)) { rows.push({ element: item, rect }); } } return rows.sort((a, b) => a.rect.top - b.rect.top); } // ── Wheel Handler ────────────────────────────────────────────────────────── function handleWheel(event) { if (!enabled || !isFeedRoute() || !event.deltaY) return; if (Math.abs(event.deltaY) <= Math.abs(event.deltaX)) return; if (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) return; const target = event.target; if (target instanceof Element && target.closest('input, textarea, select, [contenteditable="true"], ytd-searchbox, ytd-guide-renderer, tp-yt-paper-dialog, ytd-popup-container')) { return; } const feed = getActiveFeed(); if (!feed) return; const direction = event.deltaY > 0 ? 1 : -1; const now = performance.now(); if (direction === lastDirection && now < lockedUntil) { event.preventDefault(); return; } const rows = getVisibleRows(feed); if (!rows.length) return; const targetY = getTargetContentY(feed); const tolerance = 25; // Prevents re-targeting the current row let targetRow = null; if (direction > 0) { // Find the first row sitting below the target banner line targetRow = rows.find((r) => r.rect.top > targetY + tolerance); } else { // Find the row sitting above the target banner line targetRow = rows.slice().reverse().find((r) => r.rect.top < targetY - tolerance); } if (targetRow) { event.preventDefault(); lockedUntil = now + WHEEL_DEBOUNCE_MS; lastDirection = direction; const delta = Math.round(targetRow.rect.top - targetY); // Snap flush to top (0px) when returning to Row 0 if (direction < 0 && (window.scrollY + delta <= 60)) { window.scrollTo({ top: 0, left: 0, behavior: 'auto' }); } else { window.scrollBy({ top: delta, left: 0, behavior: 'auto' }); } } else if (direction < 0 && window.scrollY > 0) { event.preventDefault(); lockedUntil = now + WHEEL_DEBOUNCE_MS; lastDirection = direction; window.scrollTo({ top: 0, left: 0, behavior: 'auto' }); } } updateMenuCommand(); document.addEventListener('wheel', handleWheel, { capture: true, passive: false }); })();