UX Captions
Last updated: 8 September 2026
Speech recognition and translation run on your device by default. If you enable cloud translation, caption text and recent translation context are sent to the provider you choose. Incoming chat translation and cloud recaps each require an additional opt-in. With a supported cloud AI model selected, clicking UX Translate sends that draft for translation; typing alone sends nothing to the translation provider. Raw stream audio and sampled images stay on your device.
UX Captions has no analytics, advertising trackers or telemetry. It does not sell data. Optional cloud providers receive the requests needed for the features you enable; their handling and retention of those requests are governed by their own terms and privacy practices.
| Data | Use and storage | Sent to a cloud provider? |
|---|---|---|
| Stream audio | Captured from the selected tab only after an extension button press. Processed in memory by the local speech model and replayed to your speakers. The extension does not save an audio recording. | No. |
| Caption text | Transcribed locally and kept in bounded in-memory history for captions, reading and recaps. Translation is local by default. | Only when you enable cloud translation or a cloud recap. Translation requests can include recent caption context and, when cloud chat is enabled, recent chat context. |
| Incoming chat | Read from the channel you are viewing. Message text, identifiers and related author metadata are used to match messages to the page, translate them and build the available recap material. | Only when you additionally enable cloud chat translation or a cloud recap that includes chat. Incoming public chat can include messages you have already posted. Outgoing drafts are treated separately below. |
| Outgoing message drafts | Translated only when you press UX Translate and placed in the composer for review. The control identifies the selected engine and the engine that produced the result. A back-translation preview is attempted locally. You can copy or undo the result. | Yes, when Cloud AI is enabled with Gemini, Groq or OpenRouter and you press Translate. That draft, its language choices and bounded recent stream context go to your selected model, independently of the incoming cloud-chat checkbox. Context can include recent captions and notes, plus recent chat when cloud chat is enabled. Typing alone does not send a draft to a provider. Other provider choices keep draft translation local. Drafts and their translations are not added to stream context or recaps. The extension does not press Send for you. |
| Recap and question material | The selected window of available caption/chat history is processed by Chrome’s local AI by default. Questions and answers are held in memory in the open recap page. | A separate cloud-recap opt-in uses your selected AI provider and model for summaries and Ask follow-up answers. Requests send the selected window’s text, your questions and recent conversation. This can contain personal information from speech, public chat or your questions. Raw audio, outgoing message drafts and sampled images are excluded. |
| Visual samples | Experimental and off by default. Adds a tab video track while capturing and periodically crops/downscales player stills. A small in-memory ring can inform local AI and is shown in the recap page. | No. The extension does not save a video recording or upload these samples to a cloud recap provider. |
The Translation setting starts in on-device mode. Enabling a cloud provider requires permission to access its host. Caption translation then sends text to that provider. Incoming cloud chat and cloud recaps are additional choices: selecting a cloud provider alone does not enable either one. With Gemini, Groq or OpenRouter selected, outgoing drafts use the chosen model only after you click UX Translate. The composer discloses this before the click; no draft request is made while typing.
The free Google server option uses an unofficial public translation endpoint without a key. Gemini, Groq, OpenRouter and Google Translate API use a key you supply. Supported AI providers also receive model-list requests when you connect. Provider accounts, usage charges and limits may apply. A request exposes ordinary network metadata such as your IP address; a keyed request also includes the provider credential.
Turn cloud translation off to return translation to local processing; turn the additional chat/recap options off to stop using those cloud features. An option change cannot recall a request already sent or remove data a provider has already received. Translation failures can fall back to ready local translation routes without downloading a new translation model. If no route is ready, original captions/chat remain visible and outgoing drafts are kept. Cloud recap and Ask failures show an error; they do not silently switch to a local model.
chrome.storage.sync. If Chrome Sync is enabled, Chrome may synchronize those settings through Google across your signed-in browsers. Message content and credentials are not stored in that synced preference area.chrome.storage.session so a service-worker restart does not clear a known limit. This state expires when Chrome closes. Records use account fingerprints, not message text or raw keys.Stopping captions ends audio/video capture. To release an open recap page’s copy, close that page. Uninstalling the extension removes its extension storage; files you explicitly exported remain wherever you saved them. Chrome controls its own shared model caches and sync data.
| Destination | Purpose and data |
|---|---|
| kick.com; twitch.tv and supported subdomains | Read the supported channel page and retrieve channel/chat information. The sites receive their ordinary page/API requests. |
| ws-us2.pusher.com; irc-ws.chat.twitch.tv | Read-only subscriptions to the public Kick or Twitch chat room you are viewing. The extension does not publish chat messages. |
| huggingface.co and model-delivery CDNs | Download model weights, configuration and tokenizer data for local inference. The host sees your IP address and requested files. |
| translate.googleapis.com | Optional free Google server translation: caption text and the requested source/target languages. |
| generativelanguage.googleapis.com | Optional Gemini requests: enabled caption/chat translation, context, drafts explicitly submitted with UX Translate, text recaps, recap questions and recent conversation, and available models, with your Gemini key. |
| api.groq.com | Optional Groq requests: enabled caption/chat translation, context, drafts explicitly submitted with UX Translate, text recaps, recap questions and recent conversation, and available models, with your Groq key. |
| openrouter.ai | Optional OpenRouter requests: enabled caption/chat translation, context, drafts explicitly submitted with UX Translate, text recaps, recap questions and recent conversation, and available models, with your OpenRouter key. OpenRouter routes inference to the selected model provider. |
| translation.googleapis.com | Optional Google Translate API requests: enabled caption/chat translation and language choices, with your API key. |
Chrome may also download its built-in translation/AI language packs or synchronize enabled browser settings through Google’s services. Those downloads and synchronization are managed by Chrome. Opening the product or privacy links makes an ordinary request to ux.gold.
Tab capture supplies the selected tab’s audio and, only for enabled visual context, video. Offscreen hosts capture and local models. Storage remembers the data described above. Site permissions let the extension render its features on supported Twitch/Kick pages, read chat and download model data. Optional provider permissions are used only for the provider features you enable.
The date at the top identifies this policy text. Changes to data processing should be reflected in the policy and the extension’s controls before the corresponding release is published.
Questions: dev@ux.gold.