This app runs inside the BotSurf browser. Don't have it yet? Get the app or extension now!

Caption Always-On Forcer

Accessibility · All
0 installs · Verified BotGentz app
Launch App
Opens in BotSurf — try it free, no account needed.
CategoryAccessibility
PlatformAll
Pricing Free
Installs0
Download BotSurf to use — free
No account needed for free apps. Once BotSurf is open, find this app in Apps from the + menu.

About this app

WHAT IT DOES

This script automatically scans for video and audio players—HTML5, YouTube, Vimeo, and other embedded players—and enables closed captions or subtitles. It detects caption tracks and sets them to "showing" mode, clicks the CC button when available, and configures language preference. A counter badge shows how many players had captions enabled, and per-site memory prevents re-enabling on repeat visits. Enjoy every video with captions automatically turned on—perfect for accessibility, language learning, or noisy environments.

WHERE IT RUNS

The script works on any page with video or audio content—YouTube, Vimeo, news sites, streaming platforms, educational videos, and any website with embedded media. It detects HTML5 video/audio elements, YouTube and Vimeo embeds, and other embedded players. The script handles both static and dynamically loaded players.

HOW TO USE

After installation, the script automatically enables captions based on your settings. A badge appears showing the count of players with captions enabled. Click the badge to open the panel. Customize: enable or disable caption forcing, choose preferred language (e.g., en, es, fr), set force delay (ms), set max attempts, enable forcing on page load or on scroll (with configurable threshold), enable per-site memory, show/hide the count badge, choose badge position, toggle debug mode, and select which player types to force (HTML5 video/audio, embedded players). Click "Scan & Force Now" to manually trigger a scan.

TECHNICAL MECHANISM

The script uses a multi-stage caption detection and forcing pipeline. First, it scans the DOM for HTML5 video/audio elements and embedded players using comprehensive selectors. Second, for HTML5 media, it iterates through `textTracks` and sets the track mode to "showing" when the language matches the preferred language or the track kind is "subtitles" or "captions". If no tracks are found, it searches for and clicks the CC button using selectors (.captions-button, .cc-button, .ytp-subtitles-button). Third, for YouTube embeds, it modifies the iframe src to include `&cc_load_policy=1` and `&hl=language`. For Vimeo embeds, it adds `&texttrack=language`. Fourth, it attempts postMessage communication with iframe players for YouTube and Vimeo. Fifth, it stores forced URLs in per-site storage using GM_setValue. The script uses a MutationObserver for dynamically added players.

THE PANEL

The settings panel is fully draggable and can be positioned anywhere on your screen. It automatically snaps to the nearest edge when released, keeping your workspace organized. The panel can be collapsed to a small bubble showing only a gear icon, and restored with a single click. Its position is remembered across page reloads using GM_setValue. The panel also responds to the Escape key, which instantly hides it until you click the bubble again. All settings are saved immediately when changed and persist across browser sessions.

PLEASE NOTE

This script requires the free BotGentz extension to run. Enabling captions on embedded players may require reloading the iframe, which could reset playback position. The script does not access, store, or transmit any personal data or browsing history. All processing happens locally in your browser and never leaves your device.

Similar Apps

Log in to BotGentz

Suggest an App

Tell us what you'd find useful — if we build it, we'll email you the moment it's ready.