YouDub Studio Privacy Policy
This Privacy Policy explains how the YouDub Studio Chrome extension ("Extension", "Software") handles (and does not handle) user data.
This document makes no unsupported claims: every technical statement is verified directly against the extension codebase; the supporting source references are collected in the Technical Verification appendix linked at the end of this document.
1. Core principle and absence of telemetry to developers
There is no developer server. The Extension contains zero network calls that transmit analytics, crash telemetry, diagnostic logs, or tracking data to the developer.
- No telemetry or analytics code: Across product code under
src/(excluding vendor libraries undersrc/lib/), the tokensanalytics,telemetry,sentry,gtag,mixpanel,amplitude,posthog,sendBeacon, andsetUninstallURLdo not exist. - Strictly limited network requests: Active
fetch(calls in the codebase are limited exclusively to the Polar licensing endpoint, Hugging Face model downloads, user-configured translation/TTS providers, and caption files on user-permitted sites. - No media capture permissions: The manifest completely omits the
tabCapturepermission. The Extension does not capture, record, or stream tab or system audio; it only processes accessible subtitle text.
2. Page content and caption capture mechanism
YouDub Studio synthesizes synchronized speech from the accessible subtitles already present in the user's browser session. It does not download video or audio files; the Transcription tab processes only files chosen by the user from their local disk.
- YouTube caption capture: Captions are retrieved by inspecting the page's own
/api/timedtextrequests. Patches toXMLHttpRequest,window.fetch, andResponse.prototype.json/textselectively clone response payloads whose URL contains/api/timedtextviares.clone()orTextDecoderand parse them in-page viaingestTimedtext/ingestJson. The codebase contains no DOM scraping orget_transcriptcalls; the exclusive source is/api/timedtext. The original call passes transparently with identical arguments (origFetch.apply(this, arguments)), the response returned to YouTube's player is unmodified, and no new external network requests are dispatched. Captured captions are forwarded to the content script strictly within the same frame viawindow.postMessage. - Other platforms and HTML5 video: Udemy caption lists are requested from
https://www.udemy.com/api-2.0/...and VTT fromvtt-c.udemycdn.com. TED metadata and WebVTT are requested fromhls.ted.com/project_masters/; LinkedIn Learning captions fromwww.linkedin.com/ambry/. These direct requests reach the permitted site/CDN and use the existing site session where needed. Generic HTML5 players use DOMtextTracks. - Site permissions: YouTube is declared as a static content script. On any other site, the Extension runs no code until the user explicitly grants permission via "Activate on this site" in the popup UI. Permissions are granted per origin and can be revoked at any time.
- Security headers (COOP/COEP): Manifest headers
cross_origin_opener_policy: same-originandcross_origin_embedder_policy: require-corpenforce browser process isolation required for Web Workers to execute multi-threaded WebAssembly and useSharedArrayBufferfor local neural models (Whisper ASR and Supertonic TTS). They do not facilitate external data exfiltration.
3. Data stored locally on the device and deletion methods
All settings, API keys, and cache entries reside locally on the user's computer:
- User Settings (
chrome.storage.sync):- Target language, voice selection, playback speed, panel position, and subtitle style are synchronized with the user's signed-in Google account.
- No API keys or sensitive secrets are ever stored in sync storage.
- API Keys and Provider Configuration (
chrome.storage.local):- Custom translation and TTS API keys are stored exclusively in
chrome.storage.local. - Keys are never synced to Google servers, are not transmitted via runtime messages to content scripts or host web pages, and never reach the developer or any intermediate proxy.
- How to delete: The user can clear API keys at any time via the Settings UI (Translation or Voice tabs) by erasing the inputs and saving.
- Custom translation and TTS API keys are stored exclusively in
- License and Quota Records (
chrome.storage.local):- The licensing record (
licenseState) and device quota tracker (licenseDevice) reside in local storage. - The license state stores the license key, Polar
activationId, and the timestamp of the last online validation. The device state stores the first execution timestamp and the list of video IDs dubbed that day. - How to delete: Clicking "Remove from this device" in Settings > License clears the
licenseStaterecord (license key and validation status). However, to prevent abuse and repeated trial restarts,licenseDevice(initial execution stamp and daily quota counter) is retained; device records are wiped only when the user uninstalls the Extension.
- The licensing record (
- Dubbing Cache (IndexedDB
YouDubCache):- Processed subtitle cues and synthesized audio segments are stored in the origin's
YouDubCachedatabase. Re-opening a previously processed video reuses this cache to prevent duplicate computation. - To generate a return link, only the scheme + host + safe path components are saved. Query parameters, authentication tokens, session cookies, and JWTs are stripped, with the sole exception of the 11-character YouTube
vparameter. - When and how deleted: If "Keep archive on disk" is disabled in Settings > Archive (default: disabled), cached records exist only temporarily for the active video and are erased when switching videos. If the browser closes unexpectedly, temporary cache entries are not wiped immediately; they are cleaned up on next browser launch via
chrome.runtime.onStartupsweep. Users can clear the entire cache at any time by clicking "Delete all" in Settings > Archive.
- Processed subtitle cues and synthesized audio segments are stored in the origin's
- Local Speech and Transcription Models:
- Supertonic model weights reside in IndexedDB
YouDubStorage/supertonic_dataand can be deleted via Settings > Voice. - Local audio/video files chosen for transcription are stored temporarily in IndexedDB
youdub-local-preparationand deleted immediately once ingested. Generated subtitle cues can be deleted using "Delete generated subtitles". - Whisper ASR model weights reside in Cache Storage under
youdub-asr-models-v1and can be removed via "Delete model".
- Supertonic model weights reside in IndexedDB
- Upon Extension Removal:
- When the Extension is uninstalled, Google Chrome automatically and permanently deletes
chrome.storage.local,chrome.storage.sync, all associated IndexedDB databases, and Cache Storage instances from the operating system disk.
- When the Extension is uninstalled, Google Chrome automatically and permanently deletes
4. Mandatory external connections: License validation and model downloading
The following outbound connections are declared in manifest.json host_permissions for foundational extension functionality:
License Management: Polar.sh (https://api.polar.sh/*)
Polar.sh (Polar Software, Inc.) is the authorized Merchant of Record for YouDub Studio. All billing, tax collection, payment card security, and global consumer regulatory compliance processes are legally the responsibility of Polar.sh.
- Licensing interactions use the Polar customer portal API.
- Outbound calls target
POST https://api.polar.sh/v1/customer-portal/license-keys/{activate|validate|deactivate}. - Data fields transmitted to Polar:
activate:{ key, organization_id, label: "YouDub Studio / Chrome" }.validate: Under standard validation{ key, organization_id, activation_id }; except during HTTP 404 diagnostics where a secondary check transmits only{ key, organization_id }without an activation ID to confirm device status.deactivate:{ key, organization_id, activation_id }.
- Data NEVER transmitted to Polar: Video URLs, video titles, subtitle contents, translated sentences, custom API keys, or browsing activity are never shared with Polar.
- Payment Information: Checkout is hosted directly on Polar's domain. Payment data (credit cards) is collected directly by Polar and is governed by Polar's Privacy Policy.
Model Weights: Hugging Face (https://huggingface.co/*, https://*.hf.co/*)
- Weights for the local Supertonic speech synthesizer and Whisper speech recognizer are fetched via HTTP GET requests only when the user explicitly triggers model download.
- No user text, identity, or data is uploaded to Hugging Face; requests solely retrieve public model files. CDN redirects are handled by the
*.hf.copermission.
5. Optional third-party AI and cloud providers
YouDub Studio allows users to supply their own API keys to access third-party cloud services. These permissions are requested at runtime only when the user configures the respective provider in Settings.
When configured, API calls are transmitted directly from the browser extension service worker to the provider's official endpoint without passing through any intermediate proxy:
| Provider & Origin Pattern | Data Transmitted & Operation |
|---|---|
Google Gemini (https://generativelanguage.googleapis.com/*) |
Subtitle text to translate or synthesize + x-goog-api-key header |
OpenAI (https://api.openai.com/*) |
Subtitle text to translate or synthesize + Authorization: Bearer <key> |
Anthropic Claude (https://api.anthropic.com/*) |
Subtitle text to translate + x-api-key header |
OpenRouter (https://openrouter.ai/*) |
Subtitle text to translate + API key, X-Title: YouDub header |
Google Cloud TTS (https://texttospeech.googleapis.com/*) |
Text to synthesize + Google Cloud API key |
Microsoft Azure Speech (https://*.tts.speech.microsoft.com/*) |
SSML formatted text + Azure subscription key |
ElevenLabs (https://api.elevenlabs.io/*) |
Text to synthesize + xi-api-key |
DeepL (https://api-free.deepl.com/*, https://api.deepl.com/*) |
Subtitle text to translate + DeepL authentication key |
Google Cloud Translation (https://translation.googleapis.com/*) |
Subtitle text to translate + API key |
| Local TTS and custom OpenAI-compatible servers | Local TTS connects only to loopback (localhost, 127.0.0.1, [::1]). A custom OpenAI-compatible translation server receives subtitle text and an optional API key at the local or remote address selected by the user; a remote address sends data off-device. Settings request permission for that origin. |
Third-Party Provider Disclaimer: The transmission, processing, and retention of text and credentials submitted to these services are governed solely by each provider's respective privacy policy and terms. YouDub Studio possesses no oversight or custody over third-party processing.
The default translation pipeline (D-20260910-CEVIRI) requires no external API keys: it uses existing video captions where available or Chrome's on-device translator (Chrome Translator API), keeping all processing local and offline.
6. Children's privacy, data security, CWS Limited Use, and rights
- Chrome Web Store Limited Use and Single Purpose Disclosure: YouDub Studio complies strictly with the Chrome Web Store User Data Policy, including all Limited Use requirements. The single purpose of the Extension is to synthesize real-time, synchronized dubbing from accessible subtitles playing in the user's web browser. Webpage content, subtitle cues, and sanitized video URLs are processed solely to facilitate this single purpose and maintain local cache.
- No Data Sale and No Advertising: User data, caption contents, and configuration parameters are never sold, leased, or transferred to third parties or data brokers. Data is never used for personalized advertising, credit assessment, or lending purposes.
- No Human Review: The YouDub developer does not collect captions, chosen local files or generated audio for human review; the Extension processes them automatically. External providers selected by the user govern their own data practices, including any human review, under their privacy policies; YouDub makes no guarantee on their behalf.
- Children's Privacy: YouDub Studio does not knowingly collect or solicit personal data from children under the age of 13 (or the minimum legal age in the applicable jurisdiction).
- Data Security: Data stored on the local device is protected within Chrome's extension sandbox. The integrity of licensing state against local tampering is verified using HMAC-SHA256 signatures.
- User Rights and Data Deletion Limits: Users can delete their settings, custom API keys, cached media, local AI models, and active license state (
licenseState) directly via the Settings UI. However, anti-abuse records (licenseDevice: initial run stamp and daily quota trackers) cannot be purged via UI buttons; these are wiped only when the user uninstalls the Extension. - Policy Modifications: This Privacy Policy may be updated to reflect feature changes or statutory obligations. Revisions take effect upon publication in the Extension and repository.
- Effective Date: 10 September 2026
- Data Controller & Contact Details:
- Legal Entity / Developer: Burak Akdoğan (individual developer)
- Email: support@youdubstudio.app
- Note: Billing and consumer transactions are processed via the authorized Merchant of Record, Polar.sh.
- Jurisdiction: Any dispute arising out of or in connection with this policy shall be governed by Turkish Law, and the Bursa Courts and Enforcement Offices shall have exclusive jurisdiction. However, before initiating any legal action, the user agrees to attempt to resolve the dispute amicably via support@youdubstudio.app. Unless mandatory provisions of the user's local consumer protection laws require otherwise, the jurisdiction of the Bursa Courts shall prevail. In case of any discrepancy, the Turkish text shall prevail.
For the curious: how the statements in this document can be verified from the source code is shown in the Technical Verification document. This appendix is not a contract; the binding text is this document.