On dictation, and who can read your words

Encrypted, but still readable

The pitch is easy to like. You dictate a sentence, change your mind halfway through, and the software is supposed to keep up with you. "Meet at 2, actually 3" comes out as "Meet at 3." Wispr Flow markets this as Backtrack, a feature that reads your rambling, your pauses, and your mid-sentence corrections and returns the thought you landed on rather than the one you abandoned. It is a genuinely useful idea. The question worth asking is where that understanding happens, and what has to travel for it to work.

A word before we go further. This is not a case against using Wispr Flow. It is a capable product with real engineering behind it, and for many people the convenience is worth the trade. Our point is narrower, and we think more useful. You should be able to see where your words actually go, and how they are protected once they arrive, because those details are not always what the marketing language implies. Not all encryption is equal, and knowing the difference is the difference between an informed choice and a comfortable assumption.

How it actually works

We took Wispr Flow's client apart by reading it, statically, without sending a single request to Wispr's servers. Wispr Flow is an Electron application whose core logic is shared across platforms, and what we read was that shared client core - the same core that ships inside the Mac build. The formatting pipeline described below was recovered from that cross-platform code and is consistent across the Windows and macOS builds we examined. A few things are settled by that reading, and one important thing is not, so we will keep the two apart.

What is proven Wispr Flow is a thin client. The audio you speak is streamed to Wispr's servers, where transcription happens, and there is no on-device speech model doing the first pass. Every step of cleanup that follows - removing "um" and "uh," adding punctuation and capitalization, and any reshaping of what you said - is a network request to a backend endpoint, /llm/formatting, that returns the server's answer as the text you see. We searched the entire client for a local list of filler words or any correction logic. There is none. There is no on-device language model in the client at all. The formatting always requires the round trip.

What we found in the client, read statically
Read from a static inspection of the shipping client (version 1.3.473), cross-referenced with the macOS 1.6.580 build. We sent no requests to Wispr and did not capture live traffic, so the server's own instructions to its model are not recovered - see "What is inferred" below.

What is inferred The word "Backtrack" appears on Wispr's marketing pages and never in the client's code, and there is no code path by that name. The most reasonable reading is that the marketed Backtrack behavior is produced by a server-side language model on their backend, the same model that rewrites your transcript into a clean result. We want to be precise here. We never intercepted a request labeled Backtrack, and the server's own instructions to that model cannot be recovered from the client. So the mechanism is an inference from how the pipeline is built, and we are stating it as inference on purpose.

What leaves the machine, and why

Your Mac mic + the app Wispr servers formatting model audio + raw transcript + screen context cleaned text
app name + URLsurrounding textaccessibility text OCR (when on)your dictionarystyle settings

"Screen context" is not a figure of speech. To settle the ambiguous corrections, the formatting request carries the items above alongside your words.

New message To: [email protected] Confirm the Acme acquisition budget before the board call on Friday. uploaded Wispr servers formatting model
words around your cursor · ax_context a screenshot read by OCR · ocr_context the app and its web address · appURL code identifiers, in editors · variable_names

When you dictate, Wispr grabs a screenshot of the display containing your mouse cursor, plus the accessibility text around it, and uploads them with your words. Both are checkable: the client references ocrParsedWords, ax_context and appURL, and the Security and Compliance FAQ says Flow "captures a screenshot of the display containing the mouse cursor to extract proper nouns."

You say
"Tell the team the merger with Acme closes Friday - actually, hold on, don't name the company, just say a deal is close."
What is uploaded to be cleaned up
tell the team the merger with acme closes friday actually hold on don't name the company just say a deal is close
What you see typed
Tell the team a deal is close.

You took the confidential part back out loud. But the correction is resolved on the server, so the raw transcript - the company and the date included - was uploaded first, before a word of it was cleaned. The thing you retracted is exactly the thing that left your machine. Privt's approach keeps that correction on your Mac, so the words you take back never leave it.

The reason this matters is what the formatting request carries. Cleaning up "meet at 2, actually 3" from the words alone is easy. The harder corrections are not: a misheard name, a term of art, a choice between two phrases that sound almost the same. Those can only be resolved with context, so the request sends more than your transcript.

Recovered from the client, that extra context is substantial. It includes the name of the app you are dictating into, and the web address it is showing. It includes the text around your cursor, and the accessibility text of the field you are typing in. When screen capture is switched on, it includes text read off your display by optical character recognition. And it includes your custom dictionary and your personal style settings.

The app does not stop at sending. After it pastes, it watches the text box, reads back the words you fixed by hand, and learns from the difference. Those learned words then sync to Wispr's servers. By Wispr's own documentation, that dictionary syncs regardless of Privacy Mode.

That is the honest shape of it. The feature sold as understanding you better works by sending more of your raw words and your screen away, because that is what the model on the far end needs to settle the ambiguous cases.

The privacy concerns, briefly

User-created snippets (saved text expansions) and custom dictionaries (custom vocabulary) are stored by Wispr and synced across your devices regardless of Privacy Mode or Cloud Sync - they are user-authored productivity assets, not dictation content. Wispr Flow Security and Compliance FAQ, as of 30 August 2026. docs.wisprflow.ai/articles/3467817258-security-and-compliance-faq

Encrypted at rest, and who holds the key

Wispr's documentation uses the right words. In transit, "All confidential data in transit uses TLS 1.2 or higher with forward-secrecy cipher suites." At rest, "Stored data is encrypted with AES-256," with keys "managed in a hardware-backed key management service." (Security and Compliance FAQ, read 30 August 2026.) That is real protection and worth having. It also answers a narrower question than it appears to.

This is where the word "encryption" does more work than it should, because it covers two very different guarantees. Encryption protects your data from whoever does not hold the key. When the provider holds the key, as here, the encryption protects you from a stolen disk and from an outside attacker, and it does not protect you from the provider, who can decrypt at will. A zero-knowledge design is the other guarantee entirely: the provider stores only ciphertext it has no way to open. Both are honestly called encryption. They do not protect you from the same people, and that distinction is the whole game.

"Encrypted at rest" protects a stolen server disk. It says nothing about whether Wispr itself can read your data. On that, the same FAQ is refreshingly direct:

Wispr Flow is not end-to-end encrypted in the strict cryptographic sense. The service is encrypted in transit (TLS 1.2+) and at rest, but audio must be decrypted to produce a transcription, so true end-to-end encryption is not possible. Wispr Flow Security and Compliance FAQ, as of 30 August 2026. docs.wisprflow.ai/articles/3467817258-security-and-compliance-faq

The keys are Wispr's, and customer-managed keys are "not currently supported." The FAQ adds that when Cloud Sync is on and Privacy Mode is off, "A limited number of engineering and infrastructure personnel hold read-only, MFA-gated, logged production access." So the encryption is a lock against outsiders and stolen hardware. It is not a lock against Wispr. Whoever holds the key can open the box, and here that is the company, not you.

There is one setting where the content is genuinely out of reach. With Privacy Mode on and Cloud Sync off, "decrypted audio and transcripts are never persisted." But recall the dictionary. It syncs regardless of Privacy Mode, it is retained, and it sits under Wispr's keys, so even in the most private configuration the proper nouns distilled from your corrections stay readable by Wispr.

This is the distinction Privt is built on. Your notes and your vocabulary are encrypted on your Mac under a key only you hold, and what reaches us is ciphertext we cannot read. When we say encrypted at rest, we mean we could not open it if we wanted to, which is a different promise from choosing not to.

To be clear, Privt is not a cloud-free product. Your notes and vocabulary sync and back up to the cloud too. The difference is what the cloud receives: with Privt it is only ciphertext, sealed on your Mac before it ever leaves. Here is how the two approaches line up on the two things this post is about.

Wispr Flow Privt Voice
Encryption Encrypted at rest with AES-256, but not end-to-end, by their own documentation End-to-end and zero-knowledge, sealed on your Mac
Who holds the key Wispr. Customer-managed keys are not supported Only you
Does it use the cloud Yes, for every dictation: audio, transcript, and on-screen context Yes, for sync and backup, but only as ciphertext we cannot read. The dictation itself is processed on your Mac
Word learning Your corrected names are learned and synced to Wispr, regardless of Privacy Mode Learned from your own edits on your device; the dictionary is sealed and zero-knowledge synced, so we never see the words

Privt's alternative, and the honest trade

Self-correction can run without any of that. Privt Voice runs on Apple's on-device language model, the same one it already uses for your meeting summaries, so a correction like "actually 3" can be resolved on your Mac. Your audio, your transcript, and the surrounding context stay where they were spoken, and nothing is uploaded to be cleaned up.

Wispr Flow
Wispr Flow app icon
Your words travel to Wispr's servers, and the cleaned text comes back.
Privt Voice
Privt Voice app icon
The correction is handled on your Mac, and nothing leaves it.

We will not oversell it. A model running on your laptop is smaller than one running in a data center, and on the most ambiguous corrections - a rare name it has never encountered, a garbled phrase that needs heavy context - a large cloud model will sometimes land the rewrite where the local one does not. That is a real trade, and it is about capability on the hardest corrections, not privacy - on Privt nothing leaves the Mac either way. For the everyday "meet at 2, actually 3," an on-device model can handle it, without a round trip.

Where do you land

None of this is a verdict on any one app. Plenty of people will read all of the above and keep using the tool they like, and that is a perfectly reasonable choice once it is an informed one. The only thing worth resisting is the comfortable assumption that "encrypted" means "unreadable," or that a correction made out loud stays with you. Know where your words go and who can read them, and then decide.

Which side of that trade would you take? We are running a community poll on exactly this question, whether you would give up a little cloud polish on the rare hard correction to keep every word on your own machine. Weigh in, and tell us where the line sits for you.

Sources and method

Wispr documentation, read 30 August 2026 The dictionary-and-snippets sync line, the definition of Privacy Mode, the encryption-at-rest and in-transit statements, the "not end-to-end encrypted" admission, the customer-managed-keys note, and the staff production-access statement are all quoted from the Wispr Flow Security and Compliance FAQ, docs.wisprflow.ai/articles/3467817258-security-and-compliance-faq. The "transcription always occurs on the cloud" and post-paste edit-monitoring lines are quoted from Wispr Flow Data Controls, wisprflow.ai/data-controls. Both pages read on 30 August 2026; wording can change, so treat these as accurate as of that date.

Client behaviour references Wispr Flow version 1.3.473, which matches the macOS 1.6.580 build.

← All posts