← ReadBeam

ReadBeam Privacy Policy

Last updated: September 27, 2026

ReadBeam is designed with privacy as a core principle. All core reading functionality runs entirely within your browser.

The short version

  • Reading aloud, visual focus, and attention tracking never leave your browser. The text you are reading is processed locally and is never sent to our servers.
  • You can optionally connect your own API keys (for cloud voices and the Explain feature). When you do, requests go directly from your browser to the provider you chose (OpenAI, ElevenLabs, Deepgram, or OpenRouter). Our servers are never in that path and never see the text.
  • Anonymous weekly counts are off by default. If — and only if — you turn them on in Settings, ReadBeam sends one small report per week containing counts only (how many reading sessions you finished, how long you focused, how often the gentle nudge was acknowledged, whether a cloud key is connected). No page, no text, no title, no account, no device identifier, and no timestamp finer than the week.
  • Our own server handles only licensing, a small fixed-text voice demo, and — if you opt in — those weekly counts. See the sections below for exactly what each request carries.

What the extension accesses

ReadBeam uses the following Chrome permissions:

  • storage: To save your preferences (voice, speed, focus mode) and your reading/attention statistics locally in your browser.
  • host_permissions (https://readbeam-api.liangyaozan.workers.dev/*): To communicate with our API server for license verification and the fixed-text voice demo. See “Our API server” below for what these requests carry.
  • optional_host_permissions (api.openai.com, api.elevenlabs.io, api.deepgram.com, openrouter.ai): Requested only if you choose to connect your own API key for that provider, and used only to send requests directly from your browser to that provider. If you never configure a key, these permissions are never requested and no data goes to these providers.
  • content_scripts (http://*/*, https://*/*): To inject the reading interface (focus overlay, selection point, progress bar, drift detection popup) into web pages when you activate ReadBeam. The content script runs only on standard web pages (http/https), not on browser internal pages, new tab pages, or other extensions’ pages.

We do NOT request:

  • Access to your browsing history
  • Access to tabs you’re not actively using
  • Any personal information

Text-to-speech processing

Default (no API key configured): ReadBeam uses your browser’s built-in Web Speech API. The text you’re reading is processed locally by your operating system’s speech synthesizer. No text is sent to any server for speech generation.

If you connect your own cloud-voice API key (BYOK): the sentence currently being read is sent directly from your browser to the provider you selected — OpenAI, ElevenLabs, or Deepgram — together with your API key. The request does not pass through our servers; we never see your reading content or your key in transit. These requests are then also governed by the provider’s own privacy policy. Your key is stored in your browser’s local storage and is not included in any request to our server.

Upgrade-page voice demo. The “Hear it” sample on the upgrade page is generated from a short text we wrote — never from the article you are reading. Playing it sends no reading content, no account identifier, and no device identifier; we record only that a demo was played, and cap how many a device can play.

Advanced voice previews. When you play a sample of an advanced (cloud) voice, we record which voice was played — and nothing else. No account identifier, no IP address, and none of your reading content is included. This count is how we decide whether to invest in better voices; it is not tied to you in any way.

Explain (AI explanations)

When you use ExplainThis, the sentence (or word) you asked about, plus up to two surrounding sentences for context, are sent directly from your browser to the LLM provider you configured (OpenAI, or OpenRouter as an alternative catalog). If no key is configured, Explain is unavailable and nothing is sent. As with BYOK voices, our servers are never in this path and the provider’s own privacy policy applies.

Page content access

ReadBeam reads visible text from the web pages where you activate it, in two situations:

  1. Language detection: The first ~2000 characters of the page’s body text are analyzed locally (using a regex-based detector) to determine which voice to use.
  2. Reading aloud and visual focus: The sentence you selected and the surrounding paragraphs are read from the DOM in order to speak them and highlight them visually.

In both cases the text is processed inside your browser. It is transmitted externally only in the BYOK cases described above (cloud voices / Explain), and then only to the provider you chose — never to us. ReadBeam never reads form fields, password inputs, contenteditable regions, or content from cross-origin iframes.

Our API server

The extension communicates with exactly one server of ours: readbeam-api.liangyaozan.workers.dev (hosted on Cloudflare Workers). It handles:

  • License verification (Pro): requests carry a random, persistent device identifier generated on first install, sent as an authorization token. This identifier is not linked to your name, email, or payment identity on our side; payments are processed by Waffo, our merchant of record, which has its own privacy policy. The requests contain no reading content.
  • Fixed-text voice demo: a play counter only, capped per device. No text, no identifiers (see above).
  • Anonymous weekly counts (off by default, see the next section): one report per closed week — counts and fixed bucket labels only.

See the next section for the exact fields of that last request. Reading content, attention statistics (other than those counts), and coach data are never transmitted.

Anonymous weekly counts (opt-in)

Off by default. While the switch in Settings is off, ReadBeam does not count anything — not even locally on your device. Turning it off also deletes the week that was being counted.

When you turn it on, the extension keeps counters on your device for the current week and, after that week ends, sends one report containing exactly these fields:

FieldWhat it is
weekThe ISO week the counts belong to (e.g. 2026-W39). No finer timestamp.
sessionsBucket, minutesBucketFixed ranges (1-2, 3-5, 6-10, 11+; 0-15, 16-60, 61-180, 181+) — never a raw duration.
sessions, qualifiedSessions, focusMinutesHow many reading sessions finished, how many ran over a minute, and total focused minutes, rounded.
nudges, nudgesAcknowledgedHow often the gentle refocus nudge appeared, and how often it was acknowledged.
probesShown, probesAnsweredCoach check-in prompts (Pro + coaching opt-in only) and how many were answered.
resumeOffered, resumeAcceptedWhether the “continue reading” bar was shown and whether it was used. Resume offers are counted at most once per day.
thoughtsCaptured, explainSentence, explainWordHow often you captured a thought, and whether Explain was used on a sentence or a word.
goalSet, goalMet, focusFull, pro, byokTts, byokLlmSix yes/no (0/1) flags: whether a weekly goal was set and met, whether focus mode is on, whether you have Pro, and whether a cloud-voice or Explain key is connected.

That request contains no page URL, title, or text; no account, device, or license identifier; no IP-based profile (the server uses the IP only for a short in-memory rate limit, as it already does for the voice demo, and stores nothing). Because there is no identifier at all, reports cannot be linked to each other or to you — we learn totals and distributions, never a history.

We use these numbers to answer one question: did this version actually help people keep reading? (weekly session counts, whether the nudge lands, whether people come back to an unfinished article). They are never used for advertising and never sold.

Data stored locally

The following data is stored only in your browser’s local storage and never leaves your device:

  • Voice preferences, reading speed, and focus mode settings
  • Daily usage time (shown as your “Today: Nm focused” figure)
  • Your reading-session statistics, attention/focus trends, and captured thoughts (the “mirror” data)
  • Your BYOK API keys, if you configured any (stored locally; sent only to the provider you chose)
  • Onboarding cue count (for the selection dot pulse animation)
  • If you opted in: the current week’s counters, which stay on your device until the week closes and one anonymous report is sent

Invite-a-friend feature (dormant)

ReadBeam v1.1 shipped an optional invite feature (referral codes, with a one-way SHA-256 hash of the requester’s IP address stored to prevent duplicate confirmations). This feature is dormant as of v2.0: the code is retained but the feature is not reachable from the UI, no invite requests are made, and no referral data is collected. If it is ever reactivated, this policy will be updated first.

Subscriptions (Pro)

Coaching is the only paid feature. If you subscribe:

  • Payment is handled by Waffo, our merchant of record. ReadBeam never sees or stores your card number.
  • What our server receives: a per-installation id (a random value generated on your device, not a hardware fingerprint — reinstalling mints a new one), the plan you chose, the subscription status and the current period end, plus the license key when you activate or release a device.
  • What it never receives: anything you read. Your pages, your text and your reading statistics stay in your browser.
  • Device limit: one subscription can be active on up to three installations. You can release a device at any time from the settings panel.
  • Cancellation and refunds: both are handled in Waffo’s consumer portal — cancel anytime, and a full refund is available within 14 days. When a refund or cancellation is processed, we mark the license inactive; the change shows up in the extension within an hour.

Third-party services

ReadBeam does not integrate with any third-party analytics, tracking, or advertising services. There is no analytics SDK, no cookies, and no cross-origin identifier in the extension. External services involved are:

  • Our API server (Cloudflare Workers) — licensing, the demo counter, and (only if you opt in) the anonymous weekly counts described above.
  • Waffo — our merchant of record, which processes Pro payments and handles cancellations and refunds. We never see your card details.
  • Your chosen AI providers (OpenAI / ElevenLabs / Deepgram / OpenRouter) — only if you configure your own API keys, and only for requests sent directly from your browser.

Open source

ReadBeam’s source code is fully open. You can inspect exactly what the extension does at https://github.com/liang-index/chrome-extension-readbeam.

Contact

If you have privacy concerns or questions, please file an issue on GitHub or reach out via email.

ReadBeam
Privacy
Support: hello@byzanx.com
© 2026 byzanx.com