Privacy Policy
Last updated: May 20, 2026
This policy describes what data the dubzly Chrome extension and the
dubzly.com / api.dubzly.com services handle, why, and how long
we keep it. We try to keep it short and honest.
What dubzly does
Dubzly is a browser extension that reads subtitle text from a streaming page (currently Crunchyroll), sends each subtitle line to a text-to-speech service, and plays the resulting audio in sync with the video. You can either bring your own ElevenLabs API key or use the browser's built-in speech synthesis.
Data we handle
1. Settings stored locally in your browser
The extension uses chrome.storage.local on your device to remember:
- Your voice provider preference (ElevenLabs / browser TTS / auto)
- Your ElevenLabs API key, if you pasted one in the popup
- Your per-character voice overrides for shows you've configured
- The most recent show's slug and detected character list (used to populate the popup UI)
These never leave your browser unless you explicitly ask them to (e.g. exporting a preset JSON file, or uploading a preset to the community library).
2. Data sent to our backend (api.dubzly.com)
When the extension needs to render audio for a subtitle line, it sends the following to
api.dubzly.com over HTTPS:
- The subtitle text for that line (e.g.
"Good job, you guys.") - The speaker name from the subtitle file (e.g.
"Aki") - The voice ID and provider preference for that cue
- The episode ID from the page URL (e.g.
GE00367923JAJP) -
Your ElevenLabs API key, if configured — passed through as an
X-Elevenlabs-Keyheader so our backend can relay the request to ElevenLabs. We do not store this key server-side.
The backend forwards the text + voice configuration to ElevenLabs (or generates audio locally if you've selected browser TTS), and returns the audio to your browser. Audio bytes are not retained beyond the lifetime of that HTTP response unless you have opted in to a caching feature.
3. Community preset uploads (opt-in only)
If you click "Share to community" in the popup, dubzly uploads your current per-character voice mapping (a small JSON document) to the community preset library on black.wiki, a separate service used by dubzly only for community-shared assets. Uploads require a personal black.wiki API token that you generate at black.wiki/account/tokens and paste into the dubzly popup. This is entirely optional. The uploaded preset contains only:
- The show slug (e.g.
a-replica-never-dreams) embedded in the filename - A preset name (provided by you in the popup)
- Your chosen author name, if you typed one (otherwise anonymous)
- The mapping of character name to voice ID
- The selected provider (
elevenlabsorsay) - A timestamp
Uploaded presets are submitted for review by the black.wiki app owner before becoming
publicly visible. Once approved they appear at
black.wiki/api/apps/dubzly/files and the matching show's community banner
in the dubzly popup. See
black.wiki's privacy policy
for how that service handles uploaded files.
4. Data on Crunchyroll itself
The extension reads the subtitle stream the player has already loaded for you and reads the value of the video element's current-time / play state to schedule audio. It does not modify, capture, or transmit the video stream itself, your Crunchyroll account credentials, your watch history, or any other Crunchyroll content. It also mutes the original audio while active, so the page's audio output comes only from dubzly's synthesized voices.
5. Third parties
- ElevenLabs: if you bring your own API key, subtitle text is sent to ElevenLabs for synthesis. Subject to ElevenLabs's privacy policy.
-
AWS:
api.dubzly.comruns on AWS App Runner; static assets fordubzly.comare served from AWS S3 + CloudFront. AWS may log standard request metadata (IP, timestamps, user agent) per their privacy policy. -
Cloudflare: DNS for
dubzly.comis hosted on Cloudflare. Subject to Cloudflare's privacy policy. - black.wiki: community preset uploads (opt-in) are stored on black.wiki, which uses Supabase + AWS Amplify Hosting. Subject to black.wiki's privacy policy.
What we don't do
- We don't sell or share your data.
- We don't use analytics, ads, or third-party tracking pixels.
- We don't require a user account to use the extension.
- We don't read or modify any Crunchyroll page beyond what's needed to play the dub.
- We don't store ElevenLabs API keys server-side.
- We don't transmit your data to anyone other than the third parties listed above.
Data retention
- Local settings (extension storage): retained until you uninstall the extension or clear browser data.
- Rendered audio in transit: not retained server-side beyond serving the HTTP response, unless we explicitly cache it (currently we do not).
- Community preset uploads: retained until you (the uploader) or a site admin removes them.
- Standard AWS / Cloudflare request logs: per provider defaults (typically 30-90 days).
Children's privacy
Dubzly is not directed at children under 13 and we do not knowingly collect data from them.
Changes
We'll update this policy when behavior changes and bump the "last updated" date at the top. Material changes will also be noted in the extension's GitHub release notes.
Contact
Questions or requests: open an issue at github.com/blackwikionline/dubzly.