Skip to content

Latest commit

 

History

1,736 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Astra Deck

Astra Deck

Take back desktop YouTube.

Bring back a familiar layout, put comments beside the video, and clear noise from your feed. Every control is optional. There is no Astra account and no telemetry.

Latest Release License Manifest V3 YouTube

Download for Chromium or Firefox · Install the userscript · Browse the features

Astra Deck Command Deck and Theater Split on desktop YouTube

Make YouTube fit the way you watch

  • Restore what changed. Switch to a 2020 or 2016 style page, bring back classic player controls, or tighten the current interface.
  • Use the whole screen. Theater Split keeps the video playing beside a live, scrollable comments column.
  • Cut the clutter. Hide channels, keywords, Shorts, watched videos, sponsored requests, and the page elements you never use.
  • Keep control local. Settings stay in the browser. AI summaries use your own provider or Ollama, and Astra never sees the request.

The searchable Command Deck covers playback, themes, comments, feed cleanup, downloads, transcripts, and hundreds of smaller choices. Start with the defaults, then change only what bothers you.

Current build facts

Source-derived project facts

Fact Current source value
Release v4.88.5
Runtime floors Node >=24; Chrome 120+ / equivalent Chromium release; Firefox 142+
Extension locales 11: ar, de, en, es, fr, it, ja, ko, pt_BR, ru, zh_CN
Settings schema 487 entries across 18 categories
Runtime graph 117 modules, including 27 peeled feature modules and 303 declared feature IDs
Selector surfaces 35 shipped surfaces from 33 selector packs (2 aliases)
Build profiles store-safe, chromium-store, github-full; github-full adds 6 full-only origins
Themes 7 named color themes plus oledTheme, denseMode, tokenThemeBridge controls
Compatibility modes Desktop YouTube extension; bounded YouTube Music theme/OLED/density compatibility; bounded /embed/:id player mode; mobile browsers and YouTube Studio; userscript follows the host desktop browser

Installation

Chrome / Edge / Brave

Option A, Load unpacked from ZIP:

  1. Download astra-deck-chromium-store-chrome-v*.zip for a download-free Chrome Web Store/Edge-compatible package, or choose astra-deck-store-safe-chrome-v*.zip / astra-deck-github-full-chrome-v*.zip for companion-capable self-hosted installs, from the latest release
  2. Extract it to a permanent folder
  3. Open chrome://extensions/, enable Developer mode
  4. Click Load unpacked and select the extracted folder

Option B, Local folder:

  1. Download or clone the extension/ folder
  2. Open chrome://extensions/, enable Developer mode
  3. Click Load unpacked and select the extension/ folder

Releases ship the ZIP, not a CRX. Self-hosted CRX installs are Linux-only on modern Chrome, so the ZIP + Load unpacked is the supported Chromium path.

Firefox

The released .xpi is unsigned. Firefox Release and Beta install only add-ons signed by Mozilla, and they reject an unsigned XPI with "This add-on could not be installed because it appears to be corrupt", so about:addonsInstall Add-on From File does not work on the Firefox most people run. Pick one of these instead:

Release builds also emit updates.json, and the companion-capable store-safe Firefox manifest points at the stable latest-release update feed. That feed is effective only after the XPI is signed; the currently released unsigned XPI still requires one of the manual installation paths below.

Easiest, the userscript. Works on every Firefox edition, installs in one click, and auto-updates. See Userscript below.

Temporary, any Firefox edition. The add-on is removed when Firefox restarts.

  1. Download astra-deck-chromium-store-firefox-v*.xpi for the download-free package, or astra-deck-store-safe-firefox-v*.xpi / astra-deck-github-full-firefox-v*.xpi for companion-capable installs, from the latest release
  2. Open about:debugging#/runtime/this-firefox
  3. Click Load Temporary Add-on… and select the .xpi

Permanent, Developer Edition, Nightly, or ESR only. These builds can be told to accept unsigned add-ons; Release and Beta cannot.

  1. Open about:config and set xpinstall.signatures.required to false
  2. Open about:addons → gear icon → Install Add-on From File
  3. Select the .xpi

Requires Firefox 142+ (set by strict_min_version in scripts/manifest-patch.js, so Firefox's built-in data-consent permissions cover the documented collection categories).

Userscript (Tampermonkey / Violentmonkey)

A userscript build is also available. Install Tampermonkey or Violentmonkey, then install the current YTKit.user.js artifact. Its generated @require loads the separately versioned Astra Deck YTKit Core Library from the same repository, so a separate Greasy Fork core publication is not required.

The userscript starts at document-start and continuously collapses known ad shells, but a userscript manager cannot guarantee interception before the browser starts page requests. Use the extension when browser-level ad-request blocking is required. Its download cascade never calls public Cobalt/community APIs: after local and direct methods fail, an external web page opens only when the user has explicitly configured a valid HTTPS downloader URL. Without a {url} placeholder, the canonical watch URL is placed in the fragment rather than the navigation request.

SharedAudio remains userscript-only. The store-safe and github-full extension profiles can use Astra Downloader; the chromium-store artifact is download-free. GitHub-full can also use a Cobalt instance the user operates or is authorized to use after an exact-origin browser grant; Astra Deck does not include Cobalt's public service.

Astra Downloader Companion Setup

Video and audio downloads are handled by Astra Downloader, a separate program with its own repository, releases, and documentation. Astra Deck and Astra Downloader are separate installs: the extension above works on its own, and downloads need the companion running on this device.

Download AstraDownloader.exe from the latest Astra Downloader release and run it, or use the in-page Download setup prompt, which points at the same place. Then return to YouTube and choose Check again. The toolbar popup also has recovery actions to re-enable the setup prompt and request an on-demand companion update from a running service.

Everything about the companion, installing from source, building the executable, the per-site sign-in store, subscriptions, the URL policy, and its security model, is documented in its README. It downloads from any site yt-dlp supports, not only YouTube.

Two details matter on this side of the boundary:

  • Discovery is by port, not configuration. The extension probes 127.0.0.1 across the ports in scripts/companion-port-catalogue.json. That file is duplicated byte-for-byte in the Astra Downloader repository and checked in both, so changing the ports is a two-repository change.
  • Releases here never carry AstraDownloader.exe. Publishing a second, independently versioned copy behind the same update check is how installs previously ended up four versions stale, so npm run release:readiness fails if the executable is staged in build/ or listed in the release manifest.

The PO-token provider and Deno sections below are companion prerequisites. They improve downloader reliability after Astra Downloader itself is running; they are not browser extension install steps.

Features

Undo YouTube's redesign

YouTube has no setting that gives you the old player or the old page back. Astra has three, and they are CSS only, so nothing is rebuilt and nothing is left behind when you turn them off.

What you want back Setting
The pre-2025 page: tighter spacing, smaller masthead, older watch-page proportions classicLayoutProfile, set to classic-2020 or classic-2016
The old player controls: opaque square buttons, the classic progress bar, the original time display classicPlayerChrome
The new player's overflow panel and pill actions hidden, with a tighter progress bar newPlayerUiRestore

A caveat worth stating plainly. These work by restyling what YouTube ships, so they last only as long as YouTube keeps shipping something to restyle. If it removes the underlying markup, they stop, and no extension can prevent that.

What other tools charge for

Two things in this space are usually paid, and Astra gives both away.

Elsewhere Astra
Nested subscription groups, feed sorting, unlimited mark-as-watched PocketTube, $3.99/mo Built in, no account
AI video summaries Glasp meters free users at 3 a day; NoteGPT and Harpa meter tokens Bring your own key, or run a local model through Ollama. No metering, because Astra never sees the request

There is no Astra account, no server, and no telemetry. Summaries go straight from your browser to whichever provider you configured, or to your own machine.

Core

Feature Default
Zero-Ad Desktop Surface, static MV3 request blocking plus document-start ad-shell collapse; userscript provides shell collapse only Built in
Theater Split, responsive video and comments panes with a click-or-drag divider, compact live header, matching themes, and exact inline-style restoration on exit On
Video Hider, hide videos/channels from feeds with X buttons, keyword filter, regex, duration filter On
Video Context Menu, right-click player for downloads, VLC/MPV streaming, transcript, screenshot On
Settings Panel, searchable, categorized, instant-apply, export/import/reset On
Known-Breakage Notices, pause features YouTube has broken until a fix ships On
Comment Search, filter watch-page comments inline Off
DeArrow, replace clickbait titles/thumbnails via crowdsourced database Off

YouTube changes its layout without warning, and when it does, some features stop working. Cutting a release is a slow answer to that, so Known-Breakage Notices reads a short list from this repository at most once every six hours and pauses the features that list names for the versions they are broken in. The card in Settings says so and links the issue. The list can pause a feature and nothing else: it cannot switch anything on, cannot read or change a setting, carries no code and no links, and cannot name anything the extension does not already ship. Your own toggle is left exactly as you set it. It is on by default, under Advanced, and with it off no request is made.

GitHub-full builds can optionally follow one user-selected HTTPS Video Hider filter list after an exact-origin browser prompt. Remote lists are anonymous, data-only requests capped at 1 MiB: unknown fields and malformed payloads are rejected, publisher predicate code is discarded, and the exact response is recorded with SHA-256 plus ETag/Last-Modified validators. The popup shows the source host, format, verification age, and active/stale state; users can choose daily, weekly, or manual checks and pause last-known-good rules whenever a refresh fails or the last verification becomes older than seven days.

Interface

Feature Default
Logo Quick Links, hover dropdown with History, Watch Later, Playlists, Liked, Subs On
Hide Sidebar / Hide Shorts / Hide Related / Hide Description On
Subscriptions Grid / Homepage Grid Align / Videos Per Row On
Styled Filter Chips / Compact Layout / Thin Scrollbar On
Square Search Bar / Square Avatars On
Compact Unfixed Header / Force Dark Everywhere Off

Watch Page

Feature Default
Watch Page Restyle, matched dark and light canvas, search, metadata, actions, and comments On
Native Comments Layout, keep YouTube comments clean without extension restyling On
Expand Video Width / Disable Ambient Mode On
Hide Merch, AI Summary, Hashtags, Pinned Comments, Info Panels On
Clean Share URLs, strip tracking params On
Return YouTube Dislike, estimated dislike count with est. disclosure + ratio Off
Auto-Expand Description / Sticky Chat / Scroll to Player Off

Video Player

Feature Default
Always Best Quality, picks highest available stream, prefers 1080p Premium when offered On
Auto-Resume Position (configurable threshold) On
Custom Progress Bar Color (color picker) Off
Remaining Time Display / Time in Tab Title Off
A-B Loop / Fine Speed Control / Persistent Speed / Per-Channel Speed Off
Speed Control Chip (in-chrome popup: 0.25× → 3×, 10 presets) On
Codec Selector (H.264/VP9/AV1) / Force Standard FPS Off
Video Screenshot / Video Zoom (Ctrl+scroll, up to 5x) Off
Cinema Ambient Glow / Nyan Cat Progress Bar Off
Speed Indicator Overlay / Custom Speed Buttons (0.5x-3x) Off
Pop-Out Player (Document PiP) / PiP Button / Fullscreen on Double-Click Off

Content Filtering

Feature Default
Remove Shorts / Redirect Shorts to Regular Player On
Channels open on Videos Tab On
Hide Collaborations / News / Playlists / Playables / Members Only On
Hide Watched Videos (dim or hide) / Grayscale Thumbnails Off
Anti-Translate / Not Interested Button / Open in New Tab Off
Disable Infinite Scroll / Disable SPA Navigation Off

Downloads

Feature Default
Download Options Popup, format, quality, and save directory per download On
Video Formats, MP4, MKV, WebM MP4
Audio Formats, MP3, M4A, Opus, FLAC, WAV MP3
Quality Selector, Best, 4K, 1440p, 1080p, 720p, 480p Best
Custom Save Directory, override per download or set globally Downloads
Context Menu, quick "Download Video" and "Download Audio" on right-click On
Auto-Download on Visit Off
Download Thumbnail (maxres) Off

Downloads use Astra Downloader, the bundled local yt-dlp + ffmpeg companion. Both profiles probe 9751 plus fallback ports (9761, 9771, 9781, 9791, 9851) and only accept health responses that identify as the Astra downloader service. The store-safe ceiling keeps the companion handoff but excludes AI, Ollama, and Cobalt. GitHub-full can show the fallback after the user enters the root HTTPS origin of a self-hosted Cobalt instance and grants access to that one host; api.cobalt.tools is deliberately unavailable. See Astra Downloader Companion Setup for the current install and release-asset state.

The GitHub-full popup maintenance actions are recoverable. yt-dlp updates run against a staged sibling executable; companion updates must pass checksum and hidden startup checks. Each path retains one verified last-known-good binary, activates atomically, and restores that backup automatically when the new binary fails its post-update check. The popup and /health.updateRecovery identify the active and rollback versions without exposing local paths or digests.

PO Token provider (optional but recommended)

YouTube binds PO tokens to video IDs in 2026; without a provider, the web client increasingly fails with "Sign in to confirm you're not a bot" on a subset of videos. Astra Downloader auto-detects a bgutil-ytdlp-pot-provider HTTP server on 127.0.0.1:4416 and routes yt-dlp through it when available.

Quickest setup (Docker):

docker run --name bgutil-provider -d --restart unless-stopped -p 4416:4416 brainicism/bgutil-ytdlp-pot-provider

Then install the yt-dlp plugin so yt-dlp.exe knows to consult the provider:

pip install bgutil-ytdlp-pot-provider

Astra Downloader's /health endpoint will surface poTokenProvider: { ok, port, version } once the server is reachable. If absent, downloads still work on most videos, the provider is opt-in hardening, not a hard requirement.

External JavaScript runtime (yt-dlp 2026+)

yt-dlp >= 2026.04 uses external EJS challenge solvers for YouTube. Astra Downloader defaults to Deno >=2.3 and can fall back to Node >=22; choose Auto, Deno, or Node in companion Settings. Runtime presence alone is not enough: the companion verifies the version and executes a bounded JavaScript capability probe before allowing a runtime-required download.

Install Deno once:

# Windows
winget install DenoLand.Deno

# macOS / Linux
curl -fsSL https://deno.land/install.sh | sh

(Or grab the installer from https://deno.com/. To use Node instead, install Node 24 or newer and select Node 24+ in companion Settings.)

Astra Downloader's /health endpoint surfaces javascriptRuntime: { runtime, version, supported, ejsReady, reason } while retaining denoRuntime as a compatibility alias. The download health panel names the selected runtime and offers one-click Deno provisioning only when Deno is an eligible choice. Unknown versions, probe failures, and unsupported runtimes stop with actionable errors; older pre-runtime yt-dlp builds remain allowed.

yt-dlp and its pins live in the Astra Downloader repository, which runs the bounded media smoke against a stable public fixture before accepting extractor dependency bumps.

Comments

Feature Default
Sort Comments Newest First Off
Creator Comment Highlight Off
Comment Handle Revealer, show original channel name next to @handle Off
Preload Comments Off

Live Chat

Feature Default
Premium Live Chat styling On
Configurable element hiding (header, emoji, super chats, polls, etc.) On
Chat Keyword Filter Off
Adaptive Live Layout Off
Reaction Spammer, opt-in floating panel, randomized emoji loop (500 ms floor) Off

Automation & Behavior

Feature Default
Auto-Dismiss "Still Watching?" Off
Auto Theater Mode / Auto Subtitles / Auto-Like Subscribed Off
Auto-Pause on Tab Switch / Pause Other Tabs Off
Auto-Open Chapters / Auto-Open Transcript Off
Auto-Close Popups (cookie/survey/premium) Off
Prevent Autoplay / Disable Autoplay Next Off
Redirect Home to Subscriptions Off
Remember Volume / Persistent Speed Off

Power User

Feature Default
Resume Playback (500-entry cap, 15s save interval) Off
Mini Player Bar (floating progress/play/pause on scroll-past) Off
Playback Stats Overlay (codec, resolution, dropped frames, bandwidth) Off
Watch Time Tracker (90-day retention) + Analytics Dashboard Off
Timestamp Bookmarks (inline notes, persistent storage) Off
Transcript Viewer (sidebar with clickable timestamps) + Export Off
AI Video Summary (OpenAI / Anthropic / Gemini / Ollama, BYO key) Off
Subtitle Styling (font, size, color, background, position) Off
Blue Light Filter (adjustable 10-80%) Off
Focused Mode (hide everything except video + comments) Off
Custom CSS Injection Off
CPU Tamer (background tab timer throttling) Off
Settings Profiles / Statistics Dashboard / Debug Mode Off
Fit Player to Window Off

Configurable Element Managers

Toggle individual elements on/off through the settings panel:

  • Action Buttons, Like, Dislike, Share, Ask/AI, Clip, Thanks, Save, Sponsor, More Actions
  • Player Controls, Next, Autoplay, Subtitles, Captions, Miniplayer, PiP, Theater, Fullscreen
  • Watch Elements, Join Button, Ask Button, Save Button, Ask AI Section, Podcast Section, Transcript Section
  • Chat Elements, Header, Menu, Popout, Reactions, Timestamps, Polls, Ticker, Leaderboard, Super Chats, Emoji, Bots

Settings Panel

Click the gear icon in the YouTube masthead or player controls, or use the toolbar popup's Open Full Settings action.

Astra Deck Command Deck showing searchable playback controls

Theater Split

Keep the video visible while you read or write comments. The divider can collapse, click open, or drag to the width you want. Dark and light modes follow YouTube.

Astra Deck Theater Split with video and comments in dark mode Astra Deck Theater Split with video and comments in light mode

Captured from the packaged extension in a disposable offscreen Edge session.

  • Command Deck workspace with a mission card and three live preference summaries on every category
  • Searchable sidebar spanning eleven destinations, including the dedicated Video Hider workflow
  • Full-width semantic control sections with dependency rails for nested settings
  • Toggle switches with instant apply
  • Sub-feature controls for granular element hiding
  • Textarea editors for keyword filters, quick links, custom CSS
  • Schema-validated Export / Import / Reset with credential scrub
  • Conflict detection (auto-disables conflicting features with toast notification)
  • Verified dark/light and RTL layouts at supported desktop viewports, including normal YouTube, native Theater, and Theater Split. The live browser check measures metadata, comments, related videos or chat, scrolling, and player geometry across repeated mode changes. The mobile light state is exercised in the settings fixture; mobile browser support remains host-dependent.

The toolbar popup keeps common toggles, backups, diagnostics, and language selection close at hand. Selector drift and external service failures stay in the health panels and export bundle. They don't open automatic overlays on YouTube.

Complete settings reference

This generated knowledgebase documents all 482 user-facing settings in the canonical schema. The remaining 5 schema entries are internal migration/profile metadata, not user controls. Defaults, accepted values, build availability, scope, apply behavior, capability requirements, and introduction version are source-derived; purpose copy comes from the shipped feature definition or an audited subordinate-field description.

Extension only settings are unavailable in the standalone userscript. GitHub-full only settings require a compatible GitHub-full build/profile and any permission shown in the UI. Deferred apply means the value is consumed on the next relevant render or navigation rather than rebuilding the current surface immediately.

Shell and appearance: 48 settings
Setting Purpose Default and accepted values Availability and behavior
Widen Search Bar
widenSearchBar
Expand the search bar to use more available space Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Square Search Bar
squareSearchBar
Remove rounded corners from the search bar Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Square Avatars
squareAvatars
Make channel avatars square instead of round Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Subscriptions Grid
subscriptionsGrid
Use a denser grid layout on the subscriptions page Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Homepage Grid Align
homepageGridAlign
Force a uniform thumbnail grid on the homepage. Prevents misaligned rows caused by variable title and metadata heights. Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Styled Filter Chips
styledFilterChips
Compact, native-feeling filter chips on home and subscriptions Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Hide Sidebar
hideSidebar
Remove the left navigation sidebar completely Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
UI style
uiStyle
Selects the global corner treatment: square applies Astra's squaring rules, while rounded preserves rounded surfaces. Default: square
Values: square, rounded
Extension + userscript
Store-safe + GitHub-full
Global
Live apply
Since v0.1.0
Disable Ambient Mode
noAmbientMode
Turn off the glowing background effect that matches video colors Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Compact Layout
compactLayout
Reduce spacing and padding for a denser interface Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Thin Scrollbar
thinScrollbar
Use a slim, unobtrusive scrollbar Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Watch Page Restyle
watchPageRestyle
Premium watch-page layout for title, description, and metadata without hiding native controls Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Studio Comments
chatStyleComments
Premium comment layout that preserves pinned comments, creator hearts, replies, and native actions Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Full-Width Subscriptions
fullWidthSubscriptions
Expand the subscription grid to fill the page Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Channels → Videos Tab
redirectToVideosTab
Open channel pages directly on the Videos tab Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Expand Video Width
expandVideoWidth
Stretch the video to fill the space when sidebar is hidden Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Astra Player Dock
floatingLogoOnWatch
Replace native player right-controls with Astra quick links, local tools, and settings Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Color theme
colorTheme
Applies a built-in dark-mode color palette across YouTube; none leaves the native palette unchanged. Default: none
Values: none, catppuccin-mocha, styled-dark, dracula, nord, gruvbox, tokyo-night, nyan-cat
Extension + userscript
Store-safe + GitHub-full
Global
Live apply
Since v0.1.0
Custom Progress Bar Color
customProgressBarColor
Change the red progress bar to any color Default: #ff0000
Hex color
Extension + userscript
Store-safe + GitHub-full
Global
Live apply
Since v0.1.0
Compact / Unfixed Header
compactUnfixedHeader
Reduce header height and let it scroll away instead of staying fixed Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Large Thumbnail Previews
thumbnailPreviewSize
Increase the size of thumbnail hover previews for easier viewing on large screens Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
HD Thumbnails
thumbnailQualityUpgrade
Upgrades video thumbnails to maximum resolution where available Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Force Dark on All YouTube Pages
forceDarkEverywhere
Applies dark theme to YouTube pages that may not respect dark mode (settings, about, etc.) Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Custom CSS
customCssInjection
Inject your own custom CSS rules into YouTube pages Default: Off Extension + userscript
GitHub-full only
Global
Live apply + reversible teardown
Store-sensitive
Since v0.1.0
Custom CSS Rules
customCssCode
CSS applied while Custom CSS is enabled Default: Empty Extension + userscript
GitHub-full only
Global
Live apply
Store-sensitive
Since v0.1.0
Grayscale Thumbnails
grayscaleThumbnails
Shows thumbnails in grayscale to reduce visual distraction. Color comes back on hover. Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Disable Frosted Glass
noFrostedGlass
Remove blur effects from UI elements Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Accent Color
themeAccentColor
Custom accent color for highlights, progress bar, and active UI elements Default: Empty Extension + userscript
Store-safe + GitHub-full
Global
Live apply
Since v0.1.0
Nyan Cat Progress Bar
nyanCatProgressBar
Replace the video progress bar with a Nyan Cat animation Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
OLED Theme
oledTheme
True OLED black (#000) backgrounds via the --yt-sys-color-baseline tokens. Survives YouTube's native theme switches because we hook the tokens themselves, not the surface classes. Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Dense Mode
denseMode
Tightens row spacing, padding, and font metrics across Astra-injected surfaces. It doesn't change YouTube's native layout, only our own panels, chips, pills, and toolbars. Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Rectangularize UI
rectangularizeYouTube
Strips YouTube's pill / stadium / fully-rounded backdrops. Any backdrop with border-radius > 12px gets clamped to 8px. Avatars and progress rings stay circular. Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Layout Profile
classicLayoutProfile
Pick a layout profile. Modern keeps YouTube's 2025 layout. Classic 2020 restores tighter spacing and the smaller masthead. Classic 2016 restores the older watch page proportions. Default: modern
Values: modern, classic-2020, classic-2016
Extension + userscript
Store-safe + GitHub-full
Global
Live apply
Experimental
Since v0.1.0
Restore Classic Player Chrome
newPlayerUiRestore
Hides YouTube's new-player chrome elements (Delhi modern overflow panel, pill action surfaces). Restores a tighter progress bar and original-style controls. Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Experimental
Since v0.1.0
Classic Player Chrome
classicPlayerChrome
One-toggle restoration of the pre-Delhi/Liquid Glass player look: opaque square controls, classic progress bar, original time display. CSS-only, no DOM rebuild. Default: Off Extension only
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v4.47.0
Native Token Theme Bridge
tokenThemeBridge
Pipes the user's themeAccentColor into YouTube's native --yt-sys-color-* tokens so native badges, hover states, and primary buttons follow the Astra accent without restyling each surface. Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Hide Airplay Button
hideAirplayButton
Remove the Airplay icon from the player controls Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Hide "Add to Queue" on Thumbnails
hideQueueOnThumbnails
Remove the "Add to queue" overlay button that appears on thumbnail hover Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Show Full Video Titles
fullTitles
Remove the 2-line clamp on thumbnail titles so long titles show in full Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Transform Video Title Case
titleCaseTransform
Override YouTube's clickbait UPPERCASE titles with a casing style of your choice Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Title Case Style
titleCaseMode
Choose the casing used while title transformation is enabled Default: none
Values: none, uppercase, lowercase, capitalize
Extension + userscript
Store-safe + GitHub-full
Global
Live apply
Since v0.1.0
Custom Text Selection Color
customSelectionColor
Override the default text-selection background with your chosen color Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Selection Color
selectionColor
Choose the highlight color used while custom text selection is enabled Default: #2dd36f
Hex color
Extension + userscript
Store-safe + GitHub-full
Global
Live apply
Since v0.1.0
Restore Native YouTube UI
restoreNativeYouTubeUi
Show the channel/comment avatars and home-feed shelves that Astra Deck hides by default. Toggles the early.css opt-out class so YouTube renders its own styling. Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v4.46.0
Compact Clean UI
cleanUiPreset
Owner preset: hides panel branding, search, and category headers, compresses navigation, silences toast notifications, and hides the subscriptions resume banner. Off by default. Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v4.46.3
Hide Search Sidebar
hideSearchSidebar
Remove the right-hand sidebar on search results pages Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v4.49.0
UI Font
uiFontFamily
Override the interface typeface. A short curated list rather than a free-text field, because an arbitrary font-family string is a CSS injection surface, and Custom CSS already exists for that. Default: default
Values: default, system, serif, mono, readable
Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v4.54.0
UI Font Size
uiFontSize
Override the base interface font size (0 = YouTube default, otherwise 8 to 20px) Default: 0
Values: 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v4.49.0
Navigation and Guide: 18 settings
Setting Purpose Default and accepted values Availability and behavior
Hide Create Button
hideCreateButton
Remove the "Create" button from the header toolbar Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Hide Voice Search
hideVoiceSearch
Remove the microphone icon from the search bar Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Logo Click → Subscriptions
logoToSubscriptions
Point the native YouTube home mark to your subscriptions feed Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Clean Share URLs
cleanShareUrls
Strip tracking params (si, pp, feature) from copied/shared YouTube links Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Quick Links
quickLinkMenu
Adds a compact quick-links menu in the masthead with customizable links Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Quick link items
quickLinkItems
Defines up to ten masthead quick links, one Label and YouTube path per line; unsafe schemes and non-YouTube destinations are rejected. Default: 6 preset lines Extension + userscript
Store-safe + GitHub-full
Global
Live apply
Since v0.1.0
Normalize Clickbait Titles
titleNormalization
Convert ALL CAPS titles to Title Case. Reduces clickbait without changing meaning. Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Redirect Home to Subscriptions
redirectHomeToSubs
Automatically redirect the YouTube homepage to your subscriptions feed Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Clean Share Menu
shareMenuCleaner
Removes social media buttons from the share dialog, leaving only the URL copy option Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Open Videos in New Tab
openInNewTab
Makes video links on the home/subscriptions page open in a new tab instead of navigating away Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Search While Watching
searchWhileWatching
Show YouTube search results in a lightweight watch-page panel without interrupting playback. Default: Off Extension only
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v4.49.0
Open In Alternative Frontend
openInAlternativeFrontend
Adds a button next to the player to open the current video in your configured alternative frontend (Invidious / Piped / FreeTube). Default instance is yewtu.be; change via alternativeFrontendInstance setting. Default: Off Extension + userscript
GitHub-full only
Global
Live apply + reversible teardown
Store-sensitive
Since v0.1.0
Alternative frontend instance
alternativeFrontendInstance
Sets the HTTPS frontend origin used when Open in Alternative Frontend builds an external video link. Default: https://yewtu.be Extension + userscript
GitHub-full only
Global
Live apply
Store-sensitive
Since v0.1.0
Channel landing tab
channelLandingTab
Which channel tab "Channels to Videos Tab" opens. Applies only while that feature is on, and falls back to Videos when the channel does not carry the chosen tab. Default: videos
Values: videos, shorts, streams, podcasts, playlists, posts
Extension only
Store-safe + GitHub-full
Global
Live apply
Since v4.89.0
Bypass Playlist Mode on Clicks
bypassPlaylistMode
Strip the &list= parameter from clicked thumbnails so you don't get stuck inside someone's playlist Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Hide Guide Elements
hiddenGuideElementsManager
Choose individual left-navigation (Guide) entries to hide Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v4.49.0
Hidden guide elements
hiddenGuideElements
Lists the individual Guide and mini-Guide destinations hidden by Hide Guide Elements. Default: Empty list
Choices: home, subscriptions, history, playlists, yourVideos, watchLater, likedVideos, trending, music, movies, live, gaming, news, sports, learning, premium, studio, settings, reportHistory, help, footer
Extension + userscript
Store-safe + GitHub-full
Global
Live apply
Since v4.49.0
Hide Own Avatar
hideOwnAvatar
Remove your account avatar button from the header Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v4.49.0
Shorts controls: 9 settings
Setting Purpose Default and accepted values Availability and behavior
Remove Shorts
removeAllShorts
Hide all Shorts videos from feeds and recommendations Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Redirect Shorts
redirectShorts
Open Shorts in the standard video player Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Disable Hover Preview
disablePlayOnHover
Stop videos from playing when hovering over thumbnails Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Shorts Speed Control
shortsSpeedControl
Adds a click-to-cycle playback speed chip to the Shorts player (0.5x-2x), honoring your persistent speed default Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v4.48.0
Shorts Auto-Advance
shortsAutoAdvance
Stop Shorts from looping and scroll to the next Short automatically when one finishes Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v4.48.0
Shorts Player Controls
shortsAsRegularVideo
Add native browser playback controls and scrubbing to YouTube Shorts Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Shorts Daily Limit
shortsDailyLimitMin
Maximum minutes of Shorts playback per local day. Set to 0 to disable. Default: 0
Range: 0 to 1440
Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply
Since v4.51.1
Shorts Limit Action
shortsDailyLimitMode
Choose whether reaching the limit blocks Shorts or offers five-minute snoozes. Default: hard
Values: hard, snooze
Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply
Since v4.51.1
Shorts watch time today
shortsWatchTimeToday
Stores the dated Shorts budget ledger and any active snooze deadline. Settings shows the current-day value as read-only status. Default: {"date":"","seconds":0,"snoozeUntil":0} Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply
Since v4.51.1
Feeds and layout: 13 settings
Setting Purpose Default and accepted values Availability and behavior
Hide Playables
hidePlayables
Hide YouTube Playables gaming content from feeds Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide Members Only
hideMembersOnly
Hide members-only feed cards on Home and Subscriptions Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide News Section
hideNewsHome
Hide news sections from the homepage Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide Playlist Shelves
hidePlaylistsHome
Hide playlist sections from the homepage Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Videos Per Row
videosPerRow
Set how many video thumbnails per row (0 = dynamic based on window width) Default: 0
Range: 0 to 8
Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply
Since v0.1.0
List Feed Layout
listFeedLayout
Show Home, Subscriptions, and Search video cards as rows with thumbnails on the left and metadata on the right. Off by default and mutually exclusive with Videos Per Row. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v4.51.1
Hide Merch Shelf
hideMerchShelf
Remove merchandise promotions below videos Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide Info Panels
hideInfoPanels
Remove Wikipedia/context info boxes that appear below videos (FEMA, COVID, etc.) Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Disable Infinite Scroll
disableInfiniteScroll
Replace infinite scroll with a "Load More" button on home, search, and subscriptions pages Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide Latest Posts
hideLatestPosts
Hide community posts and updates sections from feeds Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide Unrelated Search Shelves
searchHideUnrelatedShelves
Keep direct video, channel, and playlist results while hiding unrelated search-page shelves. Default: Off Extension only
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v4.49.0
Hide Related Search Blocks
searchHideRelatedSearches
Hide related-search chip blocks without removing filters, corrections, or direct results. Default: Off Extension only
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v4.49.0
Hide Watched and Recommended Results
searchHideWatchedRecommended
Hide watched-progress results and recommendation interleaves from YouTube search. Default: Off Extension only
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v4.49.0
Watch page and player controls: 75 settings
Setting Purpose Default and accepted values Availability and behavior
Hide Layout Options
hideSubscriptionOptions
Remove the "Latest" header and view toggles on subscriptions Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hide Promotion Badges
hidePaidContentOverlay
Remove "Includes paid promotion" overlays on thumbnails and watch pages Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hide Related Videos
hideRelatedVideos
Remove the related videos panel on watch pages Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hide Description
hideDescriptionRow
Remove the video description panel below the player Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hide Video End Content
hideVideoEndContent
Remove end cards, end screen, annotations, and video grid when videos finish. Superset of Hide End Screen Cards. Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hide Jump Ahead
hideJumpAheadButton
Remove the Jump Ahead prompt that appears after skipping on eligible videos. Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Theater Split
stickyVideo
Fullscreen video on watch pages. Scroll down to reveal comments side-by-side. Scroll back to top to return to fullscreen. Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hide AI Summary
hideAiSummary
Remove AI-generated summary panels only Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hide Ask AI
hideAskAi
Remove Ask AI buttons and conversational sections Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v4.51.1
Hide Gemini Buttons
hideGeminiButtons
Remove Gemini-branded actions without hiding other AI surfaces Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v4.51.1
Hide AI Context Panels
hideAiContextPanels
Remove fact-checking and contextual information panels Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v4.51.1
Hide Description Extras
hideDescriptionExtras
Remove extra elements in the description area Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hide Hashtags
hideHashtags
Remove hashtag links above video titles Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hide Paid Promotion
hidePaidPromotionWatch
Remove "paid promotion" labels on watch pages Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hide Channel Join Button
hideChannelJoinButton
Remove the Join/membership button on channel pages Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hide Fundraisers
hideFundraiser
Remove fundraiser and donation badges Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hide Action Buttons
hiddenActionButtonsManager
Choose which action buttons to hide below videos Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hidden action buttons
hiddenActionButtons
Lists watch-page action buttons hidden while the Action Buttons manager is enabled. Default: 8 selected entries
Choices: like, dislike, share, ask, clip, thanks, save, sponsor, moreActions
Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply
Since v0.1.0
Hide Player Controls
hiddenPlayerControlsManager
Choose which player control buttons to hide Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hidden player controls
hiddenPlayerControls
Lists native player controls hidden while the Player Controls manager is enabled. Default: 6 selected entries
Choices: ytLogo, settings, next, autoplay, subtitles, captions, miniplayer, pip, theater, fullscreen
Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply
Since v0.1.0
Hide Watch Page Elements
hiddenWatchElementsManager
Choose which elements to hide below videos Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hidden watch elements
hiddenWatchElements
Lists watch-page sections and actions hidden while the Watch Elements manager is enabled. Default: 8 selected entries
Choices: joinButton, askButton, saveButton, moreActions, askAISection, podcastSection, transcriptSection, channelInfoCards
Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply
Since v0.1.0
Hide Collaborations
hideCollaborations
Hide multi-creator collaboration uploads from your subscriptions feed Default: On Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Watch Progress Indicators
watchProgress
Show colored progress bars on video thumbnails based on your watch history (saved locally) Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Scroll in Fullscreen
fullscreenScroll
Scroll down while fullscreen to read the description, comments, and related videos; scroll back up to return to the video Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v4.48.0
Replay Chat Density
replayChatDensity
Show an optional activity sparkline above the progress bar for videos with replay chat, with click-to-seek highlights. Default: Off Extension only
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Experimental
Since v4.59.1
Video Insights
videoInsights
Reveal category, exact upload date, channel ID, and published tags from YouTube page metadata, with a bounded GitHub-full fallback. Default: Off Extension only
GitHub-full only
Watch page
Live apply + reversible teardown
Remote API
Since v4.49.0
Show Channel Video Count
showChannelVideoCount
Display total uploaded video count next to the channel name on watch pages Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Per-Video Notes
videoNotes
Keep a local note for the current video, export the notes archive, and cap the store at the 1000 most recently edited videos. Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Video notes data
videoNotesData
Stores local note records keyed by video ID for Video Notes import, export, and recovery. Default: Empty object Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply
Since v0.1.0
Pop-Out Player
popOutPlayer
Detach the video into a resizable floating Picture-in-Picture window with transport controls Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Experimental
Since v0.1.0
Always Show Progress Bar
alwaysShowProgressBar
Keep the video progress bar visible at all times instead of hiding on idle Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Chapter Navigation
chapterNavButtons
Add Previous/Next Chapter buttons to the video player controls Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Cinema Ambient Glow
cinemaAmbientGlow
Projects dominant video colors as a soft glow behind the player for an immersive cinema feel Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Transcript Sidebar
transcriptViewer
Adds a clickable transcript panel in the sidebar with timestamp navigation and export (txt/srt/clipboard/LLM prompt) Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Remote API
Since v0.1.0
Transcript preferred language
transcriptPreferredLanguage
Chooses the preferred transcript caption language; auto follows the browser language before the English and first-track fallbacks. Default: auto Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply
Since v4.47.0
Sticky Live Chat
stickyChat
Keeps the live chat panel pinned at the top of the sidebar when scrolling Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Auto-Expand Description
autoExpandDescription
Automatically expands the video description so you never need to click "Show more" Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Key Moments Highlights
keyMoments
Highlights chapter markers on the progress bar with colored segments for quick visual navigation Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Scroll to Player on Navigate
scrollToPlayer
Automatically scrolls to the top of the page when navigating to a new video Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hide End Screen Cards
hideEndCards
Removes the clickable end screen cards/annotations that overlay the video in the last seconds. Also covered by Hide Video End Content. Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hide Info Cards
hideInfoCards
Removes the "i" info card teasers and popups that appear during video playback Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Auto Theater Mode
autoTheaterMode
Automatically enter theater (wide) mode when opening a video Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Mini Player Bar
miniPlayerBar
Shows a floating mini-player bar at the bottom when you scroll past the video Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Playback Stats Overlay
playbackStatsOverlay
Shows video codec, resolution, bitrate, and dropped frame count as a togglable overlay Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Video Age Display
channelAgeDisplay
Shows how old a video is (e.g. "2 years, 3 months ago") next to the upload date. Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Speed Indicator Overlay
speedIndicatorOverlay
Shows the current playback speed as a small overlay on the video when not at 1x Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hide Autoplay Toggle
hideAutoplayToggle
Removes the autoplay toggle switch from the player controls Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Focused Mode
focusedMode
Hides everything except the video player and comments for a distraction-free experience Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Zen Mode
zenMode
Dims the page around the video player for a focused viewing experience Default: Off Extension only
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v4.47.0
Playlist Search
playlistSearch
Adds a search input above playlist panels to filter items by title Default: Off Extension only
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v4.47.0
Auto-Skip Watched Playlist Items
playlistAutoSkipWatched
When a playlist entry reaches at least 90% watched, continue to the next entry below that threshold. This stays off until enabled. Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v4.51.1
Resolution Badge on Thumbnails
videoResolutionBadge
Shows a 4K, HD, or SD badge on video thumbnails based on available quality Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Like-to-View Ratio
likeViewRatio
Shows the like-to-view percentage next to the view count on watch pages Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Enhanced Channel Info
channelSubCount
Shows the channel subscriber count more prominently below videos Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Auto-Open Chapters
autoOpenChapters
Automatically open the chapters panel when available Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Auto-Open Transcript
autoOpenTranscript
Automatically open the transcript panel when available Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Disable Mini Player
disableMiniPlayer
Prevent the mini player from appearing when navigating away Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Adaptive Live Layout
adaptiveLiveLayout
Automatically adjust layout for live stream chat side-by-side Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Theater Auto-Scroll
theaterAutoScroll
Scroll video into full view when theater mode activates Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Buffer / Preload
bufferPreload
Ask the YouTube player to keep a larger buffer for on-demand videos, so a brief connection drop does not stall playback. Off by default; live streams are never changed. Default: Off Extension only
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v4.51.1
Buffer Target
bufferPreloadSeconds
How many seconds of an on-demand video to keep buffered ahead. Higher values survive longer connection drops; the player may still cap very large targets on long videos. Default: 20
Range: 5 to 600
Extension only
Store-safe + GitHub-full
Watch page
Live apply
Since v4.54.0
Audio-Only Mode
audioOnlyPlayback
Collapse the video and ask the player for the cheapest stream it has, so a watch page costs roughly what a podcast does. YouTube exposes no true audio-only stream to extensions, so the pill reports whether you got one or just the lowest quality. Works on live streams too, where a multi-hour session makes the saving largest. Default: Off Extension only
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v4.54.0
Preload Comments
preloadComments
Eagerly load the comment section so it is ready when you scroll down Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Speed Change OSD
playbackSpeedOSD
Show speed overlay on the video player (like VLC) instead of corner toast Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Statistics Dashboard
showStatisticsDashboard
Track videos watched, time on YouTube, and videos hidden Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Fit Player to Window
fitPlayerToWindow
Make the video player fill the entire browser window Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Monetization Indicator
monetizationIndicator
Adds a pill under the title showing whether the video is monetized (has ads or a sponsorship overlay) or not. It's a heuristic built from the paid promotion overlay, the sponsorship card, and SponsorBlock category data when available. Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Video Age Color Coding
videoAgeColors
Color-coded thumbnail borders by upload age: fresh (green), week (blue), month (yellow), year (orange), ancient (red) Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Watch Page Tabs
watchPageTabs
Horizontal tab bar above the comments/description area to quickly switch views on the watch page Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Open thumbnail button
openThumbnailButton
Adds a View button beside the thumbnail download button that opens the full-size thumbnail in a new tab. It shares the download resolver, so a video with no max-res thumbnail opens the best one it has. Needs the Download Thumbnail Button feature on, since it sits beside it. Default: Off Extension only
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v4.89.0
Copy Chapters as Markdown
copyChapterMarkdown
Copy all video chapters as a markdown timestamp list, from a button in the player controls Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Chapter Jump Buttons
chapterJumpButtons
Prev/Next chapter buttons in the player right-controls, so you can skip to the previous or next chapter Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Hide Scrubber Handle
removeScrubber
Remove the round scrubber handle from the video progress bar Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.49.0
Soften Bottom Gradient
softBottomGradient
Reduce the dark gradient behind the player control bar Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.49.0
Playback, audio, and utilities: 109 settings
Setting Purpose Default and accepted values Availability and behavior
Auto-Dismiss "Still Watching?"
autoDismissStillWatching
Automatically clicks the "Continue Watching" button when YouTube pauses playback for inactivity Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Store-sensitive
Since v0.1.0
Remaining Time Display
remainingTimeDisplay
Show time remaining next to current time in the player, adjusted for playback speed Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Compact Remaining Time
remainingTimeCompact
Show remaining time as minutes (e.g. -1h24m) instead of full h:mm:ss. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v4.48.0
Hide in Fullscreen
remainingTimeHideFullscreen
Hide the remaining time readout while the player is fullscreen Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v4.48.0
Auto-Exit Fullscreen at End
autoExitFullscreen
Leave fullscreen automatically when a video finishes, unless a playlist or queue advances to a next video Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.48.0
Playback Error Auto-Recovery
playbackErrorRecovery
When the player shows an error screen, reload the page and restore position and speed automatically (max 3 attempts per video) Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.48.0
Live Catch-Up Speed Reset
liveSpeedReset
When a live stream played above 1x catches up to the live edge, reset to 1x; your speed is restored if you seek back behind the edge Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.48.0
Live Latency Catch-up
liveLatencyCatchup
Show live latency and buffer in the player chrome, then use a bounded playback-rate boost to reach the configured live edge target. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.59.1
Live Latency Target
liveLatencyTargetSeconds
Start catch-up above this live-edge delay. Lower values catch up sooner but may change speed more often. Default: 8
Range: 2 to 60
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v4.59.1
Live Catch-up Max Rate
liveLatencyMaxRate
Maximum playback rate used while catching up; your saved channel speed is restored afterward. Default: 1.25
Range: 1.05 to 2
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v4.59.1
Force DVR for Live Streams
forceDvr
Ask YouTube to expose rewind for live streams that advertise DVR as disabled. Experimental and off by default; if the player response changes shape, Astra Deck leaves it untouched and reports the degradation. Default: Off Extension only
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Experimental
Since v4.59.1
Show Playlist Duration
showPlaylistDuration
Display total playlist runtime and speed-adjusted estimate next to the playlist header Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Show Time in Tab Title
showTimeInTabTitle
Prepend current playback time [5:23] to the browser tab title Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Reverse Playlist Button
reversePlaylist
Adds a "Reverse" button to playlist panels to play oldest first Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
RSS Feed Link
rssFeedLink
Show an RSS feed link on channel pages for subscribing via RSS readers Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Precise View Counts
preciseViewCounts
Show full view counts (1,234,567) instead of truncated (1.2M) Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Video Screenshot
videoScreenshot
Capture the current video frame as a PNG image. It copies to the clipboard and downloads. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Per-Channel Speed Memory
perChannelSpeed
Remember and auto-apply preferred playback speed for each channel Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Anti-Translate (Original Titles + Descriptions)
antiTranslate
Prevent YouTube from auto-translating video titles AND descriptions to your locale. Restores the original-language text on grid thumbnails + watch page. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Pause Other Tabs on Play
pauseOtherTabs
When a video starts playing, pause YouTube in all other tabs Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
A-B Loop
abLoop
Set two points on the video timeline and loop between them. Visual markers on the progress bar. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Fine Speed Control
fineSpeedControl
Extend speed range to 0.1x-16x with 0.05x increments. Scroll on the speed badge to adjust. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
"Not Interested" on Thumbnails
notInterestedButton
Add an X button on video thumbnails to quickly dismiss videos via YouTube's feedback API Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Timestamp Bookmarks
timestampBookmarks
Bookmark moments in videos with custom notes. Click a bookmark to seek. Persists across sessions. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Blue Light Filter
blueLightFilter
Apply a warm tint to reduce blue light emission. Configurable intensity. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Blue Light Intensity
blueLightIntensity
Set the strength of the warm tint when Blue Light Filter is enabled. Default: 30
Range: 10 to 80
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Watch Time Tracker
watchTimeTracker
Track your daily/weekly YouTube watch time with a stats widget in the settings panel Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Auto-Skip Chapters
autoSkipChapters
Automatically skip chapters matching patterns (intro, outro, recap, sponsor). Comma-separated. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Auto skip chapter patterns
autoSkipChapterPatterns
Provides comma-separated chapter-name fragments that Auto-Skip Chapters treats as skippable. Default: intro,outro,recap,sponsor Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Video Loop Button
videoLoopButton
Add a loop toggle button to the player controls for one-click video looping Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Persistent Playback Speed
persistentSpeed
Remember your preferred playback speed globally and auto-apply it to every video Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Persistent speed value
persistentSpeedValue
Sets the playback rate reapplied by Persistent Playback Speed. Default: 1
Range: 0.1 to 16
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Jump to Most Replayed
jumpToMostReplayed
Add a player control that seeks straight to the most-replayed moment. It appears only on videos where YouTube actually provides the heatmap. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.68.0
Heatmap Smart Speed
heatmapSmartSpeed
Play the parts nobody rewatches faster, and drop back to your own speed through the most-replayed moments. Off by default; needs a video with heatmap data. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.68.0
Heatmap smart speed cold rate
heatmapSmartSpeedColdRate
Sets the playback rate Heatmap Smart Speed uses through the parts of a video nobody rewatches. Never slows playback below your own speed. Default: 1.5
Range: 1 to 4
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v4.68.0
Age Restriction Bypass
ageRestrictionBypass
Bypass age verification by fetching video data from YouTube's embed endpoint. No sign-in required. Default: Off Extension + userscript
GitHub-full only
Player
Live apply + reversible teardown
Store-sensitive
Since v0.1.0
Auto-Like Subscribed Channels
autoLikeSubscribed
Automatically like videos from channels you're subscribed to after watching for 30 seconds Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Store-sensitive
Since v0.1.0
Search Filter Defaults
searchFilterDefaults
Automatically apply a default sort order (upload date, view count, or rating) to YouTube search results Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Search filter sort
searchFilterSort
Chooses the sort filter automatically added to search URLs that do not already contain a YouTube filter. Default: upload_date
Values: upload_date, view_count, rating
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Resume Playback Position
resumePlayback
Remember where you stopped watching and automatically resume from that point Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Auto-Pause on Tab Switch
autoPauseOnSwitch
Pauses playback when you switch to another tab, resumes when you return Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Copy Video Title Button
copyVideoTitle
Adds a copy button next to the video title for one-click title copying Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Double-Click Fullscreen
fullscreenOnDoubleClick
Double-click anywhere on the video to toggle fullscreen (replaces default seek behavior) Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Remember Volume
rememberVolume
Persist your volume level across videos and sessions Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Remember volume level
rememberVolumeLevel
Stores the logical volume percentage restored by Remember Volume. Default: 100
Range: 0 to 100
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Logarithmic Volume Curve
logarithmicVolume
Remap the native volume slider to a logarithmic gain curve for finer control at quiet listening levels. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.59.1
Picture-in-Picture Button
pipButton
Adds a one-click PiP button to the player controls for native browser Picture-in-Picture Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Auto-Enable Subtitles
autoSubtitles
Automatically turns on closed captions when a video starts playing Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Auto subtitle lang
autoSubtitleLang
Chooses the preferred BCP-47 caption track after Auto Subtitles enables captions; exact matches win before primary-language matches. Default: en Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Watch Later Quick Button
watchLaterQuickAdd
Adds a clock icon on every thumbnail for one-click Watch Later saving Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Playlist Enhancer
playlistEnhancer
Adds shuffle, copy, duration sorting, per-playlist resume, and watched-item controls to playlist panels. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Video Zoom & Pan
videoZoom
Hold Ctrl and scroll on the video to zoom in, then drag to pan around Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Auto-Close Popups
autoClosePopups
Automatically dismisses cookie consent, survey prompts, and other YouTube popups Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Auto-Dismiss Content Warnings
autoDismissContentWarning
Automatically clicks "I understand and wish to proceed" on videos with content warnings Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.48.0
Disable Autoplay Next Video
disableAutoplayNext
Prevents the next video from automatically playing when the current one finishes Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Speed Preset Buttons
customSpeedButtons
Adds quick speed buttons below the video player with presets from 0.5x to 3x Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Prevent Autoplay
preventAutoplay
Stop videos from automatically playing on page load Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Scroll Wheel Speed
scrollWheelSpeed
Adjust playback speed by scrolling the mouse wheel over the video player Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Speed Step Amount
speedStep
How much to change speed per scroll tick Default: 0.25
Range: 0.05 to 1
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
CPU Tamer
enableCPU_Tamer
Reduce CPU usage by throttling background timers; in hidden tabs it also force-releases YouTube web locks and closes idle database connections Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Comment Handle Revealer
enableHandleRevealer
Show the original channel name next to @handle in comments Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Video Rotation
videoRotation
Rotate the video 90, 180, or 270 degrees via CSS transform. Useful for sideways phone recordings. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Video rotation angle
videoRotationAngle
Sets the clockwise rotation applied by Video Rotation. Default: 0
Values: 0, 90, 180, 270
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Video Flip
videoFlip
Mirror the video horizontally or vertically. Useful for mirrored dance tutorials, text readability, or flipped recordings. Default: Off Extension only
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.47.0
Video flip mode
videoFlipMode
Chooses the horizontal or vertical transform applied by Video Flip. Default: none
Values: none, horizontal, vertical, both
Extension only
Store-safe + GitHub-full
Player
Live apply
Since v4.47.0
Mono to Stereo
monoToStereo
Center mono audio equally in both ears. Fixes one-sided recordings, lectures, and old content that sounds unbalanced on headphones. Default: Off Extension only
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.47.0
Volume Boost
volumeBoost
Amplify audio beyond 100% via a Web Audio gain node (up to 10x). Useful for quiet recordings. Adjust intensity with volumeBoostLevel. Default: Off Extension only
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.48.0
Volume Boost Level
volumeBoostLevel
Gain multiplier for Volume Boost (1.0 = unity, max 10.0) Default: 2
Range: 1 to 10
Extension only
Store-safe + GitHub-full
Player
Live apply
Since v4.48.0
Audio Normalization
audioNormalization
Compress dynamic range so quiet and loud passages play at similar volume. Uses a DynamicsCompressorNode in the MAIN world audio graph. Default: Off Extension only
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.48.0
Audio Auto-Gain
audioAutoGain
Balance quiet videos toward a comfortable listening level with a bounded, adaptive Web Audio gain stage. Default: Off Extension only
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.51.1
Audio High-Pass Filter
audioHighPass
Reduce muddy low-frequency rumble with an 80 Hz high-pass filter in the MAIN-world audio graph. Default: Off Extension only
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.51.1
Parametric EQ
audioParametricEq
Apply a three-band low, mid, and high EQ in the MAIN-world audio graph. Off by default; each band is bounded to -12 dB to +12 dB. Default: Off Extension only
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.51.1
EQ Low Band
audioEqLowGainDb
Low-shelf gain centered at 120 Hz, from -12 dB to +12 dB. Default: 0
Range: -12 to 12
Extension only
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.51.1
EQ Mid Band
audioEqMidGainDb
Peaking gain centered at 1 kHz, from -12 dB to +12 dB. Default: 0
Range: -12 to 12
Extension only
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.51.1
EQ High Band
audioEqHighGainDb
High-shelf gain centered at 8 kHz, from -12 dB to +12 dB. Default: 0
Range: -12 to 12
Extension only
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.51.1
Audio Pan
audioPan
Shift audio balance left or right via a StereoPannerNode in the MAIN world audio graph. Range -1 (full left) to 1 (full right), 0 = center. Default: 0
Range: -1 to 1
Extension only
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.47.0
Audio Sync Offset
audioSyncOffsetMs
Adjust audio timing relative to video from -500 ms to +500 ms. Positive values add audio delay; negative values use the minimum available Web Audio latency. Default: 0
Range: -500 to 500
Extension only
Store-safe + GitHub-full
Player
Live apply
Since v4.51.1
Frame-by-Frame Buttons
frameByFrameButtons
Add visible step-back (,) and step-forward (.) buttons to the player controls for precise frame navigation Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Screenshot Format
downloadScreenshotFormat
Output format for the player screenshot button. PNG is lossless and copies to clipboard; JPEG/WebP are smaller files but download-only. Default: png
Values: png, jpeg, webp
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Include Subtitles In Screenshot
downloadSubtitlesWithScreenshot
Bake the currently rendered caption line into the bottom band of the screenshot. Off by default. Requires Video Screenshot. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Volume Wheel
volumeWheelMode
Scroll the mouse wheel over the player to change volume in 5% steps. A floating indicator chip surfaces the new level for 1.2 s; no keyboard shortcut is added. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Wheel Seek
wheelSeek
Scroll the mouse wheel over the progress bar to seek. Step defaults to 5 s (configure via wheelSeekStepSec). Scrolling elsewhere over the player still drives Volume Wheel if it is on; the two features do not conflict. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Wheel seek step sec
wheelSeekStepSec
Sets how many seconds Wheel Seek moves for each wheel step over the progress bar. Default: 5
Range: 0.1 to 300
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Keep Volume At Full
disableLoudnessNormalization
Stop YouTube nudging the player volume back down below 100%. This does NOT disable YouTube's loudness normalization, which runs in a Web Audio node an extension can't reach, so quiet videos stay quiet. Only the volume slider stops drifting. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Per-Channel Intro/Outro Skip
perChannelIntroOutro
Skip the first N and last M seconds of every video on a given channel. Set offsets per channel from the watch page (Tools → Set Intro/Outro). Stored under perChannelIntroOutroData. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Per channel intro outro data
perChannelIntroOutroData
Stores per-channel intro and outro offsets used by Per-Channel Intro/Outro skipping. Default: Empty object Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Anti-Translate Audio Track
antiTranslateAudioTrack
When YouTube serves an auto-dubbed track, select the original through the reviewed player bridge. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Anti-Translate Transcript
antiTranslateTranscript
Strips translation track parameters from the engagement-panel transcript URL so YouTube serves the original-language captions. Best-effort; works when the original-language track is available. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Anti-Translate Thumbnails
antiTranslateThumbnails
Restore the original-language thumbnail image on cards whose text was localised. Uses the player response on the watch page and YouTube's own same-origin oEmbed endpoint elsewhere, so it needs no extra site access. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v4.69.0
Anti-Translate Chapters
antiTranslateChapters
Restores original-language chapter titles in the chapter list and the player hover label. Reads them from the original description, which is where YouTube builds chapters from in the first place. Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v4.70.0
Video Visual Filters
videoVisualFilters
Adjust brightness / contrast / saturation / hue / grayscale / sepia via CSS filter on the video element Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Photosensitive Flash Protection
photosensitiveFlashProtection
Sample video frames locally and briefly dim the player when a large luminance change is detected. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.57.0
Flash Sensitivity
photosensitiveFlashThreshold
Minimum frame luminance change that triggers protection. Default: 0.2
Range: 0.05 to 0.8
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v4.57.0
Dim Strength
photosensitiveDimPercent
How strongly to dim the player while flashing content is detected. Default: 35
Range: 10 to 80
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v4.57.0
VVF brightness
vvfBrightness
Sets Video Visual Filters brightness as a percentage of the original image. Default: 100
Range: 0 to 200
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
VVF contrast
vvfContrast
Sets Video Visual Filters contrast as a percentage of the original image. Default: 100
Range: 0 to 200
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
VVF saturation
vvfSaturation
Sets Video Visual Filters saturation as a percentage of the original image. Default: 100
Range: 0 to 200
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
VVF hue
vvfHue
Sets Video Visual Filters hue rotation in degrees. Default: 0
Range: -180 to 180
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
VVF grayscale
vvfGrayscale
Sets the grayscale percentage applied by Video Visual Filters. Default: 0
Range: 0 to 100
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
VVF sepia
vvfSepia
Sets the sepia percentage applied by Video Visual Filters. Default: 0
Range: 0 to 100
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Lock 1x Speed on Music Videos
musicVideoSpeedLock
When Persistent Playback Speed is enabled, keep music-category videos at 1x so songs aren't sped up Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Playlist Quick-Remove Overlay
playlistQuickRemove
Show a trash icon on each item in playlists you own for one-click removal Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Watch Later Cleanup Button
watchLaterCleanup
Adds a "Remove Watched" button to the Watch Later playlist header for batch cleanup Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Watch Later Workbench
watchLaterWorkbench
Bulk tools for the Watch Later playlist: filter by age, duration, watched state, channel, or title, preview and sort matches, export CSV/JSON, and remove in bounded recoverable sessions Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.48.0
Preferred Audio Track Language
audioTrackLanguage
Select your preferred audio language through the player bridge without opening or clicking YouTube settings. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Preferred audio lang
preferredAudioLang
Sets the preferred BCP-47 primary language used by Audio Track Language selection. Default: en Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Prefer Descriptive Audio
preferDescriptiveAudio
When the preferred language offers an audio-description track, select it before the standard track. Default: Off Extension only
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.50.8
Notify on AI-Dubbed Audio
notifyAutoDubbedAudio
Show a one-time toast when YouTube auto-selects an AI-dubbed audio track (e.g. an English-dubbed Korean video). You can manually switch to the original track in the player settings. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Sleep Timer
sleepTimer
Pause playback after a chosen number of minutes. The player countdown chip lets you cancel or add 5 minutes. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Quality and codecs: 12 settings
Setting Purpose Default and accepted values Availability and behavior
Always Best Quality
autoMaxResolution
Force the highest available stream on every video (1080p Premium when offered) Default: On Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Force H.264 Codec
forceH264
Prefer H.264 (AVC) over VP9/AV1 for lower CPU usage on older hardware. May reduce max quality. Uses MAIN world codec bridge. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Codec Selector
codecSelector
Choose which video codec to prefer: Auto, Power-efficient (ask this device), H.264 (low CPU), VP9, or AV1 (best quality). Shares codec engine with Force H.264. Default: auto
Values: auto, efficient, h264, vp9, av1
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Force Standard Frame Rate
forceStandardFps
Dims HFR entries in the quality menu. For reliable 30fps, enable Force H.264 which caps at 1080p30. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Initial Player State (Foreground)
initialPlayerStateForeground
When opening a watch page in the foreground, play or pause regardless of the previous session's autoplay choice. "Inherit" leaves YouTube's native behavior alone. Default: inherit
Values: inherit, play, pause
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Initial Player State (Background)
initialPlayerStateBackground
When opening a watch page in a background tab, play or pause regardless of YouTube's default. Useful for queueing-up multiple tabs. Default: inherit
Values: inherit, play, pause
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Per-Context Quality
qualityProfileMatrix
Set different default qualities for normal / theater / fullscreen / background / embed contexts. ISOLATED-world detects the context and writes data-ytkit-quality-context on ; the MAIN-world bridge re-applies the matching quality via movie_player.setPlaybackQualityRange(). Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Quality default normal
qualityDefaultNormal
Sets the quality target used by Per-Context Quality in the normal watch-page layout. Default: inherit
Values: inherit, auto, highres, hd2880, hd2160, hd1440, hd1080, hd720, large, medium, small, tiny
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Quality default theater
qualityDefaultTheater
Sets the quality target used by Per-Context Quality in theater mode. Default: inherit
Values: inherit, auto, highres, hd2880, hd2160, hd1440, hd1080, hd720, large, medium, small, tiny
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Quality default fullscreen
qualityDefaultFullscreen
Sets the quality target used by Per-Context Quality in fullscreen. Default: inherit
Values: inherit, auto, highres, hd2880, hd2160, hd1440, hd1080, hd720, large, medium, small, tiny
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Quality default background
qualityDefaultBackground
Sets the quality target used by Per-Context Quality while the tab is in the background. Default: inherit
Values: inherit, auto, highres, hd2880, hd2160, hd1440, hd1080, hd720, large, medium, small, tiny
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Quality default embed
qualityDefaultEmbed
Sets the quality target used by Per-Context Quality on embedded players. Default: inherit
Values: inherit, auto, highres, hd2880, hd2160, hd1440, hd1080, hd720, large, medium, small, tiny
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Video Hider and content filtering: 47 settings
Setting Purpose Default and accepted values Availability and behavior
Video Hider
hideVideosFromHome
Hide videos/channels from feeds. Includes keyword filter, duration filter, and channel blocking. Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide videos keyword filter
hideVideosKeywordFilter
Provides comma-separated title or channel terms that Video Hider matches locally. Default: Empty Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply
Since v0.1.0
Hide videos filter list URL
hideVideosFilterListUrl
Sets the exact HTTPS URL for the optional remote Video Hider rule subscription; the host requires an explicit browser grant. Default: Empty Extension only
Store-safe + GitHub-full
Feeds
Live apply
Experimental
Since v4.59.1
Hide videos duration filter
hideVideosDurationFilter
Hides videos shorter than this many minutes; zero disables the duration rule. Default: 0
Range: 0 to 60
Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply
Since v0.1.0
Hide videos subs load limit
hideVideosSubsLoadLimit
Stops subscriptions-feed continuation loading after repeated mostly-hidden batches to prevent an endless fetch loop. Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide videos subs load threshold
hideVideosSubsLoadThreshold
Sets how many consecutive mostly-hidden subscriptions batches trigger the load limiter. Default: 3
Range: 1 to 20
Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply
Since v0.1.0
Hide videos subs load hidden ratio
hideVideosSubsLoadHiddenRatio
Sets the fraction of a subscriptions batch that must be hidden before it counts toward the load-limiter streak. Default: 0.8
Range: 0.05 to 1
Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply
Since v4.47.0
Hide videos remove hidden cards
hideVideosRemoveHiddenCards
Removes matched cards from the current feed DOM instead of only collapsing them with CSS. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide videos show filter reason
hideVideosShowFilterReason
Shows a local placeholder explaining which Video Hider rule hid each matched card. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v4.57.0
Element Zapper
elementZapper
Click a shelf, panel, or promo to hide it, and keep hiding it. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v4.72.0
Hide videos show quick hide button
hideVideosShowQuickHideButton
Shows the per-thumbnail X control for one-click local video hiding. Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Mark watched videos
markWatchedVideos
Adds a per-card local mark-as-watched control; marked cards dim or are removed when hidden-card removal is enabled. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v4.52.0
Hide videos allow channel block
hideVideosAllowChannelBlock
Allows right-clicking a thumbnail hide control to add its channel to the active channel list. Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide videos channel allowlist
hideVideosChannelAllowlist
Switches channel filtering from a blocklist to an allowlist; an empty allowlist applies no channel filter. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v4.51.1
Hide videos remember restored videos
hideVideosRememberRestoredVideos
Adds restored videos to Allowed Videos so another matching rule does not immediately hide them again. Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide videos scope home
hideVideosScopeHome
Runs Video Hider rules and quick actions on the YouTube home feed. Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide videos scope subscriptions
hideVideosScopeSubscriptions
Runs Video Hider rules and bulk actions on the subscriptions feed. Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide videos scope search
hideVideosScopeSearch
Runs Video Hider video and channel rules on search results. Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide videos scope watch
hideVideosScopeWatch
Runs Video Hider rules on recommendations beside and below the player. Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide videos scope channels
hideVideosScopeChannels
Runs Video Hider rules on channel pages. Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide videos scope other
hideVideosScopeOther
Runs Video Hider rules on supported feed surfaces outside the named scopes. Default: On Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide videos low view filter
hideVideosLowViewFilter
Enables hiding cards whose exposed view count is below the configured threshold. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide videos low view threshold
hideVideosLowViewThreshold
Sets the minimum visible view count accepted by the low-view filter. Default: 1000
Range: 0 to 10000000
Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply
Since v0.1.0
Synthetic Narration Markers
hideVideosSyntheticNarrationFilter
Hide cards whose title, description, or channel text contains explicit synthetic-narration markers. Runs locally with no network or crowd database. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v4.59.1
Hide Low-Signal Videos
hideVideosLowSignalFilter
Hide videos that remain below the view threshold after the age threshold. Missing card metadata fails open. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v4.59.1
Low-Signal View Threshold
hideVideosLowSignalMinViews
Minimum views used by the low-signal heuristic. Set to 0 to disable its view side. Default: 1000
Range: 0 to 10000000
Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply
Since v4.59.1
Low-Signal Age Threshold
hideVideosLowSignalMinAgeDays
Only treat a low-view card as low-signal after this many days. Missing age metadata fails open. Default: 30
Range: 0 to 3650
Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply
Since v4.59.1
Upload Cadence Filter
hideVideosUploadCadenceFilter
Hide cards exposing an upload cadence above the local per-day threshold. Cards without cadence text remain visible. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v4.59.1
Upload Cadence Threshold
hideVideosUploadCadencePerDay
Maximum uploads per day accepted by the upload-cadence heuristic. Default: 5
Range: 1 to 100
Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply
Since v4.59.1
Hide videos hide live
hideVideosHideLive
Hides cards identified as currently live streams. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide videos hide upcoming
hideVideosHideUpcoming
Hides scheduled, upcoming, and reminder-driven cards. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide Planned Livestreams
hidePlannedLivestreams
On the Subscriptions page, hide scheduled livestreams and premieres that only show a "Notify me" button. They reappear automatically once they go live. Default: On Extension only
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v4.50.0
Hide videos hide mixes
hideVideosHideMixes
Hides radio-style and auto-generated YouTube Mix cards. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide videos hide playlists
hideVideosHidePlaylists
Hides playlist and multi-video cards on supported surfaces. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide videos hide movies
hideVideosHideMovies
Hides rental, purchase, free-with-ads, and movie-labelled cards. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide videos hide auto dubbed
hideVideosHideAutoDubbed
Hides cards labelled as dubbed, auto-dubbed, or alternate-audio videos. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide videos watched ratio
hideVideosWatchedRatio
Hides cards whose visible progress reaches this percentage; zero disables the rule. Default: 0
Range: 0 to 1
Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply
Since v0.1.0
Persistent Queue
persistentQueue
Local play queue that survives tab close and browser restart: add videos from any thumbnail, reorder, and auto-advance Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v4.48.0
Queue Auto-Advance
persistentQueueAutoAdvance
Play the next queue entry automatically when the current video ends Default: On Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v4.48.0
Filter Feeds Before Render
feedPrefilter
Remove blocked channels from YouTube's feed data before the page builds a card from it, instead of hiding the card afterwards. Playlists and the video player are never touched. Default: Off Extension only
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Experimental
Since v4.69.0
Hide Watched Videos
hideWatchedVideos
Dim or hide videos with a red progress bar (already watched) from feeds Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Hide watched mode
hideWatchedMode
Chooses whether Hide Watched Videos dims matched cards or removes them from view. Default: dim
Values: dim, hide
Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply
Since v0.1.0
Advanced local predicate
advancedLocalPredicate
Enables the bounded local predicate evaluator for advanced card filtering without remote code execution. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Experimental
Since v0.1.0
Advanced local predicate code
advancedLocalPredicateCode
Stores the local predicate expression evaluated against the documented, read-only video-card context. Default: Empty Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply
Experimental
Since v0.1.0
Sponsored Content Filter
sponsoredContentFilter
Collapse comment and description blocks that look like sponsorships or affiliate promotions. Each item explains the match and can be restored. Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v4.59.1
Bulk Card Actions
bulkCardActions
Toggle select-mode to multi-pick feed cards, then bulk hide, allow, copy URLs, or run a bounded recommendation scrub ("Not interested" / "Don't recommend channel") with a local session log and undo. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Feed Triage Profile
feedTriageProfile
Flip on a curated focus recipe: hides Shorts, live streams, upcoming premieres, mixes, watched videos, and AI Summary. Toggling off restores prior values. Default: Off Extension + userscript
Store-safe + GitHub-full
Feeds
Live apply + reversible teardown
Since v0.1.0
Comments: 24 settings
Setting Purpose Default and accepted values Availability and behavior
Hide Pinned Comments
hidePinnedComments
Remove pinned comments from the comments section Default: On Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v0.1.0
Hide Comment Dislike
hideCommentDislikeButton
Remove the dislike button from comment actions since it adds no useful feedback Default: Off Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v0.1.0
Hide Comment Actions
hideCommentActionMenu
Remove action menu from individual comments Default: Off Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v0.1.0
Condense Comments
condenseComments
Reduce spacing between comments for a tighter layout Default: Off Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v0.1.0
Hide Comment Teaser
hideCommentTeaser
Remove the "Scroll for comments" prompt on watch pages Default: Off Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v0.1.0
Auto-Expand Comments
autoExpandComments
Automatically expand truncated comments so full text is always visible Default: On Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v0.1.0
Comment Enhancements
commentEnhancements
Highlight creator/OP replies, show like heat indicators, and add collapse-all-replies toggle per thread Default: Off Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v0.1.0
Sort Comments Newest First
sortCommentsNewest
Automatically switch the comment sort order to "Newest first" on every video Default: Off Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v0.1.0
Hide Notification Badge
hideNotificationBadge
Removes the red notification count badge from the bell icon Default: Off Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v0.1.0
Highlight Creator Comments
creatorCommentHighlight
Makes creator-badged and creator-hearted comments stand out with a stronger visual treatment Default: Off Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v0.1.0
Comment Search
commentSearch
Adds a search bar above comments to filter and find specific comments Default: Off Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v0.1.0
Hide Notification Bell
hideNotificationButton
Remove the notification bell icon from the header Default: Off Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v0.1.0
Sort Notifications
chronologicalNotifications
Sort notifications chronologically (newest first) Default: Off Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v0.1.0
Notification Count
notificationMaxCount
Limit the number of notifications shown. Set to 0 to show all. Default: 0
Range: 0 to 100
Extension + userscript
Store-safe + GitHub-full
Comments
Live apply
Since v4.51.1
Hide Read Notifications
notificationHideRead
Hide notifications that YouTube marks as already read. Default: Off Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v4.51.1
Comment Navigator
commentNavigator
Floating thread navigator with live counts for visible comments and filtered results Default: Off Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v0.1.0
Translate Comments
commentTranslate
Adds a Translate link under comments that are not already in your language, using Chrome's built-in on-device Translator. Nothing is sent to a server and no API key is needed; when the browser has no Translator the link says so instead of failing quietly. Default: Off Extension only
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v4.54.0
Translate Comments Into
commentTranslateTarget
Language to translate comments into. Auto follows your browser language. Default: auto
Values: auto, en, es, fr, de, it, pt, ru, ja, ko, zh, ar, hi
Extension only
Store-safe + GitHub-full
Comments
Live apply
Since v4.54.0
Comment Filter
commentFilterManager
Hide comment threads whose author or text matches a rule. Comma-separated keywords, !word to allowlist, or /pattern/flags for regex (ReDoS-guarded). Default: Off Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v0.1.0
Comment Filter Rules
commentFilterRules
One rule per line or comma-separated. word hides matches, !word always allows, @author targets the author, /pattern/i runs a regex (ReDoS-guarded). Default: Empty Extension + userscript
Store-safe + GitHub-full
Comments
Live apply
Since v0.1.0
Comment Language Allowlist
commentLanguageAllowlist
Show only comments in these language codes, such as en, es, or fr. Leave empty to allow every language; detection stays local and fails open when uncertain. Default: Empty Extension + userscript
Store-safe + GitHub-full
Comments
Live apply
Since v4.51.1
Collapse Similar Comments
commentDuplicateCollapse
Collapse near-duplicate comments under an accessible expander using local text comparison only. Default: Off Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v4.51.1
Hide Comment Composer
hideCommentComposer
Remove the "Add a comment" text field above comments Default: Off Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v4.49.0
Hide Comment Reply Button
hideCommentReplyButton
Remove the Reply button on individual comments Default: Off Extension + userscript
Store-safe + GitHub-full
Comments
Live apply + reversible teardown
Since v4.49.0
Live chat: 7 settings
Setting Purpose Default and accepted values Availability and behavior
Hide Chat Engagement
hideLiveChatEngagement
Remove engagement prompts in live chat Default: On Extension + userscript
Store-safe + GitHub-full
Live chat
Live apply + reversible teardown
Since v0.1.0
Premium Live Chat
premiumLiveChat
Refine live chat with a polished header, raised message rows, and a better composer. Default: On Extension + userscript
Store-safe + GitHub-full
Live chat
Live apply + reversible teardown
Since v0.1.0
Reaction Spammer
reactionSpammer
Select live chat reactions and send them in a randomized loop. Default: Off Extension + userscript
GitHub-full only
Live chat
Live apply + reversible teardown
Store-sensitive
Since v0.1.0
Reaction spammer min interval ms
reactionSpammerMinIntervalMs
Sets the minimum delay between Reaction Spammer actions; runtime enforcement never allows less than 500 ms. Default: 500
Range: 500 to 60000
Extension + userscript
GitHub-full only
Live chat
Live apply
Store-sensitive
Since v4.47.0
Hide Chat Elements
hiddenChatElementsManager
Choose which live chat elements to hide Default: On Extension + userscript
Store-safe + GitHub-full
Live chat
Live apply + reversible teardown
Since v0.1.0
Hidden chat elements
hiddenChatElements
Lists live-chat surfaces hidden while the Chat Elements manager is enabled. Default: 15 selected entries
Choices: header, menu, popout, reactions, timestamps, polls, ticker, leaderboard, support, banner, emoji, topFan, superChats, levelUp, bots, modeNotices
Extension + userscript
Store-safe + GitHub-full
Live chat
Live apply
Since v0.1.0
Chat Keyword Filter
chatKeywordFilter
Hide chat messages containing these words (comma-separated) Default: Empty Extension + userscript
Store-safe + GitHub-full
Live chat
Live apply
Since v0.1.0
Subscriptions: 13 settings
Setting Purpose Default and accepted values Availability and behavior
Subscription View Controls
subscriptionViewControls
Choose Grid, List, or Compact subscriptions layouts and optionally sort the currently loaded cards newest first. Default: Off Extension only
Store-safe + GitHub-full
Subscriptions
Live apply + reversible teardown
Since v4.49.0
Subscription view mode
subscriptionViewMode
Chooses grid, list, or compact presentation for the subscriptions feed view controls. Default: grid
Values: grid, list, compact
Extension only
Store-safe + GitHub-full
Subscriptions
Deferred apply
Since v4.49.0
Subscription order mode
subscriptionOrderMode
Chooses native feed order or newest-first ordering across cards already loaded in the page. Default: native
Values: native, newest-loaded
Extension only
Store-safe + GitHub-full
Subscriptions
Deferred apply
Since v4.49.0
Subscription Groups
subscriptionGroups
PocketTube-grade local groups for your subscriptions feed. Create named groups, add channels via the Edit Channels panel, sort by date/duration/unwatched/new-since-last-visit, and back up or migrate groups with JSON, CSV, or OPML. Default: Off Extension + userscript
Store-safe + GitHub-full
Subscriptions
Live apply + reversible teardown
Since v0.1.0
Subscription group data
subscriptionGroupData
Stores subscription groups, nested parent links, channel memberships, colors, and per-group sort modes. Default: Empty object Extension + userscript
Store-safe + GitHub-full
Subscriptions
Live apply
Since v0.1.0
Subscription sort mode
subscriptionSortMode
Sets the fallback subscription sort when no active group supplies its own sort mode. Default: default
Values: default, date-desc, duration-asc, unwatched, new-since-last-visit, popular
Extension + userscript
Store-safe + GitHub-full
Subscriptions
Live apply
Since v0.1.0
Subscription show new since last visit
subscriptionShowNewSinceLastVisit
Shows per-channel new-since-last-visit badges in Subscription Groups. Default: On Extension + userscript
Store-safe + GitHub-full
Subscriptions
Live apply + reversible teardown
Since v0.1.0
Subscription last visit data
subscriptionLastVisitData
Stores bounded per-channel visit timestamps used to calculate new-since-last-visit counts. Default: Empty object Extension + userscript
Store-safe + GitHub-full
Subscriptions
Live apply
Since v0.1.0
Subscription unsubscribe staging data
subscriptionUnsubscribeStagingData
Stores stale-channel unsubscribe candidates during their 30-day review and recovery window. Default: Empty object Extension + userscript
Store-safe + GitHub-full
Subscriptions
Live apply
Since v0.1.0
Subscription AI tags
subscriptionAiTags
Generates local group tags with the browser built-in Summarizer when that capability is available. Default: Off Extension + userscript
Store-safe + GitHub-full
Subscriptions
Live apply + reversible teardown
Requires summarizerApi
Remote API
Since v0.1.0
Subscription AI tag data
subscriptionAiTagData
Stores generated subscription-group tags and generation timestamps locally. Default: Empty object Extension + userscript
Store-safe + GitHub-full
Subscriptions
Live apply
Since v0.1.0
Subscription filter live
subscriptionFilterLive
Filters currently live cards from the extension subscription view controls. Default: Off Extension only
Store-safe + GitHub-full
Subscriptions
Live apply
Since v4.47.0
Subscription filter streamed
subscriptionFilterStreamed
Filters completed livestream recordings from the extension subscription view controls. Default: Off Extension only
Store-safe + GitHub-full
Subscriptions
Live apply
Since v4.47.0
SponsorBlock, DeArrow, and enrichment: 37 settings
Setting Purpose Default and accepted values Availability and behavior
DeArrow
deArrow
Replace clickbait titles and thumbnails with SponsorBlock data licensed under CC BY-NC-SA 4.0 Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Remote API
Since v0.1.0
Watch Page
daSurfaceWatch
Use DeArrow on the primary video and its metadata Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Remote API
Since v4.86.0
Related Videos
daSurfaceRelated
Use DeArrow in the recommendations beside a video Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Remote API
Since v4.86.0
Home Feed
daSurfaceHome
Use DeArrow on the YouTube home feed Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Remote API
Since v4.86.0
Search Results
daSurfaceSearch
Use DeArrow in YouTube search results Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Remote API
Since v4.86.0
Subscriptions Feed
daSurfaceSubscriptions
Use DeArrow in the subscriptions feed Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Remote API
Since v4.86.0
Playlists
daSurfacePlaylist
Use DeArrow on playlist pages and in the watch-page playlist panel Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Remote API
Since v4.86.0
Replace Titles
daReplaceTitles
Replace clickbait titles with crowdsourced alternatives Default: On Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Remote API
Since v0.1.0
Replace Thumbnails
daReplaceThumbs
Replace clickbait thumbnails with video screenshots Default: On Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Remote API
Since v0.1.0
Title Format
daTitleFormat
How to format replacement titles Default: sentence
Values: sentence, title_case, original
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Casual Mode
deArrowCasualMode
Keep descriptive titles unchanged and only replace titles that have crowd-submitted DeArrow alternatives Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.47.0
Format Original Titles
daFallbackFormat
Format the original title when no crowdsourced submission exists Default: On Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Show Original on Hover
daShowOriginalHover
Hover over a replaced title to see the original Default: On Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Show Original Title
daShowOriginalTitle
Show the original title beneath the DeArrow replacement Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.57.0
Cache Duration
daCacheTTL
Hours to cache branding data locally before refreshing Default: 4
Values: 0, 1, 4, 12, 24, 72
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
SponsorBlock
sponsorBlock
Automatically skip sponsored segments, intros, outros, and other non-content sections using SponsorBlock data licensed under CC BY-NC-SA 4.0 Default: On Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Remote API
Since v0.1.0
SponsorBlock API host
sponsorBlockBaseUrl
Primary HTTPS host used by SponsorBlock and DeArrow. Default: https://sponsor.ajay.app
Values: https://sponsor.ajay.app, https://sponsorblock.kavin.rocks
Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Remote API
Since v4.57.0
SponsorBlock fallback host
sponsorBlockMirrorUrl
Approved HTTPS mirror tried once when the primary host fails. Default: https://sponsorblock.kavin.rocks
Values: (empty), https://sponsor.ajay.app, https://sponsorblock.kavin.rocks
Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Remote API
Since v4.57.0
Skip Sponsors
sbCat_sponsor
Paid promotions and sponsorship segments Default: On Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Remote API
Since v0.1.0
Skip Intros
sbCat_intro
Intro animations and branding Default: On Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Remote API
Since v0.1.0
Skip Outros
sbCat_outro
Endcards and outro sequences Default: On Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Remote API
Since v0.1.0
Skip Self-Promotion
sbCat_selfpromo
Creator promoting their own products or channels Default: On Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Remote API
Since v0.1.0
Skip Interaction Reminders
sbCat_interaction
"Like, subscribe, comment" reminders Default: On Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Remote API
Since v0.1.0
Skip Non-Music
sbCat_music_offtopic
Non-music sections in music videos Default: On Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Remote API
Since v0.1.0
Skip Previews
sbCat_preview
Preview or recap of upcoming content Default: On Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Remote API
Since v0.1.0
Skip Filler
sbCat_filler
Tangential or filler content Default: On Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Remote API
Since v0.1.0
Highlight Point of Interest
sbCat_poi_highlight
Jump to the highlight/point of interest (disabled by default) Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Remote API
Since v0.1.0
SponsorBlock Per-Channel Profiles
sbPerChannelProfiles
Override which SponsorBlock categories are skipped on a per-channel basis. Adds a chip next to the channel name on the watch page to configure overrides. Overrides persist in sbPerChannelProfilesData with a 500-entry cap. Default: Off Extension only
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Remote API
Since v4.47.0
SB per channel profiles data
sbPerChannelProfilesData
Stores extension-only SponsorBlock category overrides keyed by channel. Default: Empty object Extension only
Store-safe + GitHub-full
Player
Deferred apply
Remote API
Since v4.47.0
Return YouTube Dislike
returnDislike
Restore an estimated dislike count via the public Return YouTube Dislike API. Cached locally; respects a 100 req/min budget. No cookies sent. Off by default. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Remote API
Since v0.1.0
Thumbnail Like-Ratio Bars
returnDislikeOnCards
Show an estimated like-ratio bar on visible video thumbnails, using the same bounded Return YouTube Dislike cache. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Remote API
Since v0.1.0
Return dislike cache hours
returnDislikeCacheHours
Sets how many hours Return YouTube Dislike data remains fresh in the local cache. Default: 24
Range: 1 to ∞
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Return dislike show ratio
returnDislikeShowRatio
Shows the estimated like-to-dislike ratio alongside Return YouTube Dislike counts. Default: On Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
De arrow channel overrides
deArrowChannelOverrides
Stores per-channel DeArrow modes so a channel can use replacements, originals, or disable processing. Default: Empty object Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
DeArrow Per-Channel Overrides
deArrowChannelOverridesPanel
Adds a small DeArrow mode chip next to the channel name on the watch page. Cycles through DeArrow → Original → Off → DeArrow per click. Overrides persist in deArrowChannelOverrides keyed by channel ID. Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
DeArrow Voting
deArrowVoting
Vote on DeArrow title replacements. Adds thumbs up/down buttons next to replaced titles on the watch page. Uses a locally generated private userID that never leaves DeArrow requests. Off by default. Default: Off Extension only
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Remote API
Since v0.1.0
DeArrow Peek Button
dearrowPeekButton
Hold Alt to temporarily reveal original YouTube titles (undoes DeArrow/custom titles while pressed) Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Downloads and Astra Downloader: 15 settings
Setting Purpose Default and accepted values Availability and behavior
Download Button
showLocalDownloadButton
Add a yt-dlp download options button on watch pages Default: On Extension + userscript
Store-safe + GitHub-full
Downloads
Live apply + reversible teardown
Local companion
Since v0.1.0
Player Download Menu
videoContextMenu
Right-click on the video player for yt-dlp download actions Default: On Extension + userscript
Store-safe + GitHub-full
Downloads
Live apply + reversible teardown
Since v0.1.0
Download Thumbnail Button
downloadThumbnail
Adds a button below the video to download the current video thumbnail in max resolution Default: Off Extension + userscript
Store-safe + GitHub-full
Downloads
Live apply + reversible teardown
Since v0.1.0
Auto-Download Videos
autoDownloadOnVisit
Automatically start download when visiting a video page Default: Off Extension + userscript
GitHub-full only
Downloads
Live apply + reversible teardown
Local companion
Since v0.1.0
Download Quality
downloadQuality
Preferred video quality for downloads Default: best
Values: best, 2160, 1440, 1080, 720, 480
Extension + userscript
Store-safe + GitHub-full
Downloads
Live apply
Local companion
Since v0.1.0
Video Format
downloadVideoFormat
Default container format for video downloads Default: mp4
Values: mp4, mkv, webm
Extension + userscript
Store-safe + GitHub-full
Downloads
Live apply
Local companion
Since v0.1.0
Audio Format
downloadAudioFormat
Default format for audio-only downloads Default: mp3
Values: mp3, m4a, opus, flac, wav
Extension + userscript
Store-safe + GitHub-full
Downloads
Live apply
Local companion
Since v0.1.0
Download History Panel
downloadHistoryPanel
Adds a searchable, pageable, exportable view of download history recorded by Astra Downloader. Local only, fetched from the local /history endpoint once per session. Default: Off Extension + userscript
Store-safe + GitHub-full
Downloads
Live apply + reversible teardown
Requires mediaDL
Local companion
Since v0.1.0
Downloader Health Pills
downloadHealthPanel
Show pills for Astra Downloader yt-dlp version, ffmpeg freshness, and PO Token provider state next to the download button. Reads /health every 30 s; no extra storage. Default: Off Extension + userscript
Store-safe + GitHub-full
Downloads
Live apply + reversible teardown
Requires mediaDL
Local companion
Since v0.1.0
Stream Links Panel
downloadStreamLinksPanel
Advanced: expose the raw adaptive video/audio stream URLs (mp4/webm) parsed from ytInitialPlayerResponse. Local only, no telemetry. Useful for yt-dlp or VLC handoff. Default off. Default: Off Extension + userscript
GitHub-full only
Downloads
Live apply + reversible teardown
Local companion
Since v0.1.0
Self-hosted Cobalt fallback
downloadCobaltFallback
When Astra Downloader is unreachable, use a self-hosted Cobalt instance after granting access to that one HTTPS origin. Default: Off Extension only
GitHub-full only
Downloads
Live apply + reversible teardown
Remote API
Since v0.1.0
Self-hosted Cobalt origin
downloadCobaltInstance
Required. Enter the root HTTPS origin of a Cobalt instance you operate or are authorized to use; public api.cobalt.tools is not permitted. Default: Empty Extension only
GitHub-full only
Downloads
Live apply
Remote API
Since v0.1.0
VLC / MPV Stream Handoff
vlcMpvHandoff
GitHub-full profile only. Adds buttons next to the player that fire ytvlc:// or ytmpv:// protocol URLs. The protocol handler must be registered on your OS. Astra Deck never runs binaries directly. Default off. Default: Off Extension + userscript
GitHub-full only
Downloads
Live apply + reversible teardown
Local companion
Since v0.1.0
Astra Context Menu
astraContextMenu
Right-click the player or a feed card to get Astra actions: Hide channel, Copy video URL, Copy timestamp link, Open transcript. Default off. On those two surfaces it replaces the native right-click menu; everywhere else on the page the browser menu is untouched. Default: Off Extension + userscript
Store-safe + GitHub-full
Downloads
Live apply + reversible teardown
Since v0.1.0
Subtitle Download (SRT)
subtitleDownload
One-click SRT download of the active caption track. It's a standalone player button, so no sidebar is required. Default: Off Extension + userscript
Store-safe + GitHub-full
Downloads
Live apply + reversible teardown
Since v0.1.0
Subtitles: 12 settings
Setting Purpose Default and accepted values Availability and behavior
Subtitles While Muted
autoSubtitlesWhenMuted
Turn captions on automatically while the video is muted and restore the previous caption state on unmute Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.48.0
Subtitles on Rewind
subtitlesOnRewind
After seeking backwards, show captions for 10 seconds so you can catch the missed line, then restore the previous caption state Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.48.0
Dual-language Subtitles
dualLanguageSubtitles
Show an independently selected second caption track below YouTube captions when available Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v4.51.1
Second Subtitle Language
dualSubtitleLanguage
Choose the caption language rendered below native YouTube captions Default: auto
Values: auto, en, es, fr, de, it, pt, ru, ja, ko, zh, ar
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v4.51.1
Subtitle Styling
subtitleStyling
Override YouTube caption appearance: font size, family, and color, plus background, position, and shadow Default: Off Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Caption Font Size
subStyleFontSize
Scale caption text from 50% to 300% Default: 100
Range: 50 to 300
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Caption Font Family
subStyleFontFamily
Choose the typeface used for captions Default: default
Values: default, sans, serif, mono, YouTube Sans
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Caption Text Color
subStyleColor
Choose the caption foreground color Default: #ffffff
Hex color
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Caption Background Opacity
subStyleBgOpacity
Set the opacity behind caption text Default: 75
Range: 0 to 100
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Caption Background Color
subStyleBgColor
Choose the color behind caption text Default: #000000
Hex color
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Caption Bottom Offset
subStyleBottomOffset
Move captions up from the bottom edge of the player Default: 10
Range: 0 to 90
Extension + userscript
Store-safe + GitHub-full
Player
Live apply
Since v0.1.0
Caption Text Shadow
subStyleTextShadow
Add a dark shadow so captions stay readable over bright video Default: On Extension + userscript
Store-safe + GitHub-full
Player
Live apply + reversible teardown
Since v0.1.0
Research, wellbeing, and AI: 18 settings
Setting Purpose Default and accepted values Availability and behavior
Digital Wellbeing
digitalWellbeing
Break reminders every N minutes of active playback + optional daily watch-time cap. Timers persist across SPA navigation. Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
DW break interval min
dwBreakIntervalMin
Sets the continuous-watch interval after which Digital Wellbeing prompts for a break; zero disables break prompts. Default: 30
Range: 0 to 1440
Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply
Since v0.1.0
DW daily cap min
dwDailyCapMin
Sets the daily watch-time cap enforced by Digital Wellbeing; zero disables the cap. Default: 0
Range: 0 to 1440
Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply
Since v0.1.0
DW watch time today
dwWatchTimeToday
Stores the dated, merge-safe daily watch-time accumulator used by Digital Wellbeing. Default: {"date":"","seconds":0} Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply
Since v0.1.0
Local AI Summary (Browser Built-In)
localAiSummary
Use Chrome's built-in Summarizer API when available; use the configured BYO-key lane when it is unavailable. Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Experimental
Since v0.1.0
Transcript Q&A
localAiTranscriptQa
Ask citation-backed questions with Chrome on-device AI or an explicitly selected configured provider. Default: Off Extension only
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Remote API
Since v0.1.0
Transcript Q&A provider
transcriptQaLane
Choose on-device processing or the configured OpenAI, Anthropic, Gemini, or Ollama provider. Default: on-device
Values: on-device, configured-provider
Extension only
Store-safe + GitHub-full
Watch page
Live apply
Remote API
Since v4.84.3
Study / Work Export
researchSpacedReview
Export study/work-mode data to Markdown or CSV, or build a bounded local transcript study pack from visible videos. Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Transcript Search Index
researchTranscriptIndex
Indexes captions for eligible videos you visit through the shared transcript service, without opening YouTube's transcript panel. Search stays local in IndexedDB; no telemetry. Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Transcript Search Panel
researchTranscriptSearchPanel
Adds a "Search transcripts" button on the watch page that opens a search UI over the local IndexedDB transcript index. Requires Transcript Search Index to be on. Default off. Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Reddit Comments
redditComments
Find Reddit discussions mentioning the current video (button in secondary sidebar) Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Remote API
Since v0.1.0
Watch History Analytics
watchHistoryAnalytics
Modal dashboard visualizing your 30-day YouTube watch time as a CSS bar chart (requires Watch Time Tracker) Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
AI Video Summary
aiVideoSummary
Bring-your-own-key LLM summary of the current video transcript (OpenAI/Anthropic/Gemini/Ollama) Default: Off Extension + userscript
GitHub-full only
Watch page
Live apply + reversible teardown
Remote API
Since v0.1.0
AI summary endpoint URL
aiSummaryEndpoint
Chat-completions endpoint for OpenAI, Anthropic, Gemini, or a local Ollama. Default: https://api.openai.com/v1/chat/completions Extension + userscript
GitHub-full only
Watch page
Live apply
Remote API
Since v0.1.0
AI summary model
aiSummaryModel
Sets the provider-specific model identifier sent with AI video-summary requests. Default: gpt-4o-mini Extension + userscript
GitHub-full only
Watch page
Live apply
Remote API
Since v0.1.0
AI summary provider
aiSummaryProvider
Provider id: openai, anthropic, gemini, or ollama (local). Default: openai
Values: openai, anthropic, gemini, ollama
Extension + userscript
GitHub-full only
Watch page
Live apply
Remote API
Since v0.1.0
Transcript → AI One-Click Handoff
transcriptAiHandoff
Adds a player-button that copies the transcript and opens your chosen AI tool with a summarization prompt pre-filled Default: Off Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply + reversible teardown
Since v0.1.0
Transcript AI target
transcriptAiTarget
Chooses the external AI workspace opened by Transcript to AI Handoff after copying the prepared transcript. Default: notebooklm
Values: notebooklm, chatgpt, claude, gemini, perplexity
Extension + userscript
Store-safe + GitHub-full
Watch page
Live apply
Since v0.1.0
Privacy, profiles, and sync: 10 settings
Setting Purpose Default and accepted values Availability and behavior
Sidebar order
sidebarOrder
Stores the user-defined settings-sidebar category order; null uses the shipped order. Default: None until customized Extension + userscript
Store-safe + GitHub-full
Global
Live apply
Since v0.1.0
Settings Profiles
settingsProfiles
Save, load, switch, import, and export named setting configurations (e.g. Gaming / Work / Music). Controls appear at the top of the settings panel when enabled. Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Feature schedules
featureSchedules
Maps a feature id to an optional active window ({ start, end, days, enabled }) evaluated against the local clock, so a toggle can switch itself on during focus hours and hand back your previous value when the window closes. Default: Empty object Extension + userscript
Store-safe + GitHub-full
Global
Live apply
Since v4.69.0
Privacy data flow panel
privacyDataFlowPanel
Shows the popup data-flow inspector with every API origin and removable runtime host grant. Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Sync settings
syncSettings
Opts the extension into browser-account sync for the bounded safe preference and Video Hider payload. Default: Off Extension only
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v4.59.1
Safe store profile
safeStoreProfile
Keeps the effective profile store-safe, hides GitHub-full controls, and scrubs full-profile values from exports. Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Github full profile
githubFullProfile
Unlocks GitHub-full settings and their explicitly granted optional network capabilities in a compatible build. Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Sync safe prefs
syncSafePrefs
Includes the approved safe preference subset in safe-store profile exports and browser sync. Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Sync safe prefs allowlist
syncSafePrefsAllowlist
Lists the schema keys eligible for the bounded safe-preference sync payload; unknown and unsafe keys are discarded. Default: 87 selected entries Extension + userscript
Store-safe + GitHub-full
Global
Live apply
Since v0.1.0
Storage Quota Management
storageQuotaLRU
LRU-cap growing settings and stores (ytkit-hidden-videos, ytkit-blocked-channels, videoNotesData, ytkit-bookmarks, ytkit-watch-progress, ytkit-watch-time, da_branding_cache, sb_segments_cache) to prevent quota exhaustion Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Accessibility and performance: 11 settings
Setting Purpose Default and accepted values Availability and behavior
Disable SPA Navigation
disableSpaNavigation
Force full page loads instead of YouTube's smooth transitions (fixes player sizing issues) Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Experimental
Since v0.1.0
Reduced Motion (strong)
reducedMotion
Forces every Astra-injected animation, transition, and scroll behavior to be near-instant. Respects the OS prefers-reduced-motion setting automatically; this toggle adds an unconditional override on top. Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Forced Colors / High Contrast Support
forcedColorsSupport
Always active: when the OS reports forced-colors (Windows High Contrast, GTK forced colors), Astra-injected controls automatically use system colors so text remains readable and focus rings are visible. The media query itself is the gate; this toggle is retained for settings compatibility and has no additional effect. Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Live Region For Toasts
globalAriaLiveRegion
Mounts a single hidden role=status / aria-live=polite container under the document body. Screen readers announce any text Astra writes into it (toast bodies, filter outcomes, download status changes). Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Low Power Profile
lowPowerProfile
When on, disables CPU-heavy features (cinema ambient glow, visual filters, playback stats overlay, monetization indicator, transcript index, transcript viewer, blue light filter) and bumps storage LRU sweep cadence. Toggle off to restore previous values from the backup snapshot. Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Privacy Preset
presetPrivacy
Privacy-focused bundle: clean share URLs, hide tracking chips, block infinite scroll, disable SPA navigation. Toggle off to restore prior values. Default: Off Extension only
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Researcher Preset
presetResearcher
Research/study bundle: transcript viewer, timestamp bookmarks, watch time tracker, AI summary, comment search. Toggle off to restore prior values. Default: Off Extension only
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Power User Preset
presetPowerUser
Maximum feature density: playback stats, persistent speed, fine speed control, resume playback, mini player bar, focused mode, A-B loop. Toggle off to restore prior values. Default: Off Extension only
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Focus Preset
presetFocus
Distraction-free viewing: hide Shorts, related videos, infinite scroll, notifications, and autoplay. Enables Zen Mode and Digital Wellbeing tracking. Toggle off to restore prior values. Default: Off Extension only
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v4.47.0
YouTube Music Compatibility
youtubeMusicCompat
Applies Astra Deck themeing + OLED + density features on music.youtube.com. Player-specific features (downloads, RYD, SponsorBlock) keep their existing per-page gating. Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Experimental
Since v0.1.0
API retry backoff
apiRetryBackoff
Enables bounded exponential backoff for retryable external API requests so a failing service is not hammered. Default: On Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Diagnostics: 4 settings
Setting Purpose Default and accepted values Availability and behavior
Debug Mode
debugMode
Enable verbose diagnostic logging to the console Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Diagnostic Error Log
diagnosticLog
Capture a rolling log of YTKit errors and export as JSON for bug reports Default: Off Extension + userscript
Store-safe + GitHub-full
Global
Live apply + reversible teardown
Since v0.1.0
Known-Breakage Notices
featureDisableFeed
Pause features the project has confirmed broken by a YouTube change, until a fix ships. Fetches a small text file from the Astra Deck repository; it can only ever pause a feature, never enable one. Default: On Extension only
Store-safe + GitHub-full
Global
Live apply
Since v4.84.0
Selector auto refresh
selectorAutoRefresh
Checks once a day for an updated page-matching rule set, through the same signed fetch, digest verification and rollback the manual Refresh button uses. Off by default, and no request is made while it is off. Default: Off Extension only
Store-safe + GitHub-full
Global
Live apply
Since v4.89.0

Architecture

network boundary
  rules/zero-ads.json Static MV3 rules, blocks known YouTube ad request surfaces

document_start
  early.css          Zero-ad shell collapse plus feature-scoped anti-FOUC CSS
  ytkit-main.js      MAIN world, canPlayType patching for codec/format filtering

document_idle
  runtime-bootstrap.js  ISOLATED world, reads settings and starts the guarded loader (<150 KB)
  runtime-core-loader.mjs  dynamic module graph, core + download bootstrap + ytkit
  features/*           dynamic, settings-gated feature modules
  background.js      Service worker, fetch proxy, downloads, gated cookie handoff
  • Split-context model, MAIN world for page API interception, ISOLATED world for extension APIs and DOM
  • Lazy runtime graph, normal YouTube pages inject only the small bootstrap; the module catalogue is exposed through a per-session dynamic URL and loaded idempotently after the bootstrap turn
  • Settings gate, a deferred feature module is skipped only when every feature it owns is switched off. Route gating is deliberately absent: a module is not withheld because of the page you happen to be on, since an SPA navigation would then have to fetch it mid-flight. Inline fallbacks preserve startup and userscript parity
  • SPA-aware, hooks yt-navigate-finish, yt-page-data-updated, popstate, and video-id attribute changes
  • Tiered feature init, critical features load synchronously, normal features in requestAnimationFrame, lazy features in requestIdleCallback
  • Crash recovery, features that crash 3 times auto-disable with console warning
  • Conflict map, 6 conflict pairs enforced at both toggle and init time
  • Trusted Types compliant, all innerHTML via TrustedHTML policy wrapper
  • Safe mode, append ?ytkit=safe to any YouTube URL, or ytkit.unsafe() in console to exit

Security

  • Report sensitive security issues through private vulnerability reporting, not public issues.
  • Zero-ad request rules use the static MV3 declarativeNetRequest API, are restricted to YouTube initiators and known advertising endpoints, and do not inspect or transmit request contents
  • Reversible anti-adblock recovery reports the visible YouTube enforcement selector and sampled playback state without touching the native dialog. Pausing Astra's own rules takes an explicit click, shows a 15-minute deadline, and restores them through a browser alarm even after the page closes
  • EXT_FETCH proxy uses domain allowlist, blocks SSRF to private networks
  • Request/response headers filtered (Cookie, Set-Cookie, etc. stripped globally; Authorization only forwarded to explicit BYO-key/local service origins such as OpenAI/Anthropic/Ollama/MediaDL)
  • Response body capped at 10 MB, fetch timeout capped at 60s
  • HTTP methods validated, download URLs protocol-checked (HTTP/S only)
  • Authenticated downloads expose only four required secure YouTube cookie names behind a 20-second, one-use capability bound to the requesting tab and document after Astra Downloader proves native API v2 identity; legacy health tokens cannot release cookies
  • Quick Links blocks javascript:, data:, and vbscript: URIs and accepts only YouTube-owned destinations
  • Explicit CSP: script-src 'self'; object-src 'self'; connect-src allowlists documented provider origins. GitHub-full alone carries a scheme-scoped https://* connection lane because CSP cannot know a user-selected host in advance; browser permissions still require one exact host and never grant all sites.

Verifying a download

Releases carry SHA256SUMS and the allowed-signers file from this repository, and once a signing key is published (see below) a detached SHA256SUMS.sig alongside them. Two commands, and both have to pass. The first says who produced the list of hashes:

ssh-keygen -Y verify -f allowed-signers -I releases@astra-deck   -n astra-deck-release -s SHA256SUMS.sig < SHA256SUMS

The second says your downloads match it:

sha256sum -c SHA256SUMS

ssh-keygen ships with Git for Windows, macOS, and every Linux, so there is nothing to install. On Windows use Git Bash; PowerShell users can substitute Get-FileHash for the second command.

Why both. Releases are built on one machine with no CI, so the artifacts and their checksum file come from the same place. Anyone who can forge one can forge the other, which makes an unsigned checksum file a corruption check and not a provenance claim. The signature is what makes it a claim about origin.

No signing key is published yet, so allowed-signers currently lists none and the first command has nothing to check against. Until it does, treat releases as unsigned and prefer the source tree.

Trust & Transparency

  • Fully open-source, every line of extension, companion, and build tooling is auditable
  • No telemetry, no analytics, no tracking, zero data leaves the browser except to APIs you explicitly enable
  • SBOM + checksummed manifest on every release build: a CycloneDX bill of materials for the npm tree, plus release-manifest.json and SHA256SUMS covering every artifact and the manifest itself. Those let you confirm a download is intact. They do not prove who built it (signing-claim: unverified): no release signing key is published yet, so SHA256SUMS.sig is absent and the hashes travel from the same place as the files. Treat provenance as unverified until allowed-signers carries a key
  • External CRX signing key, maintainer-only, never in the repo or CI
  • Credential scrub on settings export, API keys, tokens, and secrets are automatically stripped
  • Profile-split permissions, store-safe builds retain the authenticated companion handoff but strip AI, Ollama, and user-selected remote origins; GitHub-full keeps those capabilities behind runtime prompts, with Cobalt limited to an authorized self-hosted instance
  • Inspectable remote rules, optional Video Hider subscriptions preserve a hashed last-known-good payload with HTTP validators and visible freshness; stale rules are explicit and user-disableable, never silently replaced by a malformed response
  • A repair channel that can only ever pause, the known-breakage feed names a shipped feature, an issue, and a version range; it cannot enable anything, write a setting, or supply copy, code, or links, and it is switchable off
  • 26+ hardening passes documented in CHANGELOG with per-fix CVE/audit traceability
  • Privacy policy covers data handling for every API origin the extension contacts
  • SponsorBlock data attribution, the SponsorBlock and DeArrow features use SponsorBlock API/database data licensed under CC BY-NC-SA 4.0. Astra Deck may reformat titles and visualize segments; those presentation changes are made by Astra Deck and are not endorsed by SponsorBlock.

Reaction Spammer

The optional Reaction Spammer feature lets you pick a set of YouTube live-chat reactions and fire them in a randomized loop at a chosen interval. It ships in two forms:

  • Bundled in the MV3 extension as a Live Chat feature toggle, surfaces a floating launcher on live_chat pages.
  • Standalone as YT_Reaction_Spammer.user.js, a Tampermonkey / Violentmonkey userscript with no extension dependency.

Default: OFF, opt-in only. Rapid synthetic reactions could trigger YouTube's automated-behavior heuristics and result in account rate- limiting or flagging. The first time you open the launcher per profile, an amber toast surfaces this warning. The minimum interval is clamped to 500 ms in both the extension and the standalone userscript, faster than ~2 Hz is unsafe.

Use at your own risk.


Languages

Astra Deck ships with 11 bundled UI locales. These are extension only, YTKit.user.js bundles no locale catalogues, so the userscript tier is English:

Code Language
en English (default)
ar العربية
de Deutsch
es Español
fr Français
it Italiano
ja 日本語
ko 한국어
pt_BR Português (Brasil)
ru Русский
zh_CN 简体中文

The popup language dropdown's "Auto (browser default)" option shows the detected language inline. The selection writes chrome.storage.local._localeOverride; the in-page YouTube workspace picks up the override on next page navigation. Feature-definition entries inside ytkit.js resolve through generated locale keys with English fallbacks; community translations welcome via PR against extension/_locales/<lang>/messages.json.


Compatibility

Browser Method Status
Chrome / Edge / Brave Extension (MV3) Fully supported
Firefox 142+ Extension (MV3) Supported, but the XPI is unsigned, so a permanent install needs Developer Edition / Nightly / ESR; Release and Beta can only load it temporarily (see Firefox)
Chrome / Firefox Tampermonkey / Violentmonkey Supported (userscript)
Safari Userscripts app Limited

Not supported: Mobile browsers and YouTube Studio. YouTube Music has bounded theme/OLED/density compatibility; embedded /embed/:id pages have bounded player/quality support, not full watch-page parity.

Optional browser capabilities

Astra Deck probes optional APIs before using them. The popup diagnostics bundle includes the same generated matrix used by the runtime at build/browser-capability-matrix.json, so support reports identify both the available capability and the promised fallback.

The platform API adoption policy also records why six newer extension and web APIs are retained or deferred at the Chrome 120 and Firefox 142 floors. A capability doesn't get a second runtime path unless that path lets Astra remove more compatibility code than it adds.

Capability Chromium Firefox Fallback when absent
Built-in Summarizer Chrome 138+ when the local model is exposed Not exposed Local Summary uses the configured BYO-key lane explicitly
Built-in Translator Chrome 138+ when the requested language pack is exposed Not exposed Transcript translation says so and uses the configured BYO-key lane
Astra Downloader Companion health endpoint reachable Same companion contract User-authorized self-hosted Cobalt path after an exact host grant; companion-only panels stay unavailable
Ollama Local server at 127.0.0.1:11434 Same loopback contract Selected remote/BYO provider, never an implicit provider switch
Document PiP Chrome 116+ Firefox 151+ Standard video PiP
Language Detector Chrome 138+ when the local model is exposed Not exposed Conservative text comparison
Prompt API Chrome 138+ when Gemini Nano is ready Not exposed Transcript viewing/export remain available; no implicit remote Q&A

Building

npm ci
npm test
npm run check
# Python dependency auditing lives in the Astra Downloader repository
npm run build                             # Build store-safe + Chromium-store + GitHub-full artifacts
npm run build:userscript                  # Include userscript, SBOM, manifest, and SHA256SUMS
npm run check:zero-ads                    # Validate the static rule contract and packaged manifest
npm run smoke:zero-ads:live               # Cold-load desktop YouTube and verify blocked requests + collapsed shells
npm run smoke:a11y                        # Check real extension pages plus controlled locale and accessibility states
npm run smoke:live-chat                   # Open a current YouTube live-chat frame and verify Astra attached
npm run smoke:firefox                     # Prove Firefox DNR, shell collapse, search, and SPA player behavior
npm run smoke:userscript-managers         # Install and exercise YTKit in real Tampermonkey + Violentmonkey builds
npm run release:browser-smokes            # Run Chromium, live-chat, Firefox, and userscript-manager release gates
npm run smoke:settings-overlay -- --desktop-only # Verify every extension settings destination at desktop sizes
npm run smoke:settings-userscript         # Verify every userscript settings destination at desktop sizes
npm run release:prepare                   # Check + desktop browser gates + build + readiness
npm run release:prepare:no-crx            # Same release gates, without any CRX or maintainer key
npm run release:sbom                      # Regenerate build/astra-deck-npm-sbom.cdx.json
npm run release:manifest                  # Regenerate release-manifest.json + SHA256SUMS
npm run release:readiness -- --require-pass # Generate release readiness JSON/Markdown
npm run release:health                    # Gate manifest, selectors, startup, and real-DOM smoke
npm run release:channels                  # Validate the checked-in channel ledger
npm run release:promote -- --channel userscript # Promote only after release:health passes
npm run release:rollback -- --channel userscript # Restore the recorded artifact without rebuilding
npm run release:verify-digests -- --tag vX.Y.Z # Compare uploaded asset digests after release upload
node build-extension.js --profile store-safe
node build-extension.js --profile chromium-store
node build-extension.js --profile github-full
node build-extension.js --bump patch      # Bump and build
node build-extension.js --bump minor --with-userscript

The UI test inventory drives 44 live builders against connected DOM fixtures. It catches wrong-parent mounts, duplicate children, missing state, and teardown that leaves controls behind.

The live browser gates are desktop-only and require network access, Firefox, and geckodriver on PATH (or FIREFOX_PATH / GECKODRIVER_PATH). They use throwaway Firefox profiles and never touch the normal browser profile. The real-manager lane downloads only the versioned AMO XPI URLs pinned in scripts/userscript-manager-fixtures.json and verifies each size and SHA-256 before temporary installation.

The live Firefox zero-ad smoke also records the home page, search, SPA player, blocked probe, and collapsed ad-shell states. Disposable profile cleanup is bounded to the profile path used by that run.

The pinned manager smoke passes with Violentmonkey 2.47.0 and Tampermonkey 5.5.0. It verifies the install flow and the shell-only userscript contract in fresh Firefox profiles.

The extension loads Player Dock from its preloaded feature module and keeps only a descriptor in the large content-script bundle. The generated userscript core uses the same module source, so runtime checks exercise the code that ships rather than a discarded fallback copy.

Video Hider follows the same layout. Its feed, filter-list, and direct-watch runtime lives in the preloaded feature module, while ytkit.js keeps only the settings descriptor needed if that module cannot load.

The Chromium zero-ad smoke tries the installed browser candidates in order. A candidate without MV3 declarativeNetRequest support is reported and skipped, so a local Chrome policy block does not prevent the Edge proof from running.

npm run build is safe for validation builds: if no maintainer key is configured, CRX files are signed with ephemeral key material that is not retained. Public release builds that include the userscript or bump a version must use the external maintainer key via ASTRA_CRX_KEY_PATH, the default %LOCALAPPDATA%\Astra-Deck\keys\ytkit.pem location, or node build-extension.js --crx-key <path>.

Or skip the CRX entirely. --no-crx (equivalently ASTRA_SKIP_CRX=1) produces the ZIP / XPI / userscript / SBOM / manifest / SHA256SUMS set with no CRX at all, and therefore needs no key, without it a release build with no key aborts before producing anything:

npm run release:prepare:no-crx            # one command: build + SBOM + manifest + readiness
node build-extension.js --with-userscript --no-crx   # or just the build

This is the normal path for this project. Self-hosted CRX installs are Linux-only on modern Chrome, and the last two published releases (v4.50.2, v4.50.7) shipped no CRX at all, so the maintainer key does not gate a release. Release readiness records the build as crxSigningMode: "none" and verifies that build/ really contains no CRX before accepting it.

Outputs in build/ (the .crx files only when the build was not run with --no-crx):

  • astra-deck-chromium-store-chrome-v*.zip (download-free Chrome Web Store / Edge posture)
  • astra-deck-chromium-store-firefox-v*.zip + .xpi
  • astra-deck-store-safe-chrome-v*.zip + .crx (companion-capable self-hosted posture)
  • astra-deck-store-safe-firefox-v*.zip + .xpi
  • astra-deck-github-full-chrome-v*.zip + .crx (AI, local companion, optional self-hosted Cobalt)
  • astra-deck-github-full-firefox-v*.zip + .xpi
  • ytkit-v*.user.js (with --with-userscript / npm run build:userscript)
  • astra-deck-npm-sbom.cdx.json, release-manifest.json, and SHA256SUMS
  • release-readiness/release-readiness.json and release-readiness/release-readiness.md after npm run release:readiness
  • release-health.json after npm run release:health; promotion refuses a failed or stale health report

release-channels.json records the active, last-known-good, and rollback artifact for every extension profile/browser channel plus the userscript. A promotion checks the exact manifest hash and candidate asset digest before moving those pointers. If a release fails after publication, run npm run release:rollback -- --channel <id> (or omit --channel for all channels); rollback points the channel back to the stored artifact reference and does not rebuild or mutate the failed artifact.

Companion release assets are intentionally separate from the default extension build output. Only a companion release/staging pass should add AstraDownloader.exe and AstraDownloader.exe.sha256 to build/. No published release attaches the companion asset pair yet; verify the live release asset list before promising the one-click setup path.

Requires Node 24+ (package.json engines and .nvmrc both pin it).


Power-User Console Helpers

Most controls live in the settings panel; a few advanced flows are exposed only on window.* for power users:

Entry point What it does
?ytkit=safe URL parameter Append to any YouTube URL to load with all features disabled (recovery mode).
ytkit.unsafe() Exit safe mode from the DevTools console.
window.__ytkitOpenAnalytics() Open the Watch History Analytics modal (30-day bar chart of watchTimeTracker data).
window.__ytkitSearchTranscripts(query) Full-text search over the local IndexedDB transcript index (researchTranscriptIndex setting). Returns up to 200 hits.
window.__ytkitClearTranscriptIndex() Wipe the local transcript index.
window.__ytkitDiagnostics.download() Download a JSON bug report containing the diagnostic log ring buffer, selector-health snapshot, and active feature list.
window.__ytkitProfiles Settings profile manager, .save(name), .load(name), .delete(name), .export(), .import(json).
window.__ytkitAnnounce(message) Push a string into the polite screen-reader live region (requires globalAriaLiveRegion).

Documentation

Doc Audience
ROADMAP.md Single source of truth for planned work, existing plans plus research-driven additions.
CHANGELOG.md Per-version release notes
INSTALL.md How to install on Chrome, Edge, Firefox, or as a userscript
HARDENING.md Cumulative hardening / audit log (H1 → H25)
CONTRIBUTING.md Repo layout, build / test commands, "Adding a Feature" guide
SECURITY.md Supported versions and private vulnerability reporting policy
docs/architecture.md Trust boundaries, data flow, where things live, conventions a new contributor needs
docs/cws-submission-checklist.md Chrome Web Store submission preflight (manifest, privacy policy, screenshots)
docs/store-permission-rationale.md Copy-paste store-review permission, host, and single-purpose rationale
docs/privacy-policy.md Stable privacy policy source for README, homepage, CWS, and AMO listing links
docs/selector-fixture-workflow.md How to refresh MHTML captures when YouTube DOM changes
docs/screen-reader-smoke.md NVDA / JAWS / VoiceOver release-gate checklist
docs/predicate-sandbox-investigation.md Threat model and design of the safe expression DSL for advancedLocalPredicate
Astra Downloader cookie threat model Cookie flow and redirect-leak mitigations for Astra Downloader / yt-dlp
docs/signing-keys.md CRX3 packaging key management

Related

Project Description
MediaDL Local download server (yt-dlp + ffmpeg) with one-click installer
YoutubeAdblock Standalone aggressive ad blocker with deeper proxy hooks
Chapterizer Offline AI chapter generation via NLP

License

MIT, Matthew Parker

About

Take back desktop YouTube with classic layouts, Theater Split, cleaner feeds, transcript tools, SponsorBlock, DeArrow, and private controls for Chrome, Firefox, or a userscript.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

13 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages