← All posts

How to check if Mac dictation runs offline

To check whether a Mac dictation app runs offline, do two tests. First, turn off Wi-Fi and dictate: if text still appears, transcription happens on your Mac. Second, turn Wi-Fi back on and watch the app’s network traffic while you talk for a minute. If the bytes it sends do not grow with your speech, your audio is not leaving the machine.

The first test alone is not enough. Plenty of apps work offline and still upload when a connection is there. The second test is the one that answers the question, and it takes ten minutes with tools already on your Mac.

Why bother? If you dictate prompts into Claude Code, Cursor or Codex, your voice is describing your code: repo names, file paths, the bug you have not fixed yet. “On-device” on a product page is a claim. This is how you check it.

Test 1: turn off Wi-Fi and dictate

Unplug Ethernet if you use it, then turn off Wi-Fi from the menu bar. Open a text editor, hold your dictation hotkey, and say a full sentence.

There are three possible results:

  • Text appears, same speed as before. Speech to text runs locally.
  • An error, or nothing happens. The app transcribes in the cloud.
  • Text appears, but plainer than usual. Transcription is local, but a later step (clean up, formatting, prompt rewriting) needs the network and was skipped.

That third case matters more than it looks. Many apps transcribe locally and then send the text to a cloud language model to tidy it. Your audio stays home, but your words do not, and some apps send your clipboard or screen text along with them. See what your dictation app sends besides your voice. Try every mode you use, not only the raw one.

Test 2: watch the traffic while you talk

Turn Wi-Fi back on. Now you want to see whether the app sends data in step with your speech. You have three ways to look, from easiest to most precise.

Activity Monitor

Open Activity Monitor, pick the Network tab, and find the dictation app in the list. Note its Sent Bytes value. Dictate for a full minute: read a paragraph out loud, it does not matter what. Look at Sent Bytes again.

Speech is heavy. Uncompressed 16 kHz audio, the rate most speech models use, is about 32 KB per second, close to 2 MB per minute. Even compressed, a minute of speech is usually tens or hundreds of kilobytes. If Sent Bytes jumps by roughly that much every time you talk, the audio is going somewhere. If it barely moves, it is not.

nettop in Terminal

nettop ships with macOS and shows live traffic per process. Find the app’s process ID, then watch only that process:

pgrep -x Akova
nettop -P -p "$(pgrep -x Akova)"

Replace Akova with the app you are testing (the name as it appears in Activity Monitor). The bytes_out column is what the app sends. Leave it running, dictate, and watch whether it climbs while you speak. Press q to quit.

lsof: where is it connecting?

Traffic volume tells you if data leaves. lsof tells you where to:

lsof -i -n -P -a -p "$(pgrep -x Akova)"

Each line is an open network connection with a remote address and port. Run it while you dictate. Two things to look for:

  • Connections to 127.0.0.1 or localhost stay on your Mac. A local model server, such as Ollama on its default port 11434, shows up like this. That is local traffic, not an upload.
  • Connections to an outside address that open while you talk are worth a second look. Search the address or the host name to see who it belongs to.

What normal looks like for an on-device app

Zero connections is not the goal. Most apps phone home for a few small, honest reasons: an update check, licence activation, crash reports you agreed to. What you are checking is that nothing grows in proportion to your speech.

Here is what you should expect from Akova, on-device dictation for coding agents, so you can compare your own test against it. It transcribes with Whisper models running on your Mac. Prompt mode, which turns rambling into a structured prompt, runs locally too: on Apple Intelligence on macOS 26, or a local Ollama model on macOS 14 and 15. So the Wi-Fi test passes in every mode, including Prompt mode. The connections you may see are:

  • Update checks to dl.akova.app in the direct version.
  • Licence activation, which needs the internet once per Mac, then works offline.
  • Usage analytics and crash reports, only if you turned them on when the app asked.

None of these carry audio or the text you dictate. The full list is in our privacy policy. Cloud transcription exists only as an opt-in, with your own provider key. If you never add a key, no audio is sent.

One more setting to check in any app that uses Ollama: where it points. If you set Ollama to a model on another computer, the text for Prompt mode goes to that computer. Keep it on localhost if you want everything on one machine.

A ten minute checklist

Run this once for any dictation app before you trust it with work prompts:

  1. Turn off Wi-Fi. Dictate in every mode you use. Note which ones still work.
  2. Turn Wi-Fi on. Open Activity Monitor, Network tab, note Sent Bytes.
  3. Dictate for one minute. Check Sent Bytes again.
  4. Run lsof on the app while dictating. Note any outside addresses.
  5. Open the app’s settings. Look for API keys, cloud models or “enhanced” modes that might be on by default.
  6. Read the privacy policy for the list of what the app sends and when. Compare it with what you saw.

If what you saw matches what the policy says, you can trust the claim. If they disagree, trust what you saw.

For the bigger picture on why local transcription is worth this check, read on-device vs cloud dictation for Mac developers. If you want to put it to work right away, our guide to dictating prompts into Claude Code covers the daily setup.

Run the test on Akova

Download Akova free, turn off Wi-Fi, and dictate your next prompt in Prompt mode. Then run the Activity Monitor test with Wi-Fi on. Every Pro feature, Prompt mode included, is free for 7 days with no account. After that, Prompt mode is part of Lifetime. See pricing for what Lifetime adds.