Typing code all day wrecks your hands. I switched to voice coding after a bad RSI flare-up, and honestly, I should have done it years earlier.
The problem is that regular dictation tools are useless for code. Say "getUserName" and you get "Get user name" with spaces. Say "open paren" and you get the literal words. Whisperer's Code Mode fixes this.
Ready to try voice dictation on your Mac?
Free download. No account required. 100% offline.
Download on the Mac App StoreWhy bother?#
Look, typing 5,000+ keystrokes a day for years catches up with you. Some developers get RSI. Others just want to think out loud while coding. Either way, voice input is faster than most people expect once you get the hang of it.
Standard dictation tools fight you constantly. Random capitalization, unwanted spaces, no clue what a semicolon is. You need something that actually understands code syntax.
Setup#
Download Whisperer
Get it free from the Mac App Store. The Pro Pack ($14.99 one-time) unlocks Code Mode.
Open from the menu bar
Whisperer lives in your menu bar for instant access.
Configure your profile
Go to Settings → Profiles and enable Code Mode for your IDE (VS Code, Cursor, Terminal, etc.).
Start speaking
Hold Fn (or your custom shortcut) and start dictating code.
Code Mode automatically activates when your IDE is in focus if you've set up a per-app profile — no manual switching needed.
Casing is the hard part#
Getting camelCase right is what trips up every other dictation tool. Whisperer uses explicit commands that you say before the words:
“"camel case get user name"”
getUserName“"snake case get user name"”
get_user_name“"constant case max retries"”
MAX_RETRIES“"pascal case user service"”
UserServiceYou don't need to pause or say a trigger word. Just speak naturally and the casing applies to everything that follows.
Symbols without the awkwardness#
Saying "parenthesis" to a normal dictation tool gets you the word "parenthesis." Code Mode maps voice commands to actual symbols:
| Voice Command | Output |
|---|---|
| "open paren" / "close paren" | ( / ) |
| "open bracket" / "close bracket" | [ / ] |
| "open brace" / "close brace" | { / } |
| "semicolon" | ; |
| "colon" | : |
| "arrow" | -> |
| "fat arrow" | => |
| "equals" | = |
| "double equals" | == |
| "triple equals" | === |
A real example#
Here's a Python function signature in one breath:
“"def snake case validate input open paren data colon dict close paren arrow bool colon"”
def validate_input(data: dict) -> bool:Takes some practice, but it becomes muscle memory fast.
Tips that actually help#
Use Per-App Profiles
Set Code Mode only for your IDE. Keep natural language mode for Slack and email.
Speak Naturally
Whisperer's streaming preview shows text as you speak, so you can verify in real-time.
Use Literal Mode
For identifiers that shouldn't be autocorrected, enable literal mode.
Train Your Dictionary
Add project-specific terms and variable names to your personal dictionary.
What editors work#
VS Code
Full support — text inserts directly into the active editor.
Cursor
Speak AI prompts and code naturally with Code Mode.
JetBrains IDEs
IntelliJ, WebStorm, PyCharm — all fully supported.
Terminal / iTerm2
Dictate commands, scripts, and git operations.
Full code blocks#
Once casing and symbols click, you can dictate entire statements:
“"const camel case fetch user data equals async open paren close paren fat arrow open brace"”
const fetchUserData = async () => {“"if camel case is valid open paren camel case user input close paren open brace return true semicolon close brace"”
if isValid(userInput) { return true; }“"git checkout dash b feature slash snake case add user auth"”
git checkout -b feature/add_user_authNotes for specific editors#
VS Code
Code Mode works directly in the editor. Use per-app profiles to auto-activate Code Mode when VS Code is focused. Dictate into the editor, terminal panel, or search bar.
Cursor
Use natural language mode for AI chat prompts and Code Mode for inline code editing. Per-app profiles can handle this automatically if you set up separate profiles for Cursor's chat vs editor views.
Terminal / iTerm2
Code Mode handles dashes, dots, slashes, and paths correctly — essential for CLI commands. Say "dash dash verbose" to get --verbose.
JetBrains IDEs
IntelliJ, WebStorm, PyCharm, and other JetBrains IDEs are fully supported. Whisperer inserts via Accessibility into the active editor panel.
When things go wrong#
Casing not working#
Say the casing command before the words. "Camel case get user name" works. "Get user name camel case" doesn't.
Symbols coming out as words#
Check that Code Mode is actually on for your current app. Settings, Profiles, make sure it's enabled. Still broken? Add custom mappings in personal dictionary.
Autocorrect mangling your code#
Turn on Literal Mode. It stops the engine from "helpfully" correcting technical terms into nonsense.
Custom terms not recognized#
Add them to your personal dictionary. With NVIDIA engine, dictionary terms get CTC vocabulary boosting, which biases recognition at the acoustic level. Sounds technical but it just means better accuracy for your specific words.
Why not just use Apple Dictation?#
Apple Dictation is for prose. Dictate "getUserName" and you get "Get user name" with spaces and caps. It's not a bug on Apple's side, it's just not what it's for. Full comparison here.
| Feature | Whisperer Code Mode | Apple Dictation |
|---|---|---|
| camelCase by voice | Yes | No |
| snake_case by voice | Yes | No |
| Symbol commands (20+) | Yes | Limited |
| Per-app mode switching | Yes | No |
| Personal dictionary | Yes | No |
| Literal mode | Yes | No |
| Autocorrection control | Full | None |
| Price | $14.99 lifetime | Free |
How to actually learn this#
Most people get comfortable in a day or two. Here's how I'd approach it:
Start with comments
Dictate comments, docstrings, README content. It's just prose, no Code Mode needed. You'll notice the speed improvement immediately.
Add Slack and email
Dictate messages. Set up per-app profiles so it switches modes automatically.
Learn the four casing commands
camel case, snake case, pascal case, constant case. Practice with variable names you use all the time.
Add symbols
Open paren, close paren, semicolon, colon, fat arrow, arrow. That covers 90% of what you need.
Go full code
Combine casing and symbols into complete statements. Function signatures, variable declarations, the works.
More: Voice Coding Guide, camelCase and snake_case, Vibe Coding, RSI Prevention. See Code Mode, pricing, features.
Ready to try voice dictation on your Mac?
Free download. No account required. 100% offline.
Download on the Mac App StoreJust start. It feels weird for about an hour, then it clicks.