Skip to content

DubBuddy Privacy Policy

Version 0.5.2 · Last updated 2026-11-04

Published at https://dubbuddy.com/privacy.

1. Who we are

DubBuddy is a Chrome extension made by YTuong.me ("we", "the developer"). Contact: support@dubbuddy.com. Homepage: https://dubbuddy.com.

2. What DubBuddy does

DubBuddy dubs the audio of one browser tab into another language, live. You click the DubBuddy icon on a tab and it starts there, in the language and mode you picked last (Chrome lets an extension capture a tab only after such a click); its shortcut, or "Dub this tab with DubBuddy" in the page's right-click menu, does the same, and Start in the side panel starts it again on that tab. DubBuddy then sends that tab's audio to Google's Gemini API with your own Gemini API key, and plays the translated speech that Google sends back over the original, a few seconds behind the speaker. In Transcript only mode (a switch in the side panel, remembered for the next Start) it sends the same audio to Google's speech-to-text model instead and shows what Google sends back as text in the side panel, in the language that was spoken: nothing is played back and the original keeps playing as usual. In that mode the right-click item reads "Transcribe this tab with DubBuddy", and with Translate to set to a language, each line of that text is also sent to Google's text model, which sends back its translation, shown under it. Google bills your key's project for this directly, at its own prices: DubBuddy shows how many minutes a session has sent and links to Google's price list, and keeps no money of its own.

3. In short

  • No DubBuddy server handles your audio, transcript or key; we never receive them. The only web page on dubbuddy.com that Chrome opens by itself is the uninstall page (section 8).
  • Tab audio goes from your browser to Google only while a dub or a transcript you started is running. In Transcript only, if you pick a language under Translate to, the transcript's lines go to Google too, as text, to be translated.
  • Your Gemini API key stays on your device and is sent only to Google.
  • The transcript on screen is kept in memory. History keeps each session's words on your device, never its audio or anything about the page; it is on unless you turn it off in Settings, where you can also delete it.
  • DubBuddy reads nothing from the pages you visit: it captures the audio of the tab you start it on, and Chrome tells it that tab's title and address.
  • No analytics, no telemetry, no ads, no sale of data.

4. What leaves your device, to whom, when and how

DubBuddy talks to one service: Google's Gemini API at generativelanguage.googleapis.com. Every connection is encrypted (HTTPS or WSS).

  • Your Gemini API key. Before each live connection, DubBuddy sends your key to Google in the x-goog-api-key request header, to create a short-lived, single-use session token (it expires within an hour). When you paste your key (on the welcome page, on the panel's Home or in Settings), DubBuddy sends it the same way to check that Google accepts it and offers it the translation model DubBuddy uses (no tokens are billed). Each translation request (Translate to) carries the key in the same header. The key is never put in a web address.
  • The session token. The audio connection (WSS) is opened with that short-lived token in its address (access_token=…), which is how Google's Live API accepts tokens.
  • Tab audio. While a dubbing or transcript session you started is running, DubBuddy sends the audio of the tab you started it on: mono, 16 kHz, in small pieces, as it plays. Silent stretches, such as a paused video, are not sent. Sending goes on while you look at another tab, and stops when you press Stop, when an auto-stop fires (20 minutes of sound with no dub or transcript — a silent stretch, which is not sent, does not count — or the 150-minute session limit), or when the tab closes. DubBuddy never captures video.
  • Transcript text, to be translated. In Transcript only mode with Translate to set to a language, each finished line of the transcript, with up to eight lines before it for context, is sent as text to Google's text model (gemini-3.5-flash-lite) over HTTPS, a few lines at a time, with the language to translate into. The last lines of a session, which finish just after you press Stop, are sent too. With "Don't translate" (the default), no text is sent.
  • Session settings. With each connection DubBuddy tells Google the model, the language you want to hear (speech already in it is not spoken again), and that it wants the transcript of what was said and of the translation. In Transcript only mode the model is Google's speech-to-text model (gemini-3.5-transcribe-live); DubBuddy asks for text only, and sends the language you picked under "Spoken in" — with "Auto-detect" (the default) none, and Google detects the one spoken. A connection lasts at most about 10 minutes, so a long session opens a fresh connection (with a new session token) before that.
  • What Google sends back: the translated speech (audio), the transcript text (what the model heard, in the original language, with the language it detected, and the translation), token counts (kept in the diagnostics log, section 6), and technical messages (for example, a handle to resume a dropped connection, or an error). In Transcript only mode: the transcript text, and, while a sentence is still being spoken, a provisional guess at it (shown on screen and never kept), plus technical messages. If you picked a language under Translate to, the text model sends back the translation of each line and the token counts.

If you dub a tab that carries other people's voices, such as a call or a meeting, their speech is sent to Google too. Make sure you are allowed to do that.

Google's processing. Google processes what DubBuddy sends under Google's own terms, which apply to your key: the Gemini API Additional Terms of Service (https://ai.google.dev/gemini-api/terms) and Google's Privacy Policy (https://policies.google.com/privacy). Those terms require users to be 18 or older. They also treat paid and unpaid use differently: according to them, content sent through unpaid quota may be used by Google to improve its products and may be read by human reviewers, while with paid use (a Google Cloud project with active billing) Google does not use your prompts and responses to improve its products and keeps them for a limited time for abuse detection. In the European Economic Area, Switzerland and the United Kingdom, Google's paid-use data terms apply to all use, including unpaid quota. Read Google's current terms; we do not control them.

Test mode. In a build loaded unpacked (for development), "Test mode (no key needed)" plays the tab back on your computer and sends nothing anywhere. The store build does not offer it.

5. What DubBuddy reads from web pages

  • The tab you invoke it on. When you click the DubBuddy icon on a tab, press its shortcut, or choose Dub this tab in its right-click menu, Chrome lets DubBuddy see that tab's title and address. DubBuddy uses them to name the tab in its panel and to know whether the tab can be captured (Chrome's own pages cannot). The title of the tab you dub is kept in the session status (section 6) only while that session runs. The address is never saved, and History keeps neither.

DubBuddy runs no code in web pages, reads nothing else from them (no page text, forms, passwords or cookies) and never changes a page.

6. What is stored on your device

In chrome.storage.local (on your device, removed when you uninstall):

  • Settings: your Gemini API key, the language you dub into and your last three picks (pinned at the top of the language list), whether Transcript only translates into that language (or "Don't translate"), the language picked under "Spoken in" (or "Auto-detect") and your last three picks there, dub volume, the original's level, whether the dub's transcript is folded, the transcript's text size, whether a dub's transcript shows the original above each translation, whether the transcript is expanded while a session runs, whether History is on, the mode (Dub or Transcript only), the result of the last check of your key (including Google's error text if it failed), and "Pause on silence", Debug mode and Test mode (fixed in the store build; only a build loaded unpacked changes them). Your key is stored encrypted (AES-GCM) inside Chrome's storage for the extension. The key that decrypts it is kept on the same device, in DubBuddy's own database (see below), because DubBuddy must use your key without asking you for a password: the encryption hides your key from a look at the extension's storage, not from someone who controls your Chrome profile. Use a key restricted to the Gemini API with a spending cap, and empty the key field in Settings when you no longer need it.
  • Session status: the state of the current or last session: which tab, whether it is a dub or a transcript, the language it dubs or translates into, the dubbed tab's title (removed as soon as the session ends), when it started, whether its dub is muted, how much audio it has sent and received and the token counts Google reported, the language Google heard while no dub is coming (so the panel can say the speech is already in yours), and the last error text from Google or Chrome. It is replaced at the next Start.
  • Time used: minutes of audio sent per day and mode (dub or transcript), for up to 90 days, for the time used that Settings shows.
  • Diagnostics log of the last session (every session writes one when it ends; the next one replaces it; with Debug mode on, it is also saved every 15 seconds): timings, connection events, Google's token counts, the names of the fields in Google's messages, error text with anything shaped like a key removed, the model and target language, the DubBuddy version, and what each translation request cost in tokens. It never contains audio, transcript text, your API key or session token, tab titles or web addresses.
  • Interface language, if you chose one (DubBuddy's panel is in fifteen languages), and a "What's new" flag (the version and whether you opened it) after an update.

In DubBuddy's key database (IndexedDB, on your device, removed when you uninstall): one encryption key, made the first time you save a Gemini key and used only to encrypt and decrypt it. Chrome keeps it from being read out by any script; it never leaves your device.

In DubBuddy's History database (IndexedDB, on your device, removed when you uninstall), while "Save history on this device" is on (Settings → History; on by default, also after an update from version 0.5.1), for each session:

  • The session: when it started, ended and was last written, how long it ran, its mode (dub or transcript), its languages (the one a dub dubbed into; in Transcript only, the one picked under "Spoken in" and the one it translated into), the minutes of audio it sent, how many lines it has, its first line (up to 140 characters) for the list, and how it ended (Stop, an auto-stop, the session limit, an error, or a restart of Chrome or DubBuddy).
  • Its lines: what was said and its translation, as in the transcript in memory (below), with the time since the session's start and the language Google heard a line in when it names one. In Transcript only mode, a line also notes whether it is Google's unfinished guess (Stop came first) and why its translation is missing, when it is.

History is written as the words come, a moment behind the transcript on screen. It never holds audio, anything about the page a session ran on (no title, no address) or your key. It keeps the newest 200 sessions: when a session ends, older ones are deleted with their lines. Turned off, it saves nothing new and keeps what it has until you delete it (section 7). If you turned on "Keep transcripts on this device" in version 0.5.1, the copy of the transcripts it kept in chrome.storage.local is moved into History once, when the new version first starts, and removed from there.

In chrome.storage.session (in memory only; gone when you quit Chrome):

  • The transcript, for each mode apart: what was said in each session and its translation, with the time since its Start, when that Start was, and the language Google heard a line in when it names one (up to 6,000 lines for a dub and 3,000 for Transcript only; the oldest go first). For a dub, a line is up to 400 characters and its translation is the text of the dubbed speech. In Transcript only mode, it also holds whether Stop came before Google finished the last line, and a line has a translation only if you chose Translate to. Stopping keeps it, and a new Start adds to it instead of replacing it, so that "Start again" after an auto-stop loses nothing; neither mode touches the other's. It stays until you press "Clear" under it, use "Erase all data", or quit Chrome (Chrome also empties this memory when it updates or reloads DubBuddy); History keeps its own copy of each session's words (above). The provisional guess at the line being spoken is shown in the open panel and is never stored.
  • Three notes: when History last changed, so an open History tab reads it again; after a click on the DubBuddy icon or its shortcut on a page Chrome keeps from extensions (such as Chrome's own pages), which tab it was and when, so the panel that click opens says the page can't be dubbed; and which browser windows show DubBuddy's side panel and since when, so a click on the icon where the panel is already open starts at once. None holds a title or an address.

Nothing is synced to your Google account, and nothing is sent to us.

Files you export. "Save debug log" (the diagnostics log above, which starts with a line saying what it holds; anything shaped like a key, a Google project number or an e-mail address is removed from the whole file as it is written) and "Save" (the transcript on screen, or a session in History, with its time marks, as text) save a file to your computer through Chrome's download, only when you click. Besides History, "Save" is the only way a transcript reaches your disk. When there is no log yet, "Save debug log" saves nothing and says so. What happens to a file is up to you.

Clipboard. DubBuddy writes to your clipboard only when you click: "Copy" copies the transcript (or a session's words, in History); "Copy details" copies an error report (DubBuddy version, provider, status, error text and code, interface language, time, and your browser's user agent) so you can send it to us if you want.

7. Keeping and deleting your data

  • Emptying the key field (Settings) removes your Gemini API key and the result of its check.
  • Erase all data (Settings) stops a running session and removes your settings (key included), the time used, the session status, the diagnostics log, the key database, History, and everything in memory, the transcripts included. It keeps your interface language and the "What's new" flag.
  • Clear (under a transcript, after Stop) removes that mode's transcript from memory. It does not touch History.
  • Turning off "Save history on this device" (Settings → History) stops History from saving new sessions; what it holds stays until you delete it.
  • Delete session (a session in the History tab) removes that session and its lines; Delete all history (Settings → History) removes every session History holds.
  • Uninstalling DubBuddy makes Chrome delete everything DubBuddy stored.
  • What Google keeps is governed by Google's terms (section 4). Your key also still exists at Google: delete or restrict it in Google AI Studio if you no longer need it.

8. The uninstall page

When you uninstall DubBuddy, Chrome opens https://dubbuddy.com/uninstall with the DubBuddy version added to the address (for example v=0.5.2). DubBuddy adds nothing else. Like any web request, it gives the server that hosts dubbuddy.com your IP address and your browser's user agent. The page contains no analytics or tracking code. If you email us from it, we receive your message and your email address and use them only to reply.

9. What we do not do

DubBuddy has no analytics, telemetry, crash reporting or advertising. We do not sell or rent your data, share it with anyone other than Google's Gemini API as described in section 4, or use it for advertising, for profiling, or to determine creditworthiness. Nobody at YTuong.me can read your audio, transcript or key: they never reach us.

10. Limited Use

The use of information received from Google APIs will adhere to the Chrome Web Store User Data Policy, including the Limited Use requirements. DubBuddy uses the data it handles only to provide its single purpose, turning the speech of the tab you choose into a live dub or a live transcript (with its translation when you ask for it), and transfers it only to Google's Gemini API for that purpose.

11. Children

Google's Gemini API terms require users to be 18 or older. DubBuddy is not directed at children and is not meant for anyone under 18.

12. Security

Traffic to Google is encrypted (HTTPS and WSS). The extension's content security policy allows connections only to Google's Gemini API. Your long-lived key travels only in a request header, and the audio connection uses a short-lived, single-use token. What Google's models send back is shown as plain text, never run as code or drawn as HTML. The key is stored encrypted (AES-GCM) in Chrome's extension storage, under an encryption key kept on the same device (section 6).

13. Changes to this policy

If DubBuddy starts handling data differently, we will update this page and its date before the new version is published, and say so in the extension's "What's new".

14. Contact

Questions or requests about privacy: support@dubbuddy.com.