Privacy Policy
Last updated: October 28, 2026
Overview
VoiceScroll is a teleprompter app that listens as you read and scrolls your script to match. It has no accounts and no servers of its own, so there is nowhere for us to store your data. This policy describes what stays on your device and what Apple, Google, our diagnostics provider, and Vercel, which hosts our website, receive.
iOS, Android, Mac and Windows Differences
The iOS, Android and Mac apps behave the same way in most respects; the Windows app, which is still in preparation, differs more. The differences that affect your privacy are:
- Speech recognition: by default, iOS recognises on your device, and on Android VoiceScroll asks for on-device recognition. Both apps have an online recognition setting. If you turn it on, your audio is sent for recognition, but only for languages your device can't recognise offline: to Apple on iOS, and to Google on Android.
- Analytics: both apps include Firebase Analytics. The Android app also collects the device's advertising ID; the iOS app uses a build of the SDK that cannot read it. The iOS app additionally reports anonymous install and purchase conversion values to Apple's SKAdNetwork for advertising measurement.
- Purchases: Apple's App Store on iOS, Google Play on Android.
- Backup: on Android, your scripts may be included in the system backup or a device-to-device transfer.
- Mac: the Mac app, for Macs with Apple silicon, is the same App Store app as the iOS app. Speech recognition works as on iOS. It sends fewer analytics events than the iOS app, without advertising-ID support or SKAdNetwork, and its error reports carry no installation identifier. It can also record your screen, and it saves videos to a folder on your Mac rather than to Photos.
- Windows: the Windows app, which is still in preparation and not yet released, has no speech recognition; the script scrolls at a speed you set. On first launch it asks whether to send usage statistics and error reports, and sends them only if you choose Send. Usage statistics go directly to Google Analytics rather than through Firebase, without an advertising ID. Its error reports carry no device model or installation identifier. It has no purchases yet. It can also record your screen, and it saves videos to a folder on your PC.
Data Collection
We have no server of our own. Apart from downloading caption fonts from our website, described under Third-Party Services, the app sends nothing to us. Some data is handled by Apple, Google, our diagnostics provider, and Vercel, which hosts our website, as follows:
- Your scripts are stored on your device. We never receive them. On Android they may be included in Android's system cloud backup or a device-to-device transfer, so they can return when you reinstall or change device. A cloud backup is stored in your own Google account and encrypted in transit and at rest; on Android 9 or later, when backup is on and a screen lock is set, it is end-to-end encrypted with a key neither we nor Google can use.
- On iOS, recognition uses Apple's Speech framework and, by default, runs entirely on your device. If you turn on online recognition, a language whose recognition model isn't on your device is recognised by Apple's servers instead. Your audio is then sent to Apple, together with any words in your script identified as another language (used as recognition hints), and handled under Apple's privacy policy. Languages whose model is on your device stay on it. On Android it uses the recognition service installed on your phone — usually Google's, though it may be another provider you have installed. VoiceScroll asks that service to recognise speech on your device and does not switch to server-based recognition by itself. If your phone can't recognise your language offline, the app tells you. Online recognition is off by default. If you turn it on and read in such a language, your audio is sent to Google for recognition and handled under Google's privacy policy. The app's voice settings show which languages work offline.
- We never receive your audio. Videos you record include their sound and stay on your device; VoiceScroll does not retain a separate audio file after a recording is processed.
- Video recording is optional. Recordings are saved on your device, and to your photo gallery only if you choose. They are never transmitted to us.
- On Mac, a recording can include your Mac's camera and, if you choose, one whole display, recorded separately. Screen recordings do not capture sound playing on your Mac; the sound in your videos comes from the microphone. Takes you have not saved stay in the app's own storage on your Mac and are deleted after the period set in the app (by default 7 days, up to 3 per script). Saved videos go to the VoiceScroll folder in Movies or to a folder you choose, never to Photos. Recordings are never transmitted to us.
- On Windows, a recording can include your PC's camera and, if you choose, one whole display, recorded separately. Screen recordings do not capture sound playing on your PC; the sound in your videos comes from the microphone. Takes you have not saved stay in the app's own folder on your PC and are deleted after the period set in the app (by default 7 days, up to 3 per script). Saved videos go to the VoiceScroll folder in Videos or to a folder you choose. Recordings are never transmitted to us.
- Both apps include Firebase Analytics, a Google service we use to measure app usage and our advertising campaigns. No audio and no script text is ever included. On Android it records completed purchases — price, product, and the Google Play order number — and, once per recording, coarse ranges describing that recording: how loud the microphone input was, how much the app reduced it and how often, which gain setting was in use, roughly how long it lasted, and whether the microphone was the built-in one, another one, or changed part-way.
- On iOS Firebase Analytics records, once per reading session, the language detected in your script together with coarse ranges and yes/no flags describing that session: whether you were only reading, recording in the app, or using the floating window, whether the script followed your voice or scrolled at a speed you set, the screen orientation, whether automatic scrolling for when the microphone is lost was switched on, whether another app took the microphone, whether the conditions for automatic scrolling were met, whether the script actually moved, how many times it started, roughly how long you read for, and — when the app has a reference pace for that script — a coarse range for how your reading pace compared with it. When the script scrolls on its own it also records what kind of interruption took the microphone, how far into the script you had got at that moment, the reading-speed setting and speed range in use, what that speed was based on, and a coarse range for the estimated words per minute. Each time you try to start reading one of your scripts, it records the script's language, its length as a number of characters and words and as a coarse range, whether the free length limit applied, and whether speech recognition has worked on your device before; the text itself is never included. It records whether speech recognition was ready and started when a session began, together with the script's language and, if it was not, a general reason such as a missing permission or an unsupported language. It also records the first time speech recognition moves one of your scripts on your device. When you record in the app, it records whether the camera started and how its starting orientation was chosen, each camera switch together with whether you were recording and the screen orientation, and, once per recording, the same kind of coarse ranges about the microphone input described for Android above. When you save a recording, it records whether it was saved as recorded or with captions or trimmed silences, how the caption timings were produced, the caption style, whether saving finished, and a coarse range for the video's length. When you buy VoiceScroll Pro in the app, it records which plan you chose — yearly, monthly, or lifetime. It also keeps your current plan (free, yearly, monthly, or lifetime) as a property of your installation, and Firebase may record the purchase itself automatically, including the product, its price, and the currency. Firebase also assigns each installation an identifier and records general information such as device model, OS version, and approximate region derived from your IP address. On Android it collects the device's advertising ID where one is available, while the iOS app uses a build of the SDK without advertising-ID support. This data is pseudonymous rather than anonymous. On iOS, Apple's SKAdNetwork separately receives anonymous conversion values for installs and purchases.
- On Mac, Firebase Analytics records the same reading-session, script-start, speech-recognition and purchase information described for iOS above, including your current plan. It sends no separate camera, recording or saving events; the reading-session information includes whether you chose to record in the app. Firebase also assigns each installation an identifier and records the general device information described above. The Mac app does not collect an advertising ID and does not report to SKAdNetwork. The Mac app lets you turn off both usage statistics and error reports at any time with Send Usage Statistics and Error Reports in Settings > General; it is on until you turn it off. When you turn it off, Firebase stops collecting usage statistics, deletes those not yet sent and creates a new installation identifier, and the app stops sending error reports to Sentry. Error reports collected before you turned it off and not yet sent may still be sent. No audio, script text or screen content is ever included.
- On first launch, the Windows app asks whether to send usage statistics and error reports. Until you answer, and while you have chosen Don't Send, it sends nothing to Google Analytics or Sentry. You can change this at any time with Send Usage Statistics and Error Reports in Settings > General. When you turn it off, the app stops creating usage statistics and error reports, deletes those saved on your PC and not yet sent, and creates a new installation identifier; error reports already handed to Sentry for sending before you turned it off may still be sent. If you choose Send, the app sends usage statistics directly to Google Analytics, without Firebase. Each time you try to start reading a script other than the sample script, it records the script's language, the script length as a number of characters and words and as a rough range, and whether the free length limit applied; the first such attempt on an installation is also recorded once as a separate event. When a reading starts and ends, it records the script's language, along with whether you chose to record in the app at the start, and the approximate reading time and a rough range for the fastest scrolling speed you used at the end. With these it sends a random installation identifier created by the app, a session identifier, the app version, the Windows version, the app's display language, and the Country or region setting in Windows. It does not send your device model or an advertising ID, and it sends signals declining the use of the data for ads and ad personalization. Google receives your PC's IP address with each request. No script text, file paths, video or audio are ever included. This data is pseudonymous, not anonymous.
- No account creation is required.
Permissions
VoiceScroll requests the following permissions:
- Microphone: Required for real-time speech recognition to detect your voice and scroll the script accordingly.
- Speech Recognition: Required for converting your speech to text so it can be matched against your script. Where that conversion happens is described under Data Collection.
- Camera: Optional. Used only to record video while you read your script.
- Photos: Optional. Used only to save recorded videos to your photo gallery when you choose to.
- Screen Recording (Mac only): Optional. Used only when you choose to record a display. macOS lists it as Screen & System Audio Recording, but VoiceScroll does not record your Mac's audio.
- Files and Folders (Mac only): Optional. Used only when you choose a folder other than Movies for saved videos.
- Camera and Microphone (Windows): The Windows app uses the camera and microphone only when you choose to record in the app, including the camera preview before recording starts. The microphone is used only to record the sound of your video; the Windows app does not ask for speech recognition access.
These permissions are used solely for the app's own functionality. The Android app additionally declares the advertising-ID permission, used only for the campaign measurement described above.
In-App Purchases
VoiceScroll offers VoiceScroll Pro, which removes the script length limit. From version 2.0 it is available on iOS and Android as a yearly or monthly subscription that renews automatically, or as a one-time purchase. On Mac it is the same purchase as on iOS, so Pro bought on an iPhone or iPad with the same Apple Account also unlocks the Mac app. Transactions are handled entirely by Apple's App Store on iOS and Mac and by Google Play on Android. We do not have access to your payment information. On iOS, Android and Mac purchases are also recorded in Firebase Analytics, as described above.
Third-Party Services
VoiceScroll uses Sentry (sentry.io) on iOS and Android to receive diagnostics — crashes, and a small number of handled errors such as a failed purchase. These reports include your device model, OS version, and an installation identifier; they do not include your scripts. The Mac app also uses Sentry, for crashes, app freezes and a few handled errors (a reading session that fails to start, a failed purchase, or a recording that can't be written); its reports include your Mac's model, macOS version and app version, but no installation identifier and no scripts. The Windows app, which is still in preparation and not yet released, sends diagnostics to Sentry only if you choose Send: crashes and other errors the app could not handle, and two handled errors (a reading session that fails to start, or a recording that can't be written). Its reports include runtime details such as the Windows version, the app version, and your language and time zone settings, but no device model, device name, installation identifier or scripts. The iOS, Android and Mac apps also use Firebase Analytics. The Android app additionally uses Google Play Billing and relies on Google Play services for in-app updates and the review prompt; the iOS app checks Apple's App Store for new versions. For scripts in Arabic, Hebrew, Thai, or Hindi, some caption fonts are not built into the app: the app downloads each one the first time it is needed on your device, from our website (voice-scroll.com), which is hosted by Vercel. As with any download, Vercel receives your device's IP address with the request; your scripts and audio are never sent. The Mac app connects only to Apple, Firebase and Sentry: the Mac App Store handles its updates, and it does not download caption fonts. The Windows app connects only to Google Analytics and Sentry, and to neither of them unless you choose Send; it does not download caption fonts either. Speech recognition is provided by your device's own recognition service or, if you turn on online recognition, by Apple on iOS and Mac and by Google on Android, as described above. We do not display ads in the app and we do not sell your data. We do advertise VoiceScroll, and the measurement data above is used to see which campaigns work.
Changes to This Policy
We may update this privacy policy from time to time. Any changes will be posted on this page with an updated revision date.
Contact
If you have any questions about this privacy policy, please contact us at tony@voice-scroll.com