Privacy
Readflow is a text-to-audio app. This page explains, in plain terms, what data lives where and what (if anything) leaves your device. There is no ad tracking and no third-party analytics in the app or on this site.
What stays on your device
By default, everything Readflow saves lives locally in a small on-device database (Hive). Concretely, that includes:
- The audio items you create, plus their source text and metadata.
- Folders, chapters, and bookmarks you add.
- Settings: theme (light/dark), sleep-timer preferences, and the selected TTS provider / voice.
None of this is uploaded anywhere unless you sign in. If you never sign in, your data never leaves your device.
What is sent to Supabase when you sign in
Sign-in is optional and only enabled when this build was compiled with Supabase credentials configured by the operator. If you choose to sign in, Readflow syncs the same data listed above to your Supabase project so you can access it from another signed-in device. Concretely:
- Auth: your email and password hash are handled by Supabase Auth. We do not run our own auth servers.
- Sync: audio items, folders, chapters, bookmarks, and per-word pronunciation overrides are pushed and pulled between your devices through your Supabase project's database.
Sync is needed only for cross-device access. Nothing else is sent: there is no analytics, no telemetry, no usage events, no ad tracking.
Text-to-speech and third-party providers
When you generate audio using a remote TTS provider, the source text you pasted is sent directly from your device to whichever provider you configured (ElevenLabs, OpenAI, an OpenAI-compatible endpoint, or Google Cloud Text-to-Speech). The request is made using the API key you entered in Settings → Voice. Readflow's own servers never see that text — the audio is generated and streamed back to your device.
Those providers each have their own privacy terms governing how they handle the text and audio they process. You can stop sending text to a provider at any time by switching to a different TTS provider (or the on-device / stub fallback) in Settings → Voice.
API keys on the web build
TTS API keys on the web build are stored in the browser's
localStorage. This is a known limitation of running in a
sandboxed browser: there is no Keychain or Keystore equivalent, so any
JavaScript running on the same origin (for example, an XSS payload
from a third-party widget) could in principle read the key. The
in-app Settings → Voice screen surfaces the same warning when a
key is set on web.
If you are ever concerned about a key, revoke or rotate it with your provider. ElevenLabs, OpenAI, and Google Cloud each let you invalidate an API key from their dashboard and issue a new one. Then paste the new key into Readflow (or clear it to stop using that provider).
Contact
Questions or concerns: support@readflow.app (PLACEHOLDER).