Skip to content

Repository files navigation

RumbleX

VersionLicensePlatformFirefox

The ultimate Rumble enhancement suite. 130+ feature modules across 14 categories — ad blocking, theater mode, video downloads with CDN deep-scan probing and an opt-in Mediabunny muxer path, five-theme engine (now including OLED Green), playback controls, chat enhancements with deterministic username colors and tier-filtered rants, chapters, SponsorBlock, clips, live DVR, transcripts, auto-hide chrome, 50+ granular hide-X toggles for every Rumble row/button/player control, thumbnail hider, dense mode, reduced-motion path, tracking-param stripping, external player handoff (MPV/PotPlayer), and full-round-trip backup/restore with snapshot history. Chrome MV3 + Firefox MV2 + userscript.

What's new in v2.x

  • v2.0 — Core engine: schema-v2 migration, selector registry (27 named surfaces with stable+fallback selectors), route lifecycle (history + htmx hooks), 70+ new settings keys, OLED Green theme.
  • v2.1 — Premium UI superset: thumbnail hider (master/feeds/related scopes), dense mode, account-pagination compaction, reduced-motion path, home cleanup presets (focused/minimal/custom), DarkEnhance now writes Rumble's native CSS tokens.
  • v2.2 — Download Manager 2.0 phase 1: external player handoff (MPV/PotPlayer/custom URI), shared media probe cache with TTL.
  • v2.3 / v2.4 — Live chat hardening + feed moderation: rant-tier filter, chat username colors (deterministic/tiered), keyword-filter modes (literal/regex/wildcard), tracking-param stripping (e9s, utm_*, fbclid, gclid, etc.).
  • v2.6 — Privacy & data: privacy report API, backup-snapshot history, selector-telemetry export.

Features

Ad Blocking

  • Ad Nuker — CSS + DOM removal of ads, pause overlays, premium nags, IMA SDK, LRT
  • Feed Cleanup — Remove premium promos from feeds
  • Hide Reposts — Hide reposted videos from feeds
  • Hide Premium — Hide premium/PPV videos via CSS :has()
  • Shorts Filter — Hide Shorts cards from all feeds
  • Platform Cleanup — Optionally redirect the dedicated Shorts feed, hide Rumble Wallet tip controls, and remove Premium/Perplexity promos
  • SponsorBlock — Per-video local segments with auto-skip (sponsor / intro / outro / selfpromo / interaction), progress-bar markers, JSON import + export

Video Player

  • Theater Split — Fullscreen video with scroll-to-reveal side panel (chat/comments/download)
  • Auto Theater — Auto-enter native theater mode on load
  • Full-Width Player — Maximize player width; on live streams, side-by-side chat layout with responsive stacking ≤ 1100 px
  • Adaptive Live Layout — Expand main content whenever chat is visible on live streams
  • Speed Control — Persistent playback speed (0.25x–3x) with live stream detection
  • Scroll Volume — Mouse wheel volume + middle-click mute + overlay
  • Auto Max Quality — Auto-select highest resolution on load
  • Autoplay Block — Prevent auto-play of next video
  • Loop Control — Full video loop + A-B segment loop
  • Mini Player — Floating draggable video when scrolling away
  • Keyboard Nav (legacy) — YouTube-style hotkeys (J/K/L, F, M, 0-9, arrows). Disabled by default in v2 — visible controls preferred; flip on under Core if you still want them.
  • Video Stats — Resolution, codec, buffer, frames overlay
  • Chapters — Parse description timestamps, render tick marks on the seek bar + clickable chapter list
  • Autoplay Queue — FAB-pinned queue of Rumble URLs, auto-advances when current video ends

Theme & Layout

  • Dark Theme — Multi-theme engine with 4 built-in themes and player bar coloring
    • Catppuccin Mocha (default) — Purple/blue accents
    • YouTubify — YouTube dark-mode look with red accent and progress bar
    • Midnight AMOLED — Pure black with indigo accents
    • Rumble Green — Dark with Rumble's native green identity
  • Site Theme Sync — Mirror Rumble's native system / dark / light setting
  • Wide Layout — Full-width responsive grid on home and subscriptions
  • Auto-Hide Header — Fade the header out, reveal on top-edge cursor
  • Auto-Hide Nav Sidebar — Hide nav, reveal on left-edge hover (30-px trigger strip)
  • Logo to Feed — Rumble logo navigates to Subscriptions feed
  • Auto Expand — Auto-expand descriptions and comments
  • Auto Load Comments — Scroll-triggered Show more comments clicks
  • Notif Enhance — Themed notification dropdown + bell pulse
  • Full Titles — Remove title truncation on video cards
  • Title Font — Unbold + normalize title typography

Downloads & Capture

  • Video Download — Download as direct MP4 or HLS-to-MP4/TS via Web Worker transmuxing. Default engine is the pinned mux.js path; advanced settings include an experimental Mediabunny + WebCodecs engine with golden-sample output parity and bounded fallback to mux.js when WebCodecs, module startup, or conversion is unavailable. RumbleX-owned browser transfers pause on offline events and queue safe ID-only resumes for the next online event, without persisting signed media URLs. Includes an automatic Deep Scan (RUD) that probes hugh.cdn.rumble.cloud for every quality variant the embed API didn't surface (1080p/720p/480p/360p/240p × mp4/tar × live/vod), with live progress bar, per-row copy-link buttons, and support for TAR live-replay archives (with inline extract with 7-Zip, drop the .m3u8 into VLC hint).
  • Failure diagnostics — Failed quality discovery, direct downloads, HLS fetches, clip exports, archive jobs, and muxing paths expose copy/export controls beside the error and in Options → Privacy & Data. The local-only 50-attempt ring includes failure stage, selected quality, muxer/fallback path, and worker/offscreen capabilities; URL credentials, query values, fragments, cookies, and token-like data are redacted before storage.
  • Low-Bitrate MP4 (for listening) — Download the smallest video variant for background audio (saved as .mp4 — honest naming; Rumble doesn't expose a pure audio track).
  • Video Clips — Mark In/Out on the player and export a clip as MP4 (segment slicing + transmux)
  • Live DVR — Save the last 30 s / 1 m / 5 m / 10 m of a live stream as MP4
  • Batch Download — Multi-select thumbnails across feeds to bulk-download direct MP4s
  • Channel Archive Queue — Queue a channel for persistent background downloads, preflight selected quality and known size, pause/resume or retry failures, round-trip the queue as local JSON, and optionally stream into a persisted Chrome/Edge folder with browser Downloads as the fallback. Connectivity loss aborts selected-folder streams safely, pauses resumable browser transfers, and leaves restartable archive jobs waiting for the online event/alarm recovery pass.
  • Screenshot — Capture current video frame as PNG
  • Share@Time — Copy video URL at current playback timestamp
  • Subtitle Sidecar — Load local SRT/VTT and overlay captions on the player
  • Transcripts — Clickable, searchable transcript panel synced to the player

History & Bookmarks

  • Watch Progress — Save/resume position + red progress bars on thumbnails
  • Watch History — Local browsable watch history with search
  • Search History — Recent searches dropdown on search input
  • Bookmarks — Save videos locally for later (200 max)
  • Quick Save — Watch Later button on thumbnail hover

Comments & Chat

  • Auto Like — One-shot auto-click of the like button on watch pages
  • Comment Blocking — Per-commenter block list with inline block button on every comment (parallel to the existing chat user-block)
  • Chat Enhance — @mention highlights (TreeWalker-safe — no innerHTML round-trip), message filter bar
  • Chat Scroll — Smart auto-scroll with pause on scroll-up
  • Unique Chatters — Live counter of unique chatters + total messages above chat
  • User Block — Per-user chat hide with inline block button on every message
  • Spam Dedup — Hide recently-repeated identical messages (30-message rolling window)
  • Chat Export — TXT (click) or JSON (shift-click) export including rant amounts
  • Popout Chat — Open chat in a separate resizable window (uses Rumble's native popout where available)
  • Timestamps — Clickable timestamps in comments and description
  • Comment Nav — Navigate, expand/collapse, OP-only filter
  • Comment Sort — Reorder comments: Top / New / Oldest / Controversial
  • Rant Highlight — Glow rants by tier + running $ total
  • Rant Persist — Keep rants visible past their expiry + per-video cache + JSON export

Feed Controls

  • Channel Blocker — Block/hide channels from all feeds
  • Keyword Filter — Hide videos whose titles contain blocked keywords
  • Related Filter — Search and filter related sidebar videos
  • Exact Counts — Show full numbers instead of 1.2K/3.5M abbreviations

Hide-X Toggles (50 modules, all opt-in)

Driven by the RX_CSS_TOGGLES registry — each toggle is a proper feature module with its own setting key, hot-reload support, and options-page card:

GroupCountSample toggles
Main Page Layout25widenSearchBar, hideUploadIcon, hideHeaderAd, hideFeaturedBanner, hideForYouRow, hideGamingRow, hideFinanceRow, hideNewsRow, hideSportsRow, hideFooter, …
Video Page Layout5hideRelatedOnLive, hideRelatedSidebar, widenContent, hideVideoDescription, hidePausedVideoAds
Player Controls9hideRewindButton, hideCCButton, hideAutoplayButton, hideTheaterButton, hidePipButton, hideFullscreenButton, hidePlayerRumbleLogo, hidePlayerGradient, …
Video Buttons8hideLikeDislikeButton, hideShareButton, hideRepostButton, hideEmbedButton, hideSaveButton, hideCommentButton, hideReportButton, hidePremiumJoinButtons
Comments2moveReplyButton, hideCommentReportLink
Chat1cleanLiveChat

Settings

Options Page (full editor)

Click the extension icon → gear button to open the dedicated options page. Modelled on Astra-Deck's settings workspace:

  • App bar with version + live storage status
  • Workspace hero + Open Settings Editor CTA
  • 5-card stats overview (Enabled features, Storage size, Channels, Keywords, Chatters)
  • Full-parity Export / Import — backups now include both rx_settings AND per-origin localStorage (watch progress, watch/search history, bookmarks, volume memory, rant archives). Export format: exportVersion: 2; v1 imports still work. Imports are allowlisted by key so a crafted file cannot smuggle arbitrary localStorage keys onto rumble.com.
  • Reset All Data broadcasts clearLocalData to every open Rumble tab and reports the honest "Cleared N per-site keys across M tabs" count
  • Settings editor modal with dirty-draft workflow: search, sidebar group nav (9 groups), chips for unsaved / needs-attention, Restore Defaults / Discard / Save toolbar, per-field Reset buttons, and non-blocking close/reset feedback
  • Per-control editors infer from value type: toggle / number / text / textarea / list / JSON / enum-dropdown (theme & siteTheme)
  • Focus trap, no confirmation prompts, live re-sync via chrome.storage.onChanged
  • Major popup/options labels and settings groups resolve through the shipped locale catalogs with English fallbacks.

In-page Quick Modal (on-tab)

Press Ctrl+Shift+X on any Rumble page (or shift-click the popup gear) to open the original in-page settings modal with:

  • 7 categorized sidebar tabs with color-coded icons
  • Theme picker with live preview dots
  • Playback speed slider
  • Homepage category visibility toggles
  • Blocked channels / keywords / chatters chip lists
  • Hot-reload: most features re-init without a page reload

Popup

Click the extension icon for quick toggles, grouped by category with enabled-count badges:

  • Polished compact command surface with status feedback, 7 collapsible category groups, visible focus states, and accessible icon labels
  • Debounced writes (120 ms) with pagehide flush — rapid toggles coalesce into one write
  • Settings gear — Opens the options page (shift-click for in-page modal)
  • GitHub link — Direct link to this repository
  • Update checker — Checks GitHub Releases for new versions

Install

Chrome / Edge / Brave (MV3)

  1. Grab RumbleX-chrome.zip from Releases
  2. Extract the zip
  3. Visit chrome://extensions and enable Developer mode
  4. Click Load unpacked and select the extracted folder

Or drag RumbleX-v1.9.3.crx directly onto chrome://extensions (Developer mode on).

Firefox (109+)

  1. Download RumbleX-firefox.zip from Releases
  2. Go to about:debugging#/runtime/this-firefox
  3. Click Load Temporary Add-on and select manifest.json inside the extracted folder

Tampermonkey (Userscript)

Install RumbleX.user.js directly — note: the userscript version lags behind the extension on download features (no Web Worker / mux.js bundle).

Tech Stack

  • Vanilla JavaScript — no frameworks, no build step
  • Chrome Extension Manifest V3 + Firefox Manifest V2 (parallel manifests)
  • chrome.storage.local for settings persistence
  • localStorage (per-origin) for watch progress, volume memory, history, rant archives
  • mux.js (bundled) for default HLS segment transmuxing in a Web Worker
  • Mediabunny 1.46.0 (bundled, opt-in) for the experimental WebCodecs-era HLS-to-MP4 path
  • AbortController + generation-counter guards for cancellable async work
  • Anti-FOUC: CSS injected at document_start
  • GitHub Releases API for update checking
  • Download host allowlist (rumble.com, 1a-1791.com, rumble.cloud) enforced in the background worker

Architecture

flowchart LR
Site[Rumble page] --> Content[content.js]
Content --> Core[Settings + Page + Selectors + Router]
Core --> Features[Feature modules]
Content <--> Worker[worker.js / mediabunny-worker.js]
Content <--> Background[background.js service worker]
Popup[Popup / Options / Side panel] <--> Background
Content <--> Storage[chrome.storage.local + site localStorage]
Background <--> Storage
Background --> Downloads[chrome.downloads]
Background <--> Offscreen[offscreen document]
Loading

content.js owns page classification, selector contracts, route lifecycle, and injected features. background.js is the privileged boundary for downloads, context menus, notifications, tab operations, queue alarms, and offscreen work. Popup/options/side-panel pages edit the same settings catalog in chrome.storage.local; per-Rumble history and bookmark data remains on the Rumble origin.

Feature-module template

constExampleFeature={id: 'exampleFeature',name: 'Example Feature',_control: null,_routerUnsub: null,_mount(){constanchor=Selectors.find('watch.share');if(!anchor||this._control)return;this._control=document.createElement('button');this._control.type='button';this._control.textContent='Example';anchor.after(this._control);},init(){if(!Settings.get(this.id))return;this._mount();this._routerUnsub||=Router.onChange(({ changed })=>{if(!changed)return;this._control?.remove();this._control=null;this._mount();});},destroy(){this._routerUnsub?.();this._routerUnsub=null;this._control?.remove();this._control=null;},};

Add the module to features, put new DOM contracts in Selectors._map, and keep its setting/default metadata synchronized across content, popup, and options catalogs. destroy() must remove every node, style, observer, listener, timer, and route subscription created by init().

Security Notes

  • All download URLs are validated against a host allowlist before hitting chrome.downloads.
  • LiveChatEnhance uses a TreeWalker on Text nodes only — Rumble's chat markup is never re-parsed through innerHTML.
  • Download UI is built via DOM APIs; no network-influenced text (error messages, response bodies, CDN probe results) ever reaches the HTML parser.
  • Download diagnostics never leave the browser automatically and are sanitized before entering extension storage; exports contain redacted source paths and capability metadata only.
  • Backup imports are allowlisted: setLocalData rejects any key outside the RX_LOCAL_STORAGE_KEYS list + rx_rants_ prefix, so a crafted file cannot write arbitrary keys to rumble.com's origin.

Build

cd extension
./build.sh # produces RumbleX-chrome.zip, RumbleX-firefox.zip, and SHA256SUMS.txt in the parent dir

Requires zip; on Windows without zip, the script falls back to the Windows-bundled bsdtar so ZIP entries keep browser-safe forward-slash paths. See CHANGELOG.md for per-version details.

License

MIT

About

RumbleX is a comprehensive browser script that supercharges your Rumble.com experience. It injects a powerful suite of tools directly into the Rumble interface, giving you unparalleled control over everything from layout and privacy to video playback and downloading.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages