Privacy
On-device privacy: what ThreadCast never sends to a server
Most “free” browser TTS extensions are free because they monetize what you read. The text gets shipped to a cloud TTS service to synthesize the audio, often through a third party that logs it. Sometimes the same extension also ships your reading history, browsing patterns, or hashed identifiers to whoever buys ad data that quarter. The risk is not hypothetical. In 2024, a Georgia Tech team presenting at the USENIX Security Symposium found that more than 3,000 browser extensions automatically collect user-specific data, and more than 200 of them directly upload sensitive page content to servers (Georgia Tech, “Arcanum” study, 2024). ThreadCast does not work that way. Every voice engine runs on your device. We do not see the threads you listen to, the comments, the timestamps, the voices you pick, or anything that could identify you.
TL;DR. ThreadCast runs all four voice engines (System, AI neural CPU, AI neural GPU Lite, AI neural GPU) entirely on your device. We make exactly one network request: the initial download of AI neural model weights from a public model mirror, and only when you opt into an AI engine. After that, ThreadCast runs fully offline. Settings live in your browser; we never see them.
Does ThreadCast send Reddit thread text to a server?
No. The voice engine receives the text directly from the page in your browser, synthesizes audio in your browser, and plays it from your browser. Nothing about a thread you listen to is something ThreadCast could surface to anyone, even if we wanted to. There is no logging endpoint. There is no analytics call that fires on play.
The three engines that are not using your OS’s built-in Web Speech API (AI neural CPU, AI neural GPU Lite, and AI neural GPU) run neural models in WebAssembly or WebGPU, on your hardware, against the text that lives in the same tab. The model files are local; the inference is local; the output PCM is local. The only thing that crosses the network boundary is the audio you eventually hear from your speakers.
What is the one network request?
Model weight download for the AI neural engines, on first use, from our public Hugging Face mirror.
| Engine | First-use download | Subsequent use |
|---|---|---|
| System voices | None | None (uses your OS speech synthesizer) |
| AI neural CPU | ~63 MB per voice (only the voice you select) | None (cached in your browser) |
| AI neural GPU Lite | ~177 MB once (model + tokenizer + 5 accent voices) | None (cached in your browser) |
| AI neural GPU | ~325 MB total (model + tokenizer + 11 voice embeddings) | None (cached in your browser) |
When you first toggle on any AI neural engine (CPU, GPU Lite, or GPU), ThreadCast prompts you to download the relevant files. The download happens via standard fetch() to huggingface.co, a public model hosting service. The request includes the file URL, your IP (as with any HTTP request), your User-Agent (as with any HTTP request), and nothing else from us. No cookies, no IDs, no telemetry parameters.
This is data minimisation by design. The principle is written into EU law: Article 5(1)(c) of the GDPR requires that personal data be “adequate, relevant and limited to what is necessary” (EU GDPR, Article 5, 2016). We hold the limit at zero. The only bytes we cause to move are the model weights you asked for.
After download, the files cache in browser-managed storage (Cache Storage and IndexedDB, depending on the engine). They never re-download unless you uninstall and reinstall, or manually clear the cache.
If you only use System voices, ThreadCast never makes a network request after install. Not one.
What does Hugging Face see?
When the model files download from huggingface.co, Hugging Face’s CDN sees:
- Your IP address (standard for any HTTP request)
- The file path being requested (e.g.
/Pixel-Labs/threadcast-mirror/resolve/main/voice-gpu.bin) - Your User-Agent
- HTTP-level metadata (timestamps, byte counts)
Hugging Face does not see what you do with the file after download. They do not see thread text, comment text, what subreddit you are on, what voice you pick, or that you are using ThreadCast at all (the request looks like any other model fetch). Their privacy policy is on their site.
If you want to avoid even that one request, stay on System voices. They synthesize with your OS engine and require zero network access.
What about Reddit-side data?
ThreadCast does not talk to Reddit’s API. The extension reads thread content from the page DOM after Reddit’s own client renders it. Same content that is already loaded for you. We do not authenticate to Reddit, do not store your Reddit cookies, do not access private subreddits, and do not bypass Reddit’s content policies.
Reddit’s own analytics and tracking still apply to the page itself (because you are viewing reddit.com). ThreadCast is just listening to the rendered HTML the way a screen reader would.
Where are my settings stored?
Locally on your device, in Chrome’s chrome.storage.local. Optionally, your settings can sync to your other Chrome installations via chrome.storage.sync. That is Chrome’s own sync system, encrypted with your Google account, and at no point passes through ThreadCast’s servers (because we do not have settings servers). When you sign into Chrome on a new device, your ThreadCast preferences come along automatically.
You can:
- Export your settings as a JSON file at any time (Settings → Import / export). The file contains your enabled voices, author overrides, sleep-mode preferences, ambient track choice, etc. Nothing identifying.
- Import a JSON to restore on another machine.
- Clear all storage by uninstalling. Chrome wipes extension storage automatically.
When Premium ships alongside the iOS app, optional cloud sync via your ThreadCast account becomes available so settings travel across non-Chrome platforms (Android, iOS, future browsers). That sync is opt-in, encrypted at rest, and can be disabled.
What does ThreadCast not collect?
Nothing that identifies you or what you read. The USENIX 2024 audit flagged extensions that quietly harvest names, emails, and full page text (Georgia Tech, “Arcanum” study, 2024). Here is everything in that category that ThreadCast leaves untouched.
For absolute clarity:
- ❌ Thread URLs. We do not know what you listen to.
- ❌ Thread text or comment text. Never leaves your browser.
- ❌ Listening history. We do not store it; we do not have it.
- ❌ Identity. No accounts at v1. No email required, no sign-up, no IDs.
- ❌ Device fingerprints. We do not fingerprint.
- ❌ Telemetry / usage analytics. No event firing, no page-view tracking, no error reporting tied to your install.
- ❌ Voice selection. Does not leave your browser.
- ❌ Author overrides. Stored locally, optionally Chrome-synced (encrypted with your Google account, opaque to us).
- ❌ Bug-report content. When you email support, you tell us what you tell us. Nothing automatic.
Why did we build it this way?
Three reasons.
-
It is the right baseline. “What you read” is private by default in any other context: a book, an article, a paper letter. There is no reason it should be different when an extension is reading it for you. We did not want to build a product whose business model depends on knowing what you find interesting on Reddit.
-
It works better. On-device synthesis is faster than cloud TTS for any GPU-equipped device, does not require network access, does not fail when Wi-Fi flickers at 2 AM, does not have a per-character cost we would have to paywall. The privacy-first design and the technically-better-product design are the same design.
-
It scales without a treadmill. Cloud TTS at scale costs money per word. To break even on a free product with a million users on cloud TTS, you have to monetize them somehow (usually ads, usually data). On-device costs us zero per word, so the free tier stays free without a hidden cost to you.
How does this compare to other Reddit TTS extensions?
| ThreadCast | Typical cloud-TTS extension | |
|---|---|---|
| Synthesis location | Your device | Vendor’s cloud |
| Sees thread text | No | Yes (required for synthesis) |
| Sees URLs / history | No | Often, depending on telemetry |
| Network calls during playback | None (after model download for AI engines) | One per segment, typically |
| Works offline | Yes | No |
| Account required | No | Often |
| Free tier paywall | None (full feature set free) | Usually capped by characters or minutes |
Some cloud TTS extensions are perfectly fine privacy-wise (some make strong commitments not to log). Others are not. The on-device default sidesteps the question entirely.
Can I verify ThreadCast does not phone home?
Yes, and we recommend you do.
- Open Chrome DevTools (
F12) on the extension’s offscreen document or any tab where ThreadCast is active. Network tab. - Use ThreadCast normally. Listen to a thread. Switch voices. Toggle sleep mode.
- Watch the network tab. You will see exactly two categories of request:
- Reddit’s own requests (image avatars, comment loads, etc.)
- During first-time AI engine setup only: a Hugging Face download for model weights.
Nothing else. No analytics endpoint, no telemetry, no error logging, no ping. If you ever do see a request from ThreadCast that is not model-weight download or a documented sync call, tell us immediately. That is a bug, and we will fix it.
One disclosure worth repeating: ThreadCast is built by Pixel Labs, an independent developer. It is not affiliated with Reddit, and Reddit is a trademark of Reddit, Inc.
Sources
- Georgia Institute of Technology, “Study Finds Thousands of Browser Extensions Compromise User Data” (2024). news.gatech.edu. Retrieved 2026-06-05.
- European Union, “Regulation (EU) 2016/679 (GDPR), Article 5: Principles relating to processing of personal data” (2016). gdpr-info.eu. Retrieved 2026-06-05.
- Hugging Face, “Privacy Policy” (2026). huggingface.co. Retrieved 2026-06-05.
- MDN Web Docs, “Web Speech API” (2026). developer.mozilla.org. Retrieved 2026-06-05.
- Google, “chrome.storage (Chrome Extensions API)” (2024). developer.chrome.com. Retrieved 2026-06-05.
The shortest answer to “what does ThreadCast send to your servers”: one model-weights download from a public mirror, only if you turn on AI engines, only the first time. The rest is your computer talking to itself. That is the whole story, and we intend to keep it that way.
Frequently asked questions
Will Premium change the privacy model?
No. The Premium tier (live in v1.2.0 on Android; iOS in v1.5.0) unlocks on-device AI neural voices and MP3 audio export. Both still run entirely on your device with no cloud synthesis. Cloud sync of preferences and queue (plus history) lands later (v1.4.0) and will be encrypted with industry-standard practices; the privacy policy will cover exactly what is stored.
What happens to model files when I uninstall ThreadCast?
Chrome wipes them automatically. Extension storage is scoped to the extension; uninstalling deletes the namespace.
What if I'm on a managed/corporate Chrome?
Same on-device design. Your IT team's Chrome management policies control whether sync happens; we do not override them.
Do you sell aggregated data?
We do not have any data. There is nothing to aggregate. We have structured the product so this question cannot even apply.
Is there a robots.txt-style way to block AI training on your model weights?
The model weights we ship come from open-source neural-TTS projects, and we do not train on user data because we do not have user data. The weights themselves are public.
ThreadCast Team · Pixel Labs
Written and reviewed by the engineers building ThreadCast at Pixel Labs. We ship the Chrome extension, the Android app, and the on-device voice engines, and we test every feature on real Reddit threads before writing about it. About us →
Listen to Reddit aloud — free, on-device, no account.
Four voice engines, multi-voice threads, sleep mode with ambient sounds. Works on Chrome, Edge, Brave, and every Chromium browser.
Add ThreadCast to ChromeMore from the blog
- Engineering ThreadCast voice engines: 4 on-device options compared ThreadCast ships 4 free on-device TTS engines. Chrome holds 74.9% of desktop browsers (StatCounter, 2026). Compare sizes, speeds, voices, and which to pick.
- Engineering Multi-voice Reddit threads: usernames to voices Familiar voices are grouped at a 0.82 median accuracy vs 0.34 for unfamiliar ones, so ThreadCast pins a consistent, deterministic voice to each Reddit username.