Essential YouTube tweaks with JustZix
YouTube ships a lot of UI you never asked for: Shorts shelves, end-screen card spam, autoplay nudges. With JustZix you scope a handful of rules to youtube.com and the site stops fighting you. No DevTools, no rebuilds — just rules that load every time the page does.
Hide Shorts everywhere
Shorts surface in three places: the home feed, the sidebar, and search results. One CSS rule scoped to youtube.com clears all of them. Create a CSS rule, set the URL match to *://*.youtube.com/*, and paste this.
/* Home + subscription feed Shorts shelves */
ytd-rich-shelf-renderer[is-shorts],
ytd-reel-shelf-renderer { display: none !important; }
/* Sidebar Shorts entry */
ytd-guide-entry-renderer:has(a[title="Shorts"]) { display: none !important; }
/* Shorts results inside search */
ytd-video-renderer:has(a[href^="/shorts/"]),
grid-shelf-view-model:has(a[href^="/shorts/"]) { display: none !important; }
The :has() selector does the heavy lifting — it matches a container by what lives inside it, so you target the Shorts link and hide its whole card. Every modern browser supports it.
Declutter the end screen
When a video ends, YouTube overlays clickable card grids and a looping autoplay panel on top of the frame. If you watch a video to the end, you usually want the end — not a collage. Hide the overlays so the final frame stays clean.
/* End-screen card grid and branding overlays */
.ytp-ce-element,
.ytp-endscreen-content,
.ytp-ce-covering-overlay { display: none !important; }
/* Pause/replay autoplay panel */
.ytp-autonav-endscreen-upnext-container { display: none !important; }
This is purely cosmetic — playback, captions and controls keep working. You are only removing the promotional layer painted over the video.
Lock a default playback speed
CSS cannot change playback rate, so this one is a JavaScript rule. Create a JS rule scoped to *://*.youtube.com/watch*. The snippet sets the rate whenever a new <video> element appears, because YouTube swaps videos without a full page reload.
const TARGET_RATE = 1.5;
function applyRate() {
const v = document.querySelector('video');
if (v && v.playbackRate !== TARGET_RATE) {
v.playbackRate = TARGET_RATE;
}
}
// Run now, then watch for SPA navigation and DOM swaps.
applyRate();
const obs = new MutationObserver(applyRate);
obs.observe(document.body, { childList: true, subtree: true });
document.addEventListener('yt-navigate-finish', applyRate);
Change TARGET_RATE to whatever you like — 1 for normal, 2 for fast skim. The yt-navigate-finish event is YouTube\'s own signal that a new page finished loading, so the speed sticks across clicks.
Bonus: a calmer watch page
Two more cosmetic rules that pair well with the above. Drop them in the same CSS rule.
/* Hide the merch / ticket shelves under videos */
ytd-merch-shelf-renderer { display: none !important; }
/* Collapse the "People also watched" chip bar */
ytd-feed-filter-chip-bar-renderer { display: none !important; }
Why JustZix instead of an ad-hoc script
Each tweak above is a separate rule you can toggle independently. Hate Shorts but want the end screen? Turn one off. The URL matcher keeps these rules off every other site, so nothing leaks. And because rules live in JustZix, they survive browser updates and YouTube redesigns far better than a one-off bookmarklet.
Grab more starting points from our ready-made examples, or read the companion piece on decluttering social feeds. New here? Download JustZix and paste your first rule in under a minute.
Rate this post
No ratings yet — be the first.