Block Shorts, hide recommendation feeds, and detox your YouTube experience.
YouTube Control is a lightweight, privacy-focused browser extension that strips away distractions, blocks algorithmic rabbit holes, and gives you complete control over YouTube's layout.
- 100% Local & Private: No analytics, telemetry, or external API calls. All settings stay in your browser's local storage.
- Fast & Lightweight: Built with modular vanilla JavaScript, hardware-accelerated CSS, and compiled into zero-overhead bundles via
esbuild. - Manifest V3 Native: Fully compliant with modern Chrome, Microsoft Edge, Brave, Opera, and Mozilla Firefox standards.
| Store | Version | Rating | Users |
|---|---|---|---|
| Chrome Web Store | |||
| Firefox Add-ons | |||
| Microsoft Edge Add-ons |
Minimal Settings Popup
Toggle distraction blockers, video layouts, and styling options instantly.
Block YouTube Shorts
Eliminate Shorts shelves, navigation buttons, reels, and sidebar links.
Dock Comments to Sidebar
Read and post comments beside the player without losing your place in the video.
Sticky Player & Dual Scrolling
Pins the video to the top and lets recommendations and comments scroll independently.
Mini Fullscreen Mode
Fills the browser viewport with the video while keeping your address bar and tabs accessible.
| Category | Feature | What It Does |
|---|---|---|
| π« Shorts & Feeds | Hide Shorts | Removes Shorts shelves, navigation buttons, channel reels, and sidebar links. |
| π« Shorts & Feeds | Hide Home Feed | Removes the video recommendation grid on the YouTube home page. |
| π« Shorts & Feeds | Hide Mix Playlists | Hides auto-generated YouTube Mixes on Home feeds and watch pages. |
| π« Shorts & Feeds | Hide Category Bar | Hides topic filter pills on Home feeds, Channel sorting pills, and Watch page chips. |
| π« Shorts & Feeds | Hide More From YouTube | Hides YouTube Premium, Music, and Kids links from the sidebar menu. |
| π« Shorts & Feeds | Hide Sidebar Footer | Hides policy and copyright footer text from the left navigation drawer. |
| π Layouts | Custom Grid Columns | Choose between 2, 3, 4, 5, or 6 video cards per row on Home and Subscriptions. |
| π Layouts | Sticky Player & Dual Scroll | Pins the video player at the top and enables independent, hardware-accelerated column scrolling. |
| π¬ Comments | Dock Comments to Sidebar | Moves the comments section into the right sidebar next to the video player. |
| π¬ Comments | 1-Click Refresh Comments | Silently reloads comments in the background without refreshing the page or interrupting audio. |
| πΈ Comments | Comment & Thread Screenshot | 1-click camera button that copies high-resolution comment cards or full discussion threads to the clipboard. |
| π¬ Comments | Hide Comments & Chat | Removes video comments and live chat replay entirely. |
| ποΈ Visual Detox | Blur Thumbnails | Blurs video thumbnails until you hover your mouse over them. |
| π¨ Styling | Grayscale Mode | Converts the entire YouTube interface to distraction-free black & white. |
| π¨ Styling | Block Ambient Mode | Removes the glowing background halo lighting behind the video player. |
| π¨ Styling | Hide Scrollbars | Hides scrollbars across Home feeds, Sidebar, Watch page, or Panels while keeping smooth scrolling intact. |
| πΊ Watch Page | Hide Recommended Videos | Removes the recommended video sidebar on watch pages. |
| πΊ Watch Page | Hide Buttons & Stats | Hides Subscribe buttons, view counts, and like counts. |
| πΊ Watch Page | Hide Top Header | Hides the top search bar and header navigation. |
| ποΈ Player Tools | Playback Speed Button | Adds an in-player button to cycle between 3 custom speeds (e.g., 1.0x, 1.5x, 2.0x) and remembers your speed across videos. |
| πΈ Player Tools | Video Screenshot | Captures a high-resolution PNG frame directly from the video stream to your clipboard/downloads. |
| π² Player Tools | Mini Fullscreen | Expands the player to fill the window while keeping your tabs and bookmarks bar visible. |
| Key | Action | Condition |
|---|---|---|
Esc |
Exit Mini Fullscreen | When Mini Fullscreen is active |
T |
Exit Mini Fullscreen | When toggling Cinema / Theater Mode |
YouTube-Control/
βββ src/ # Source code (edit here)
β βββ manifest.json # Manifest V3 extension configuration
β βββ background.js # Lightweight background service worker
β βββ popup.html # Popup settings user interface
β βββ popup.css # Popup styling
β βββ popup.js # Popup controller logic
β βββ content.js # Main content script entry point
β βββ content.css # Injected layout, theme, and detox styles
β βββ modules/ # Self-contained ES modules
β β βββ comment-canvas.js # Canvas drawing, thread curves & screenshot export
β β βββ speed-controller.js # Video rate cycling, memory & event listeners
β β βββ watch-navigation.js # URL tracking, lifecycle hooks & scroll resets
β β βββ settings-schema.js # Unified settings definitions & parent/sub rules
β βββ icons/ # Extension icons (16px, 48px, 128px)
βββ dist/ # Bundled unpacked builds for browsers (generated)
β βββ chrome/ # Ready-to-load Chrome/Edge build
β βββ firefox/ # Ready-to-load Firefox build
βββ releases/ # Store upload zip archives (generated)
βββ test/ # Automated unit and regression test suites
β βββ test-comment-canvas.js
β βββ test-scrolling-performance.js
β βββ test-settings-schema.js
β βββ test-sidebar-footer-comments.js
β βββ test-speed-controller.js
β βββ test-watch-navigation.js
βββ build.py # esbuild bundler, minifier, and packaging script
βββ package.json # Node development dependencies and test scripts
βββ CHANGELOG.md # Public user-facing version notes
βββ CONTRIBUTING.md # Developer setup and contribution guide
βββ LICENSE # MIT License
git clone https://github.com/vishwa-vsr/YouTube-Control.git
cd YouTube-Control
npm installnpm testRun the build script to bundle src/ into the dist/ directory via esbuild:
# Build unpacked distribution folders for Chrome, Firefox, and Edge
python build.py -y
# Optional: Build unpacked distributions AND package store-ready zip archives in releases/
python build.py -y --zip- Navigate to
chrome://extensions/(oredge://extensions/in Edge). - Enable Developer mode using the toggle switch.
- Click Load unpacked.
- Select the
dist/chromedirectory inside this repository.
- Navigate to
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on....
- Select the
manifest.jsonfile insidedist/firefox.
Tip
Active Development Flow: Edit files inside src/ or src/modules/, run python build.py -y, and click the Reload (β») icon on the extension card in your browser's extension manager.
| Issue | Cause | Fix |
|---|---|---|
Cannot find module 'esbuild' |
Missing Node dependencies. | Run npm install in the project root. |
| Changes don't appear on YouTube | You edited src/ but didn't recompile. |
Run python build.py -y and click Reload in chrome://extensions. |
Script error loading src/ in Chrome |
You loaded src/ instead of dist/chrome. |
Load the compiled dist/chrome folder (content scripts require bundling). |
| YouTube layout looks broken | YouTube changed Polymer DOM nodes. | Run npm test to verify selectors against fixtures. |
- Permission requested:
storageonly. - Why: To save your toggle preferences locally via
chrome.storage.local. - Zero network tracking: No telemetry, tracking pixels, or remote servers. See our Privacy Policy.
Bug reports, feature requests, and code contributions are welcome! Please read the Contributing Guide before submitting a pull request.
Distributed under the MIT License.