Funimation Web Dub-Sub Toggle Memory
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
This tool remembers your language preference for Funimation videos and automatically applies it across episodes and shows. It detects the Dub/Sub toggle on video pages and saves your preferred setting—either globally or per individual show. When you return to a show, the script automatically selects your saved preference without any manual intervention. A panel displays the current language setting for the active show, shows all saved preferences, and provides controls to override or clear settings. Desktop notifications confirm when a language preference is auto-applied.
WHERE IT RUNS
The script activates on Funimation pages (funimation.com), including video players, episode pages, series pages, and show listings. It automatically detects language toggle elements using multiple selector strategies that work across different Funimation layouts. The panel appears as a draggable overlay that stays accessible as you watch content.
HOW TO USE
Navigate to any Funimation video page. The panel will appear showing the current show name and your saved language preference. Use the "Apply to Current" button to save the current language setting for the show. Use "Clear Current" to remove the saved preference for the current show, falling back to the global default. Use "Clear All" to remove all saved show preferences. The "Default: Dub/Sub" dropdown sets the global fallback preference used when no show-specific preference exists. The auto-apply feature runs automatically on page load to set your preferred language. The panel shows all saved show preferences with their current settings, and you can click the "Dub" or "Sub" buttons on any saved show to update its preference.
THE TECHNICAL MECHANISM
The script employs a multi-strategy DOM detection approach for Funimation's language toggle interface. It first attempts structured selectors targeting data-testid attributes and class names like .language-toggle, .dub-sub-toggle, and .audio-toggle, then falls back to heuristic detection of buttons by text content matching "Dub", "Sub", "Dubbed", or "Subtitled". Toggle detection also scans for active state indicators including CSS classes (active, selected), aria attributes (aria-selected, aria-current), and style properties. The script identifies the current show name from multiple sources including show-title, series-title, anime-title, and video-title elements, with fallback to URL path parsing. Show preferences are stored using GM_setValue with a per-show key derived from the show name, with a global default used when no show-specific preference exists. Auto-apply triggers on page load and on page navigation events (pushState, replaceState, popstate), with a MutationObserver watching for DOM changes that may indicate new content loading. When a preference is applied, the script simulates a click on the appropriate toggle button only if it's not already active, preventing duplicate interactions. All settings and preferences are persisted using GM_setValue.
THE PANEL
The panel is fully draggable by its header and remembers its position on the page across sessions. It can be collapsed to a small bubble using the minimize button, then restored by clicking the bubble. The panel resizes automatically to fit its content and can be closed with the Escape key or by clicking the close button. The panel's position and state persist globally, so it returns to the same location on subsequent visits.
PLEASE NOTE
Requires the free BotGentz extension to run. Funimation may update its site structure, which could affect the script's ability to detect language toggles — updates will be released as needed. All preference data is stored locally in your browser and is never transmitted externally. This tool is for convenience only and does not modify your Funimation account or viewing history. The script only interacts with visible language toggle buttons and does not access any sensitive data beyond what is visibly presented. The script attempts to auto-apply preferences but may not work if the video player is not fully loaded or if the toggle interface is dynamic.