An ethernet cable unplugged beside a laptop on a desk

Technology & privacy

Does your dictation app upload your audio? Find out in two minutes

You do not have to take a privacy policy's word for this. Recognition either happens on your machine or it does not, and the difference is visible from outside the app.

Last updated

Why the marketing page cannot answer this

"Private", "secure" and "we never sell your data" are not answers to the question. They describe what a vendor does after receiving something. The question is whether they received it.

Three phrases that sound similar and mean different things:

PhraseWhat it actually tells you
"Processed on your device"No transfer. This is the one you want, and it is testable
"Never stored in the cloud"There was a transfer. It was then deleted
"Encrypted in transit"There was definitely a transfer
"We don't train on your data"There was a transfer. It is not used for training
"Zero retention"There was a transfer
"Enterprise-grade security"Nothing. This phrase has no content

None of the last five is dishonest, and several describe genuinely good designs. They simply do not answer the question people think they are asking.

Test 1 — aeroplane mode (two minutes)

  1. Install and complete the first run with the internet on Local apps download a speech model once, typically a few hundred megabytes to a couple of gigabytes. That download is expected and is not the same thing as uploading your audio. Let it finish and dictate one sentence successfully.
  2. Turn Wi-Fi off properly Aeroplane mode, or Wi-Fi switched off in the menu bar. Not merely disconnected from one network, and unplug Ethernet if you use it.
  3. Dictate a sentence into Notes Ten seconds is plenty.
  4. Read the result Text appearing means recognition ran on your Mac. An error, a spinner, or silence means it was going somewhere — whatever the marketing page says.
  5. Now test the tidy-up as well If the app rewrites or cleans up your dictation, test that offline too. Plenty of apps recognise locally and then send the resulting text to a cloud model. That is a second transfer and it is the one people miss.

Test 2 — watch the connections

More work, and it tells you more: not just whether recognition is local but what else the app talks to.

With Little Snitch (or LuLu, which is free): put it in alert mode, dictate, and watch what the app tries to open. A local app should be quiet apart from occasional licence and update traffic.

With no extra software: macOS includes nettop. Find the app's process ID in Activity Monitor, then in Terminal run nettop -p <pid> and dictate a long passage. Bytes climbing in step with your speech is the signature of streaming audio; a flat line is not.

What you are looking for

  • Outbound bytes rising while you speak, and stopping when you stop. That is audio streaming.
  • A single request at the end of a dictation, proportional to its length. That is an upload after the fact.
  • Nothing at all during dictation, with occasional small requests at other times. That is a local app doing licence and update checks.
  • A request to a large cloud provider immediately after dictation. That is the rewriting step, sending your text.

Test 3 — look for the model on disk

A local app has to store the model somewhere, usually under ~/Library/Application Support/ in the app's own folder. A few hundred megabytes to a couple of gigabytes of model files is strong evidence of local inference. Nothing there and no first-run download is strong evidence against.

A model-size setting in the preferences is another tell: there is no reason to let you choose between small, medium and large if a server is doing the work.

Test 4 — read what the vendor actually wrote

Not the homepage. The privacy policy and any security or documentation page, looking for a sentence that names where transcription happens. Vendors who process in the cloud often say so plainly somewhere; it is the marketing page that is vague.

If you cannot find such a sentence anywhere, that absence is itself informative — and a support email asking "does transcription happen on my device or on your servers?" is a fair question with only two possible answers.

What a local app still sends

Being precise here matters, because "it never touches the network" is usually false and claiming it damages the credible part.

  • The model download, once, on first run or when changing model.
  • Licence validation, if you have bought a plan. Carries a licence key and a device identifier, not your words.
  • Update checks, periodically.
  • Product analytics, in many apps, often with an opt-out. Usage counts, not content.
  • Optional cloud rewriting, if you configured it. This one sends the text of your dictation, and it is the one to check.

Questions

Does Apple's built-in dictation upload my voice?

It depends on your language and your Mac. Apple's guidance tells you to check the line under the Dictation toggle in Keyboard settings, which states whether your voice input is processed on the device rather than sent to Siri servers. That line is authoritative for your machine in a way no article is.

Is the first-run model download a privacy problem?

No. It is a download, not an upload — the app is fetching a model file, not sending your audio. It is also exactly what you would expect a local app to do, and its absence would be suspicious.

Can an app fake passing the aeroplane-mode test?

Not meaningfully. A cloud service cannot transcribe over a connection that is switched off. It could queue the audio and send it later, which the network-traffic test would reveal — which is why the two tests together are stronger than either alone.

What about the AI rewriting feature?

That is the stage where local-first setups most often leak. Many apps recognise speech locally and then send the transcribed text to a cloud model to tidy it. Test that specifically with the network off.