March 28, 2026Updated November 7, 20268 min read

How to Dictate Code on Mac: What Actually Works in 2026

You can dictate code on a Mac, but not the way most people first try. Speaking raw syntax ("const, open paren, close paren, fat arrow, open brace") is slow, tiring and easy to get wrong. What works in 2026 is speaking intent: you describe the change in plain sentences to an AI coding agent such as Cursor, Claude Code, Codex or Windsurf, and it writes the syntax. Voice handles the part that's prose, and the agent handles the part that's punctuation.

This guide covers that workflow with Whisperer, plus the one setting that matters most for code: a personal dictionary so names like Kubernetes, useEffect and PostgreSQL come out spelled right.

Info

To be clear up front: Whisperer does not have spoken symbol or casing commands. Saying "open paren" gives you the words "open paren", not (. Earlier versions had a Code Mode for this; it was removed in Whisperer 2.0.

Why dictating raw syntax doesn't work well#

Code is dense with characters that have no natural spoken form. A short TypeScript line like this:

const user = await db.users.findFirst({ where: { id } });

is eleven words of English if you read it naturally, but about two dozen spoken tokens if you have to name every brace, dot and semicolon. You also have to plan the punctuation in your head before you say it, which is the opposite of the "think out loud" benefit of voice.

The other problems:

  • Every mistake is expensive. A misheard "dot" breaks the line, and fixing it means finding the spot with the keyboard anyway.
  • It doesn't scale past one line. Indentation, multi-line blocks and nested brackets are hard to hold in your head while speaking.
  • It's tiring to talk that way. Speaking in a command grammar is a separate skill that takes real practice before it feels faster than typing.

Dedicated command-grammar tools exist for people who need to code with no keyboard at all, and they're worth looking at if that's you. For most developers who want to type less, the better trade is to stop dictating syntax entirely.

The workflow that works: speak intent to an agent#

Most code changes start as a sentence in your head: "make the retry logic back off exponentially and give up after five attempts". That sentence is exactly what an AI coding agent wants as input. Speaking it takes a few seconds.

You say

“in the payments service make the retry logic back off exponentially starting at 200 milliseconds give up after five attempts and log each retry with the order ID”

OutputPrompt
In the payments service, make the retry logic back off exponentially, starting at 200 milliseconds. Give up after five attempts and log each retry with the order ID.

The flow in Whisperer:

  1. Click into the prompt box of your agent: Cursor's chat or agent panel, Claude Code or Codex in the terminal, Windsurf, Copilot Chat in VS Code.
  2. Hold Fn (or your own shortcut) and speak. The live preview shows the words as you go.
  3. Release. Whisperer copies the text and shows a Copied ⌘V toast.
  4. Press ⌘V, read it once, and send.

The agent writes the code with correct casing, symbols and indentation. You review the diff with the keyboard, which is what the keyboard is good at.

Why spoken prompts tend to be better prompts#

When people type prompts, they abbreviate: "add retry". When they speak, they explain: which service, what the limit is, what should happen on failure. Agents do better with that context. Voice makes the longer, clearer prompt cost about the same effort as the short one.

Get identifiers right with the personal dictionary#

The real weak spot for developers isn't syntax, it's vocabulary. Speech models are trained mostly on everyday speech, so library names, internal service names and acronyms come out wrong. The personal dictionary fixes that.

Whisperer
Workspace
RECORDINGS
487
WORDS
9.4K
AVG WPM
131
DAYS
14
Whisperer v2.0

Dictionary

4867 corrections from 12 packs

Active
Corrections
Prompt Words
All Dictionaries12 packs
Search 4,867 entries...+ Add
1 on 1one-on-one
1 pagerone-pager
1 password1Password
2 pagertwo-pager
3 jsThree.js
360 re view360 review
5 whysfive whys

Each entry is what the app hears and what it should write:

You sayAdd as correct form
"post gress", "postgres Q L"PostgreSQL
"cube control"kubectl
"use effect"useEffect
"next JS"Next.js
"Supa base"Supabase
your internal service nameshowever your team spells them
You say

“the use effect hook is refetching every render because the dependency array includes the Supa base client”

OutputWith dictionary entries
The useEffect hook is refetching every render because the dependency array includes the Supabase client.

A few things to know:

  • Close variations. Leave "Also fix close variations" on and similar mishearings get caught by one entry.
  • It learns. When you correct a word, Whisperer can add it to the dictionary marked Learned.
  • Prompt words. A second tab holds a short list of terms the speech model is told to expect before you start. Use it for the handful of names you say constantly.

This is a spelling fix for specific words you choose, not a casing engine. "Use effect" becomes useEffect because you added that entry, not because Whisperer understands camelCase. More in the dictionary setup guide.

What to dictate, and what to type#

TaskVoice or keyboard
Prompts to Cursor, Claude Code, Codex, WindsurfVoice
Commit messages and PR descriptionsVoice
Code review commentsVoice
Docstrings, README sections, commentsVoice
Slack replies while you're mid-taskVoice
Short edits, renames, navigationKeyboard
Writing syntax directlyKeyboard, or ask the agent

For comments and docstrings, dictate the sentence, then paste it after the // or inside the docstring you've already opened.

Optional: the Coding AI mode#

With Pro, Whisperer can pass your dictation through an AI before you paste it. The built-in Coding mode rewrites spoken text into concise technical prose, keeping technical terms and function names as you said them. It's useful for turning a rambling explanation into a clean docstring or PR description. It doesn't produce code syntax from spoken commands. The AI can be the built-in model that runs offline on your Mac, or your own Claude, ChatGPT or Gemini plan. See AI writing.

Works in every editor#

Because Whisperer delivers text through the clipboard, it works anywhere you can paste:

Cursor and Windsurf

Speak into the agent or chat panel, paste with ⌘V, send. See voice coding with Cursor.

VS Code and JetBrains

Copilot Chat, commit message box, comments, Markdown files. See dictation for VS Code.

Terminal agents

Claude Code and Codex in Terminal, iTerm2 or Warp. See dictation for the terminal.

Xcode

Prompts, comments and docs work the same way.

Why not Apple Dictation?#

Apple's built-in dictation is fine for prose and costs nothing. For developer work it lacks a personal dictionary you control, learned corrections and a choice of speech engines, and it doesn't have spoken code commands either. See the Apple Dictation comparison and is Apple Dictation good enough for developers.

How to start#

1

Day one: prompts and messages

Use voice only for agent prompts and Slack. No learning curve.

2

Add ten dictionary entries

The libraries, services and names that come out wrong. That covers most of the friction.

3

Add commit messages and PR descriptions

They're prose. Speak them.

4

Keep the keyboard for syntax

Edits, navigation and small fixes stay on the keyboard. That split is the point.

FAQ#

Can Whisperer turn "open paren" into ( or "camel case" into camelCase?#

No. Whisperer does not have spoken symbol or casing commands. It writes what you say as text. For code, the practical approach is to describe the change to an AI coding agent and let it write the syntax, and to add identifiers you say often to the personal dictionary.

What is the fastest way to write code by voice?#

Speak intent, not syntax. Tell Cursor, Claude Code, Codex or Windsurf what you want in full sentences, paste the prompt, and review what the agent writes. Use the keyboard for small edits and navigation.

Does Whisperer type into my editor automatically?#

No. Whisperer copies the transcribed text and shows a Copied ⌘V toast. You paste it with ⌘V wherever your cursor is, which works in any editor, terminal or chat box.

More: Voice coding guide, Voice to text for developers, camelCase and snake_case by voice, Vibe coding with voice. Whisperer is $2.99 on the Mac App Store; see pricing.

Meeting notes and dictation that run on your Mac

$2.99 app, Pro $14.99, paid once. No account, no subscription.

Get Whisperer

Related articles