Privacy policy

What you say stays on your Mac

The short version: SayWrite transcribes your voice on your Mac without uploading your audio or dictations. Temporary recordings are deleted as soon as they're transcribed. Account and license services, model downloads, update checks and feedback use the network, as explained below. Text you dictate into another app is then handled by that app, under its own settings. If you subscribe, Stripe handles checkout and billing (see third parties).

Last updated

Summary

  • The app has no passwords, no analytics, no telemetry, no ads and no trackers. Your account is the email you use at Stripe checkout; subscribers sign in with an emailed link (no password) to turn SayWrite on or manage their subscription.
  • This website uses Google Analytics to count visits. It never sees anything you dictate.
  • Speech recognition runs on your Mac. Audio is never uploaded, and each temporary recording is deleted as soon as it's transcribed.
  • Everything SayWrite saves stays on your Mac, in folders only your user account can read.
  • The app connects to the internet for speech-model setup or recovery, to check for updates (you can turn this off), for subscribers, to turn SayWrite on for a Mac and check the license, and to send feedback when you click Send. If you enable it, it also talks to your own AI server on your Mac.

What SayWrite processes on your Mac

Your voice

While you dictate, audio is written to a temporary file in the app's temporary folder so it can be transcribed. It's deleted as soon as the text is ready, and also when you cancel or an error happens. Leftover temporary files are cleared when SayWrite starts. Audio is never saved anywhere else, and SayWrite never uploads it.

Your text

Transcribed text is typed into the app you were using. If History is on, a copy is saved on your Mac with the time, the app it went to and its length, so you can search and reuse it. You choose how long History is kept and can clear it at any time. Text dictated into password managers is never saved to History, and spoken AI instructions (like “make this more concise”) aren't saved either.

Typing speed and stats

To compare your speaking and typing speed, SayWrite counts keystrokes and measures their timing in short bursts, along with the app you were typing in. It never records which keys you press or what you type. Filler-word counts are stored as numbers, without the text.

Everything else

Your settings, snippets, personal dictionary, dictionary suggestions, per-app rules, optional “How I write” note and saved file transcripts are stored on your Mac. File transcription keeps the text and timestamps, never the audio.

Where your data is stored

SayWrite stores its data in your user Library on this Mac: an Application Support folder for History, stats, file transcripts and dictionary suggestions (readable only by your user account), the app's preferences for settings, a Caches folder for the Neural Engine's compiled model, and the system temporary folder for recordings in progress. The speech model itself is kept in Application Support too. Nothing is synced to iCloud or any other service.

When SayWrite connects to the internet

Speech processing stays local. Separate connections support model setup or recovery, updates, account and license services, and feedback. Optional AI uses loopback on your Mac; a local server's own configuration and network behavior also matter. Feedback sends the message you choose to submit:

  1. Speech model download. When you click Download Model, SayWrite downloads NVIDIA Parakeet TDT 0.6B v2 (about 465 MB) from Hugging Face. Like any download, Hugging Face sees a normal web request, including your IP address. The speech runtime may download files again if the model cache is incomplete or a model load fails. With the model ready on disk, dictation works offline.
  2. Update checks. While “Automatically check for updates” is on (the default), SayWrite checks for a new version once a day by fetching a small file from the SayWrite update feed. It sends no system profile. If you accept an update, the signed update downloads from the same feed. You can turn automatic checks off in Settings › General and check by hand instead.
  3. Turning SayWrite on for a Mac (subscribers only). Each subscription works on up to 2 Macs at a time, so when you turn SayWrite on, by signing in with your email or entering a license key, the app sends saywrite.app your license key or sign-in link, a random install ID that SayWrite created on this Mac, the Mac's model (like “MacBook Pro”) and the Mac's name (as set in System Settings). If you sign in with your email, SayWrite sends that address to saywrite.app so we can email you the link. The install ID isn't derived from your hardware and identifies only this copy of SayWrite. We keep the install ID, model, name and the dates it was added and last seen with your subscription in Stripe, so you can see and remove your Macs in your account. Nothing you say or write is sent.
  4. License renewal (subscribers only). About once a week, and daily in the last 5 days before a subscription license expires, SayWrite asks saywrite.app to confirm the subscription is active and this Mac is still on the account, and gets a renewed key. It sends only the license key, which includes the random install ID of the Mac it was turned on for: no audio, text or email address. It uses no cookies, never follows redirects, and stops trying 30 days after a license lapses. Gift keys never connect. If you click Manage Subscription in Settings › License, SayWrite asks saywrite.app for a link to Stripe's billing page and opens it in your browser.
  5. Send Feedback (only when you click Send). If you open Send Feedback (from the Help menu, the menu bar icon or Settings › Privacy) and click Send, SayWrite sends saywrite.app the message you typed, your email address if you added one so we can reply, and, while “Include diagnostics” is ticked (it is by default, and you can untick it), a short list of technical details: the app version and build, macOS version, Mac model and chip type, language, license status (a word such as “trial”, never the key or your email), your AI and shortcut settings, the number of days since SayWrite 0.4.7 or later was first opened on this Mac, and the names of recent errors. It does not automatically attach your dictations, History or audio, and “See exactly what's sent” shows the whole request before you send it. Nothing is sent in the background. It reaches us as an email, and we use it only to reply and improve SayWrite.
  6. Your own local AI (optional, off by default). If you turn on AI and choose Ollama or LM Studio, SayWrite sends the text to be rewritten to that server at 127.0.0.1, which is your own Mac. It refuses any other address, even if you type one in. Apple Intelligence's on-device model makes no network request at all.

Third parties

Speech transcription does not send us your audio or dictations. Feedback sends the content you choose to submit, and we don't sell or share personal data. This website and app downloads are served by Vercel, the update feed by GitHub, and the speech model comes from Hugging Face; each handles those requests under its own privacy policy. We see total download counts, with no information about who downloaded. If you subscribe, checkout and billing happen in your web browser on Stripe, which processes your payment details and email under its privacy policy. We can see your email address, plan and payment status in Stripe, and use them only to run your subscription, refunds and support; SayWrite and this website never see your card number. The Macs you turn SayWrite on for (install ID, model, name and dates) are stored with your subscription in Stripe. After checkout, and whenever you ask for your key again on the license page, we send your license key and receipt-style details (plan and renewal date) to the email address you gave Stripe, and when you sign in with your email, in SayWrite or on your account page, we send a sign-in link there. Both go through Resend, an email delivery service, under its privacy policy. We don't use that address for anything else. Feedback you send from the app is forwarded to us as an email through Resend too. If you email us or send feedback, we keep that conversation to help you.

This website

saywrite.app is a static website. It uses Google Analytics 4 to count visits and see which pages are useful, with IP anonymization on and advertising features off. Google Analytics sets first-party cookies; visitors in Europe are asked first and can decline. We don't use ad pixels or sell data, and none of this applies to the SayWrite app, which has no analytics. Fonts are served from this site. Vercel, our host, may process standard request logs, such as IP address and browser type, to deliver the site and protect it from abuse. We count downloads of the app from this website as an anonymous tally (a date and time per download, nothing about who downloaded).

Deleting your data

In the app, use History › Clear All (this also clears filler-word counts), clear typing data in Settings › History & Stats, and delete saved file transcripts in Files. Removing the app and its folders in your user Library deletes everything, including the speech model.

Children

SayWrite does not collect audio recordings or dictations. Subscriptions are for adults, through Stripe.

Changes to this policy

If SayWrite ever changes how it handles data, this page will be updated before the change ships, with a new date at the top. Release notes are on the changelog.

Contact

This policy is the responsibility of the independent developer who makes and sells SayWrite. Questions about privacy? Email hello@saywrite.app.