Last updated: October 12, 2026
HappySubs is an unofficial browser extension that adds a second subtitle overlay while you watch YouTube, Vimeo and Bilibili videos and Zoom cloud recordings, can do the same for a video on any other page when you click its toolbar icon, and can optionally transcribe videos that have no subtitles at all. This extension is not affiliated with, endorsed by, or sponsored by YouTube, Google, Vimeo, Bilibili or Zoom.
The extension runs automatically only on YouTube, Vimeo and Bilibili. On Zoom recordings (zoom.us/rec/…) and on pages that embed YouTube’s youtube-nocookie.com player, it runs automatically only after you turn that on from the extension’s welcome page or popup. The same goes for any other site: on a page with a video, the popup can offer to run automatically on that one site from then on, and it does so only if you agree. You can withdraw any of these at any time, from the welcome page or in Chrome’s extension settings.
On every other page it does nothing at all until you click its toolbar icon. When you do, it looks at that one tab for a video and, if there is one, adds subtitles to it. It has no access to pages you have not clicked it on, and this includes local video files: those additionally require you to switch on “Allow access to file URLs” for the extension yourself.
What it reads on a page is the video’s subtitles: the caption track the player loads, or, on a Zoom recording, the transcript that Zoom shows beside the video. It does not read other page content, and it does not read anything from your Zoom account beyond the recording page you have open.
The extension stores your settings in Chrome extension storage, such as selected subtitle language, subtitle style, translation provider, which of that provider’s models to use, how you want a paid API to be used, and optional API keys that you enter for third-party translation services. This data is stored in your browser through Chrome storage and is not sent to any server operated by the extension developer.
It also keeps a small counter on your device: how many videos you have watched for at least a minute with both subtitle languages showing, which of its few requests to rate it on the Chrome Web Store it has already made, and whether you have rated it. It uses this only to decide when to ask, and when to stop asking, and it never leaves your browser.
When you use translation features, subtitle text (on a Zoom recording, the text of its transcript) may be sent directly from your browser to the translation provider you choose, such as Google Translate (reached at clients5.google.com or translate.googleapis.com, with no account or key), OpenAI, Anthropic Claude, Google Gemini, or DeepSeek. If you enter an API key for one of these services, that key is used only to call the selected provider from your browser.
Live transcription is an optional feature that is off unless you install a separate local program and switch it on in the extension. While it is running, the extension reads the audio of the video you are watching and sends it over a loopback connection (ws://127.0.0.1:8765) to that program, which runs on your own computer and returns recognised text.
Chrome does not let a page read the audio of some videos directly — a local file, or a video served from a different domain than the page. For those, the extension captures the audio of the current tab instead. This needs an extra permission that Chrome asks you for the first time it is needed, and it happens only while live transcription is switched on for that tab. The tab’s audio is played back to you as normal and sent to the same local program; it is handled the same way as described below.
The audio does not leave your computer. It is not uploaded anywhere, not recorded to disk by the extension, and not sent to the extension developer or to any third party. Nothing is captured while the feature is switched off, and the extension never accesses your microphone — only the audio of the video, or of the tab, you are watching.
The recognised text is then translated the same way subtitle text is: sent to whichever translation provider you have chosen.
When the extension is first installed, it opens a welcome page that is part of the extension itself; nothing is sent when it opens. When the extension is removed, Chrome opens a short survey page on this website. The survey is optional: nothing is sent unless you choose a reason and press Send. If you do, what is sent is the reason you chose, anything you typed into the boxes, the version of the extension you removed, the language the page was shown in, and your operating system (such as macOS or Windows, as your browser reports it). It is stored in a Google Form owned by the extension developer and used only to decide what to improve. It does not include your name, email address, browsing history or any identifier for you or your browser.
The extension collects no usage statistics or analytics of any kind, and the developer does not operate a backend server for it. Apart from the optional uninstall survey above, the extension sends nothing to the developer. The developer does not collect your browsing history, does not sell user data, and does not share user data with advertisers or data brokers.
The HappySubs home page at https://madebyhappy.github.io/happysubs/ uses Google Analytics to count its visits in aggregate. It records how many people visit, which site or search sent them, whether the short film on the page reached its middle or its end, whether its sound was turned on, whether the page was switched to English or Chinese, and which “Add to Chrome” button was clicked. To do this, Google Analytics sets cookies in your browser and receives your browser and device type and your IP address, which it uses to estimate your country and city and does not store. The developer sees only aggregated reports, does not use them to identify anyone, and does not use them for advertising. How Google handles this data is described in How Google uses information from sites or apps that use our services.
Only the home page uses Google Analytics. The uninstall survey page and this privacy policy do not, and none of this applies to the extension itself. You can block it with a content blocker or with Google’s opt-out browser add-on.
Every permission the extension asks for corresponds to something it actually does:
Live transcription needs no host permission: it talks to a program on your own machine over a loopback address.
You can delete extension data by removing the extension from Chrome or clearing the extension's stored data in your browser. You can also remove saved API keys from the extension popup.
For questions or requests, please open an issue at github.com/madebyhappy/happysubs.