Astra Deck
Take back desktop YouTube.
Bring back a familiar layout, put comments beside the video, and clear noise from your feed.
If Astra Deck makes YouTube work better for you, a coffee helps me keep the extension and userscript current.
Download for Chromium or Firefox
·
Install the userscript
·
Browse the features
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. A new install looks like YouTube with the clutter gone, so start there and change only what bothers you. If you'd rather have Astra's square, sidebar-free layout with Theater Split, Astra Look under Theme turns it all on at once, and turning it off puts back what you had.
Current build facts
Source-derived project facts
| Fact |
Current source value |
| Release |
v4.107.0 |
| 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 |
509 entries across 18 categories |
| Runtime graph |
130 modules, including 37 peeled feature modules and 312 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 7 full-only origins |
| Themes |
7 named color themes plus oledTheme, denseMode, tokenThemeBridge controls |
| Compatibility modes |
Desktop YouTube extension; YouTube Music excluded; 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:
- 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
- Extract it to a permanent folder
- Open
chrome://extensions/, enable Developer mode
- Click Load unpacked and select the extracted folder
Option B, Local folder:
- Download or clone the
extension/ folder
- Open
chrome://extensions/, enable Developer mode
- 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:addons →
Install 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.
- 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
- Open
about:debugging#/runtime/this-firefox
- 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.
- Open
about:config and set xpinstall.signatures.required to false
- Open
about:addons → gear icon → Install Add-on From File
- 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)
Install Tampermonkey or Violentmonkey, then open YTKit.user.js and confirm the install. It updates itself.
Tested with: Firefox with Violentmonkey 2.47.0, and Firefox with Tampermonkey 5.5.0. The release smoke (npm run smoke:userscript-managers) installs the userscript in each one and checks it on live YouTube. Chrome, Edge and other Chromium browsers run the same build, but the smoke doesn't drive a manager there yet.
The userscript is the extension. It runs the same files, so you get the same features, settings panel, themes and Theater Split, and a fix to one is a fix to both. YTKit.user.js is a small host that stands in for the browser's extension APIs using your manager's GM_* grants. It loads three libraries (YTKit-core, YTKit-features and YTKit-app) with @require from jsDelivr's mirror of this repository, pinned to the exact commit of the release that matches its version, and node sync-userscript.js builds all four files from extension/. A commit pin can't be moved later, the way a tag or a branch can. Each @require and translation @resource also ends in #sha256= and the hash of the exact file it should get. Tampermonkey checks it and won't run a file that doesn't match. Violentmonkey doesn't check these hashes yet.
A few things work differently because a userscript manager isn't a browser extension:
- Ads. The userscript hides ad shells from
document-start, but it can't block the ad requests themselves. Use the extension if you want that.
- Settings Sync needs the browser's sync storage, so it's extension-only. It's the one setting the userscript doesn't have.
- New sites ask first. The first time a feature reaches a new host (Return YouTube Dislike, SponsorBlock, or Astra Downloader on
127.0.0.1), your manager asks you to allow the connection.
- Settings live in your manager's storage. Settings saved by the older userscript carry over the first time the new one runs.
- AI provider keys go in through your manager's menu (AI provider key under Astra Deck), since there's no toolbar popup. They're kept in the manager's storage, where YouTube's own scripts can't read them. Keys you saved in the older userscript still work.
- Bug reports. There's no popup to save a diagnostics file from, so pick Copy Astra Deck diagnostics in your manager's menu, or click the bug button at the bottom of the settings sidebar, then paste the result into your issue. API keys and other secrets are redacted the same way the extension's file does it.
- Pair Astra Downloader once. The extension gets the companion's token through native messaging, and a userscript can't. In Astra Downloader 2.16.0 or newer, open Browser extension and choose Pair userscript, then press a download button on YouTube within two minutes. The token stays in your manager's storage. Regenerating it in Astra Downloader's Settings unpairs the userscript.
- Signed-in downloads need the extension. The extension hands your YouTube sign-in to Astra Downloader only after the companion proves itself through native messaging, and a userscript can't do that. Members-only and age-restricted videos won't download from the userscript.
Downloads go through the optional Astra Downloader companion, the same as the github-full extension, and a Cobalt instance you run or are allowed to use works after you grant its exact origin. Neither build calls public Cobalt or community downloader APIs. The old userscript's own MP3, VLC, MPV and web-page download buttons are gone. The download panel covers them, and VLC / MPV handoff is a setting there.
The store-safe and github-full extension profiles can use Astra Downloader, and the chromium-store artifact is download-free. Astra Deck doesn't 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 |
Off (Astra Look) |
| Video Hider, hide videos/channels from feeds with X buttons, keyword filter, regex, duration filter |
On |
| Watch Feed, queue videos from thumbnails or watch pages and play them in order |
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 |
On |
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.
Watch Feed
Build a lineup while you browse. A large button in the upper-left corner of
each thumbnail adds or removes that video across Home, Subscriptions, search
results, channel pages, related videos, Shorts, and playlists. The same control
sits with the actions on every watch page.
Open the floating Watch Feed control, reorder the list if needed, then choose
Start watching. The current video stays in the feed until it finishes.
Astra removes it at the handoff and opens the next one. When the final video
ends, the feed is empty. If auto-advance is off, a finished queued video is
still cleared and the next one waits for you.

Interface
| Feature |
Default |
| Logo Quick Links, hover dropdown with History, Watch Later, Playlists, Liked, Subs |
On |
| Hide Shorts / Thin Scrollbar |
On |
| Hide Sidebar / Hide Related / Hide Description |
Off (Astra Look) |
| Subscriptions Grid / Homepage Grid Align |
Off (Astra Look) |
| Styled Filter Chips / Compact Layout |
Off (Astra Look) |
| Square Search Bar / Square Avatars |
Off (Astra Look) |
| Compact Unfixed Header / Force Dark Everywhere |
Off |
Watch Page
| Feature |
Default |
| Watch Page Restyle, matched dark and light canvas, search, metadata, actions, and comments |
Off (Astra Look) |
| Native Comments Layout, keep YouTube comments clean without extension restyling |
On |
| Disable Ambient Mode |
On |
| Expand Video Width |
Off (Astra Look) |
| 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 |
| Length in a channel's Videos sort menu (longest first) |
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 |
| Block Comment Authors, a Block item in each comment's menu that hides that person's comments and replies everywhere (signed out, or with the menu hidden, the comment gets its own Block button) |
On |
| 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.
Theater Split
Keep the video visible while you read or write comments. It's off on a new install, so turn it on under Watch Page or with Astra Look. Click the divider to collapse comments, then click the visible rail to bring them back. Drag it to change the width. Narrow panes stack the metadata so the title and channel controls stay readable. On a past live stream, the pane opens on comments and the tabs switch to live chat replay.
Home and Subscriptions use the same charcoal surfaces and restrained accents. Their grid settings keep titles aligned, while List and Compact views remain available in Subscription View Controls. Existing layout preferences stay saved. Each surface also follows YouTube's light mode.
Captured on YouTube in an offscreen browser session running this version's Theater Split.
Run node scripts/smoke-experience-live.js --browser <chromium-path> for an isolated live interaction check. It covers sidebar toggles, feed navigation, comments menus, divider drags and responsive layouts in both themes. Personal subscriptions require sign-in; the signed-out check uses public video cards to verify populated subscription layouts.
- Charcoal settings workspace with clear section headings and grouped controls across eleven pages
- 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. Import also takes BlockTube and ChannelSieve backups
- 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 504 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: 52 settings
| Setting |
Purpose |
Default and accepted values |
Availability and behavior |
Widen Search Bar
widenSearchBar |
Expand the search bar to use more available space |
Default: Off |
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: Off |
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: Off |
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: Off |
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: Off |
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: Off |
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: Off |
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: rounded 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: Off |
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: Off |
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: Off |
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 |
Sort Channel Videos by Length
channelLengthSort |
Adds Length to the sort menu on a channel's Videos tab. Picking it loads every video and puts the longest first. |
Default: On |
Extension + userscript Store-safe + GitHub-full Global Live apply + reversible teardown Since v4.100.0 |
Expand Video Width
expandVideoWidth |
Stretch the video to fill the space when sidebar is hidden |
Default: Off |
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: Off |
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 |
Action Notices
actionToasts |
Show a short popup after actions like hiding a video, marking one as watched or skipping a chapter. Off by default. Warnings and errors still pop up, screen readers still hear every notice, and the settings panel keeps its own confirmations. |
Default: Off |
Extension + userscript Store-safe + GitHub-full Global Live apply Since v4.95.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 |
Astra Look
presetAstraLook |
Square corners, no left sidebar, denser grids, a restyled watch page, the Player Dock, and Theater Split. Toggle off to restore prior values. |
Default: Off |
Extension + userscript Store-safe + GitHub-full Global Live apply + reversible teardown Since v4.106.0 |
Classic YouTube
presetClassicLook |
YouTube's own layout: rounded corners, the sidebar, avatars, related videos and the description, with Astra's clean-up still on. Toggle off to restore prior values. |
Default: Off |
Extension + userscript Store-safe + GitHub-full Global Live apply + reversible teardown Since v4.106.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 + userscript 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: On |
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 |
Show Avatars and Feed Shelves
restoreNativeYouTubeUi |
Keep channel and comment avatars and the home feed shelves. Turn this off for a sparser page without them. |
Default: On |
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: Off |
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 + userscript 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 + userscript 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: 15 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, Search and channel video cards as rows with thumbnails on the left and metadata on the right. On Subscriptions the View switcher takes over when it's on. 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 |
Views on Their Own Line
viewsOnSeparateLine |
On Home and Subscriptions, put the views and the upload age back on their own line under the channel name, so a long channel name no longer cuts them off. |
Default: Off |
Extension + userscript Store-safe + GitHub-full Feeds Live apply + reversible teardown Since v4.98.0 |
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 Thumbnail Badges
hideThumbnailBadges |
Hide the "New", "4K" and "CC" badges on video cards. The duration and the watched bar stay. |
Default: Off |
Extension + userscript Store-safe + GitHub-full Feeds Live apply + reversible teardown Since v4.97.0 |
Hide Unrelated Search Shelves
searchHideUnrelatedShelves |
Keep direct video, channel, and playlist results while hiding unrelated search-page shelves. |
Default: Off |
Extension + userscript 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 + userscript 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 + userscript Store-safe + GitHub-full Feeds Live apply + reversible teardown Since v4.49.0 |
Watch page and player controls: 76 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: Off |
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: Off |
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: Off |
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 and the Summary row on search results |
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 + userscript 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 + userscript 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 |
Classic Watch Layout
restoreClassicWatchLayout |
Undoes the side-panel watch page YouTube started testing in October 2026. Comments and the description go back under the video, recommendations go back to the right and the theater button returns. |
Default: Off |
Extension + userscript Store-safe + GitHub-full Watch page Live apply + reversible teardown Experimental Since v4.98.0 |
Extra Layout Flags
watchLayoutFlagOverrides |
Astra already turns off the flags behind the side-panel page. Add a flag name per line to turn off more of them, or put a minus sign in front of one of Astra's to leave it on. |
Default: Empty |
Extension + userscript Store-safe + GitHub-full Watch page Live apply Experimental Since v4.98.0 |
Hide AI Chapters
hideAutoChapters |
Removes the chapters YouTube generates on its own, from the progress bar and the chapters panel. Chapters the creator wrote in the description stay. |
Default: Off |
Extension + userscript Store-safe + GitHub-full Watch page Live apply + reversible teardown Since v4.98.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 + userscript 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 + userscript 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 |
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 + userscript 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 + userscript 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: 110 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 + userscript 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 + userscript 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 + userscript 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 + userscript 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 + userscript 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 + userscript 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 + userscript 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 + userscript 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 + userscript 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 + userscript 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 + userscript 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 + userscript 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 + userscript 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 + userscript 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 + userscript 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 |
Turn off YouTube's Stable Volume and stop the volume slider drifting below 100%. YouTube still turns down loud videos. |
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 |
Keep Translated Titles For
antiTranslateChannelExceptions |
Channels whose translated titles stay as YouTube shows them. One channel ID (UC...) or /channel/ link per line. Handles aren't used, since one can change hands. |
Default: Empty |
Extension + userscript Store-safe + GitHub-full Feeds Live apply Since v4.103.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 + userscript 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: 49 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 + userscript 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. Videos you hid yourself still show on their own channel. |
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 |
Made With AI Label
hideVideosMadeWithAiFilter |
Hide videos YouTube labels as made with AI. Astra learns the label when you open a video, then hides that video's cards everywhere. Sends nothing. |
Default: Off |
Extension + userscript Store-safe + GitHub-full Feeds Live apply + reversible teardown Since v4.97.0 |
Look Up AI Labels
hideVideosMadeWithAiLookups |
Works with Made With AI Label. Asks YouTube for each card's label so labeled videos hide before you open them: one small request per card, four at a time, without your cookies. |
Default: Off |
Extension + userscript Store-safe + GitHub-full Feeds Live apply + reversible teardown Remote API Since v4.97.0 |
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 + userscript 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 |
Watch Feed
persistentQueue |
Build a local Watch Feed from video pages and thumbnails, then play it in order. |
Default: On |
Extension + userscript Store-safe + GitHub-full Global Live apply + reversible teardown Since v4.48.0 |
Watch Feed Auto-Advance
persistentQueueAutoAdvance |
Remove the finished video and start the next Watch Feed entry automatically. |
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 + userscript 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: 26 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 + userscript 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 + userscript 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 |
Block Comment Authors
commentAuthorBlock |
Adds Block to the menu on every comment. Comments and replies from a blocked author stay hidden on every video. |
Default: On |
Extension + userscript Store-safe + GitHub-full Comments Live apply + reversible teardown Since v4.91.0 |
Blocked Comment Authors
commentBlockedAuthors |
One author per line: an @handle, a channel id, or a channel link. Delete a line to unblock that author. |
Default: Empty |
Extension + userscript Store-safe + GitHub-full Comments Live apply Since v4.91.0 |
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 + userscript 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 + userscript 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 + userscript 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. Import also reads the subscriptions you export from Google Takeout or NewPipe. |
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 + userscript 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 + userscript Store-safe + GitHub-full Subscriptions Live apply Since v4.47.0 |
SponsorBlock, DeArrow, and enrichment: 48 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: On |
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 |
Covers Without a Submission
daThumbFallback |
What replaces a thumbnail nobody has submitted to DeArrow yet. Random frame matches DeArrow itself, and the stills are frames YouTube takes from every upload. |
Default: random Values: random, start, middle, end, original |
Extension + userscript Store-safe + GitHub-full Player Live apply + reversible teardown Remote API Since v4.99.0 |
Hide While Loading
daHideWhileFetching |
Hide a card's title and thumbnail until DeArrow answers, so the clickbait never flashes. They come back after 7 seconds if it doesn't. |
Default: On |
Extension + userscript Store-safe + GitHub-full Player Live apply + reversible teardown Since v4.101.0 |
Thumbnail Saturation
daThumbSaturation |
Fades the color out of thumbnails on cards DeArrow handles. 0% is black and white. |
Default: 100 Range: 0 to 100 |
Extension + userscript Store-safe + GitHub-full Player Live apply + reversible teardown Since v4.101.0 |
Remove Emojis
daCleanEmojis |
Strips emojis and fancy lettering from the titles DeArrow formats. |
Default: On |
Extension + userscript Store-safe + GitHub-full Player Live apply + reversible teardown Since v4.101.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 |
Casual Votes: Funny
daCasualFunny |
Votes in the funny category that keep an original title in casual mode. 0 ignores the category. |
Default: 1 Range: 0 to 10 |
Extension + userscript Store-safe + GitHub-full Player Live apply + reversible teardown Since v4.101.0 |
Casual Votes: Creative
daCasualCreative |
Votes in the creative category that keep an original title in casual mode. 0 ignores the category. |
Default: 1 Range: 0 to 10 |
Extension + userscript Store-safe + GitHub-full Player Live apply + reversible teardown Since v4.101.0 |
Casual Votes: Clever
daCasualClever |
Votes in the clever category that keep an original title in casual mode. 0 ignores the category. |
Default: 1 Range: 0 to 10 |
Extension + userscript Store-safe + GitHub-full Player Live apply + reversible teardown Since v4.101.0 |
Casual Votes: Descriptive
daCasualDescriptive |
Votes in the descriptive category that keep an original title in casual mode. 0 ignores the category. |
Default: 1 Range: 0 to 10 |
Extension + userscript Store-safe + GitHub-full Player Live apply + reversible teardown Since v4.101.0 |
Casual Votes: Other
daCasualOther |
Votes in the other category that keep an original title in casual mode. 0 ignores the category. |
Default: 1 Range: 0 to 10 |
Extension + userscript Store-safe + GitHub-full Player Live apply + reversible teardown Since v4.101.0 |
Format Accepted Originals
daCasualFormat |
In casual mode, still format an original title that voters accepted. |
Default: On |
Extension + userscript Store-safe + GitHub-full Player Live apply + reversible teardown Since v4.101.0 |
Keep the Thumbnail Too
daCasualOriginalThumb |
In casual mode, also keep the creator's thumbnail when voters accepted the original title. |
Default: Off |
Extension + userscript Store-safe + GitHub-full Player Live apply + reversible teardown Since v4.101.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. Click a segment on the progress bar to watch it instead. |
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 + userscript 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 + userscript 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 |
DeArrow 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 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 |
Restore Deleted Video Titles
filmotTitleRestore |
Puts titles back on deleted and private videos in a playlist, after you turn on Show unavailable videos in the playlist's menu. Sends those video IDs to Filmot using your own API key, set in the toolbar popup. Without a key, each row links to Filmot's page for that video. |
Default: Off |
Extension + userscript GitHub-full only Feeds Live apply + reversible teardown Remote API Since v4.107.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 + userscript 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 + userscript 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 + userscript 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 + userscript 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: 85 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: 10 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 + userscript 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 + userscript 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 + userscript 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 + userscript Store-safe + GitHub-full Global Live apply + reversible teardown Since v4.47.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 + userscript 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 + userscript 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
- Private windows keep watch history, the Watch Feed, bookmarks, caches and
diagnostics in the tab's memory, never in the regular profile. Their background
requests go out without cookies, and the download handoff reads only the private
tab's own cookie store or stops
- 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 build and packaging tooling (the extension itself bundles no npm packages), 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 in 11 languages. The extension bundles them, and the userscript loads the same catalogues through @resource lines (each pinned by its SHA-256), so both show the same translations. Every language is translated apart from brand names and a few code terms; docs/i18n-coverage.md has the figures for each one.
| 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, YouTube Music, and YouTube Studio. 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 diagnostics bundle (the
popup's Save, the settings panel's bug button, or the userscript menu) 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:main-bridge:live # Check on live YouTube that page-context features get their settings and a page can't forge them
npm run smoke:a11y # Check real extension pages plus controlled locale and accessibility states
npm run visual:popup # Compare the real popup against saved baselines in Chromium and Firefox, light and dark
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 smoke:private-window # Use Watch Feed and bookmarks in real private windows and check regular storage and cookies stay untouched
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, and how to move over from BlockTube, Iridium or Enhancer |
| HARDENING.md |
Cumulative hardening / audit log (H1 → H25) |
| CONTRIBUTING.md |
Repo layout, build / test commands, "Adding a Feature" guide |
| SECURITY.md |
Supported versions, what you can check about a release yourself, and private vulnerability reporting |
| 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