Vocula

How to check whether a dictation app is really offline

Every dictation app on the Mac says your voice stays private. It costs nothing to say. Here is how to find out for yourself — in about ten minutes, with tools already on your Mac, for any app, ours included.

Why the claim needs checking at all

Not because vendors lie, mostly. Because the claim goes stale, and because “private” and “local” are used to mean four different things.

Three examples, all measured on 21 August 2026, all still visible on the vendors’ own pages as of that date:

None of that is discoverable by reading a landing page. All of it is discoverable in ten minutes.

1. Read the terms, and check the dates

Open the privacy policy and the terms of service side by side and look at the date on each. Then search both for process, server, third party, sub-processor and retention. Marketing pages get rewritten for launches; terms of service get rewritten by lawyers when the architecture changes. When the two disagree, the terms are the accurate one.

2. Watch what the app connects to, live

nettop ships with macOS. Start the app, then run:

nettop -p Vocula

Replace Vocula with the app’s process name. Now dictate something. A local app shows no new connections at all while it transcribes — the row count does not change and no bytes move. A cloud app opens a connection the moment you stop speaking, and you can watch the byte counter climb by roughly the size of your audio.

3. Take a snapshot of its open sockets

lsof -i -a -p $(pgrep -x Vocula)

This prints every internet socket that one process currently holds. On a genuinely local app, immediately after a dictation, it prints nothing.

One honest caveat about both commands. They show you what is happening while you look. An app that phones home once a week, or only on launch, or only when it thinks it is idle, can pass a ten-minute inspection. That is what step 4 is for.

4. Record everything, including what happens when you are not watching

An outbound firewall logs every attempted connection and lets you deny it. Little Snitch is the well-known paid one; LuLu from Objective-See is free and open source and is enough for this. Install one, leave it running for a week of normal use, and then read the log for the app in question.

This is the check that finds analytics. Transcription traffic is obvious — it is large and it happens exactly when you stop speaking. Telemetry is small, irregular, and goes to a domain you have to look up.

5. Pull the plug

The simplest test, and the one that needs no tools: turn off Wi-Fi, unplug the Ethernet, and dictate.

A local app behaves identically. A cloud app stops working, silently degrades to a worse on-device model, or queues your audio to send later — and the third case is worth knowing about, because the app appears to work offline while accumulating recordings it intends to upload.

What this method does not prove

It is worth being precise, because a check that claims too much is no better than the claim it was meant to test.

What happens when you run this on Vocula

Nothing moves. Vocula makes no network connection at all after the one-time model download — no account, no licence check, no analytics, no update ping unless you press the button that asks for one. Transcription happens on your Mac, in a process you can watch, using models sitting in your own Application Support folder.

We would rather you did not take that on trust either. The source is published, so the strongest version of this check is not nettop — it is reading the code and finding that there is no networking in it to audit.

What Vocula is