How to Add Words to Mac Dictation That It Gets Wrong

macOS Dictation has no word list; Voice Control's Vocabulary is a different feature. What Apple offers, its limits, and how to fix the word in the text instead.

You say “Claude Code” and the transcript reads “clocode”. You fix it by hand, and tomorrow it is wrong again. You cannot add it to Dictation. You can add it to Voice Control, at a cost, or fix it once in the text and keep the fix. Here is each option.

Apple Dictation has no word list

Apple’s page on dictating on a Mac covers turning it on under System Settings → Keyboard and where to check whether speech is processed on the device. As of 2026-09-18 it says nothing about adding words. No field, no file, no “learn this” button.

What searchers find instead is Voice Control’s Vocabulary, and forum threads merge the two. They are separate systems. Apple’s Voice Control guide states that while Voice Control is on, “standard macOS Dictation isn’t available”. Nothing on Apple’s Dictation page says the Dictation you trigger from the keyboard reads that list.

The two workarounds Apple gives you

Use Voice Control instead of Dictation. Apple’s custom vocabulary page describes it: System Settings → Accessibility → Voice Control, add a word or phrase spelled the way you want, record yourself saying it, save. You can import a text file with one term per line and export it later. It works, at a price: Voice Control is an accessibility feature for operating the whole Mac by voice, and it replaces Dictation while on rather than extending it.

Put the name in Contacts. Apple’s Siri, Dictation & Privacy page says that when you use Siri and Dictation, your device may send contact data such as “Contact names, nicknames, and relationships” to help it understand you better and recognize what you say. So adding a colleague as a contact may help. Apple does not promise that, and even where it helps it covers people’s names, not kubectl, Supabase, or your project codename.

In short: you cannot add a word to Mac Dictation, only to a different feature.

Why Dictation gets technical terms and names wrong

A speech recognizer turns sound into the most probable word sequence, and probability is where rare words lose. “Claude” and “clock” are one sound apart; “clock” is common, so “clock” wins.

Mixed-language speech makes it worse: a Chinese recognizer that hits an English term mid-sentence has to decide which language the sounds belong to before it picks a word. Our own transcripts show what comes out: “header” became “Ahader”, “toggle” became “talgo”, “Node.js” became “no js”, “Vercel” became “versal”. None of that is noise; each is the nearest common sound, written down.

That is the opening for a fix: a sound-alike substitution can be repaired after the fact, provided something knows which word you meant.

What a text cleanup pass can fix

ListenIn does not change Apple’s recognizer. Recognition runs on the device; the repair you can count on is the text pass ListenIn runs afterwards. Your personal dictionary is an input to it. The cleanup model receives the recognized text plus your known terms, and one instruction: correct a transcript word to a term only when it is an obvious mishearing of it (similar sound, fitting context). Audio never leaves the Mac; what each cleanup strength sends, and where, is on the security page.

The rule, with the examples it ships with:

  • Sound is the gate. With Vercel in the list, “Next.js 加 Halloween 部署” keeps Halloween. Deployment context alone never earns a swap; the sounds have to match. That example is real: Tailwind was heard as Halloween there, and swapping to Vercel would have looked right and been wrong.
  • A clean-looking wrong word still loses to a name it sounds like. “First 那边 preview 环境自动就 deploy 了” with Vercel in the list is Vercel: f and v are one accent slip apart, and that slot needs a platform name. “你帮我 think 一下进度” with sync in the list is sync, likewise.
  • A non-word one slip from a term you say is that term. From a real transcript: “股票跟 purps 都是展示多种数据的聚合” with perps in the dictionary came back as perps.
  • Nothing is invented. If the recognizer dropped a word, the sentence stays short. It corrects a mangled token that is present, never supplies one that is missing — the same rule that keeps filler removal from turning into rewriting.

To add a term, choose Dictionary from the menu bar, or Settings → Cleanup → Manage Personal Dictionary…. Both open the same list, stored locally: type a word into New word and press Return, one at a time. The window describes what belongs there — “names, jargon, and product names you say a lot”. Keep it to words you actually say — the list is repair candidates, not a spellchecker.

A built-in technical lexicon (Claude, Cursor, Figma, GitHub, SwiftUI, OAuth and the like) sits alongside your terms, so common developer vocabulary is covered before you add anything. The bilingual dictation page lists more of the terms the built-in lexicon covers.

Fix it once and it sticks

A word list maintained by hand does not last. The loop that holds up is correction learning: fix the word in the text you were already editing, and ListenIn learns from the edit.

Mechanically: after a paste, ListenIn remembers the field. For about three minutes it re-reads it through macOS Accessibility every 2.5 seconds, once more before your next dictation, and diffs the pasted text against what is there now. Terminal and Electron apps (Claude Code, Cursor, VS Code) often expose the field late; if the first read fails it retries after 1.5 seconds. Word pairs whose two sides sound alike are kept: gethub → GitHub, purps → perps, 大件 → 搭建. A clause you rephrased is not a mishearing, and a sound-similarity test drops it.

Each kept pair does two things. The right side goes into your dictionary, with a short on-screen confirmation, Added to dictionary. The pair itself is stored locally as a correction: what the recognizer wrote, what you meant. From then on:

  • If the wrong side is a Latin string that is not a real word (“gethub”), it is replaced before cleanup even runs. Deterministic, no model in the loop.
  • If the wrong side is a real word (“think” for “sync”), the Latin-script pair (at most three words a side) travels with cleanup requests once you have corrected it twice, and outranks the plain dictionary when both apply. One stray edit should not become a rule.

If the same wrong word is still elsewhere in the text, ListenIn offers to finish the job: Replace All fixes the remaining occurrences in place. Where a field cannot be written back through Accessibility — many Electron and browser inputs — the button is Copy fixed text, and you paste the result yourself.

The limits: learning needs a field ListenIn can read back, and some apps do not expose one. Pairs are word-sized, twenty characters a side at most. Change about 30 percent or more of the pasted text and nothing is learned, on purpose.

Take the dictionary with you

The dictionary and the corrections are local files, the one thing that does not follow you to a new Mac on its own. In the dictionary window, under Backup, Export… writes both to one JSON file and Import… reads one in. Import merges: it never erases what is already there, and it keeps each correction’s count, so a word fixed twelve times on your work Mac still outranks one fixed once. Clearing history clears the corrections too.

For Chinese terms, one more setting matters: Settings → Cleanup → Chinese script, with Auto (follow speech), Always Simplified, or Always Traditional. If you dictate in Traditional, lock it, and cleanup will not turn 數據 into 数据 mid-sentence. Latin tokens are untouched, so Claude Code stays put. Details in Traditional Chinese dictation and the script lock.

What this does not do

The recognizer is not being taught: Apple’s engine will keep writing “clocode” in the raw transcript, and if you open Dictation History and choose Show raw transcript, it will look the same next month as it does today. The fix you can rely on is the text pass.

No cleanup, no repair. When the weekly free quota is used up (see plans) or the cleanup service cannot be reached, the raw transcript still lands, labeled as raw, and your dictionary does nothing to it.

Words with no sound relationship to what the recognizer wrote are out of reach: if the engine dropped your term or heard something unlike it, there is nothing to match. The gate that prevents false swaps prevents those repairs too.

The dictionary is not a style guide: it corrects mishearings to your spelling, and does not expand abbreviations, rewrite prose, or answer the question you dictated. To change the recognizer itself, Voice Control’s Vocabulary is the one place on a Mac for that, trade-offs and all.

For a developer dictating into a terminal or Claude Code: dictate as usual on the system-wide trigger, fix the word once when it’s wrong, and let the correction carry forward.

Try it on your own Mac

Free tier, no account. Audio never leaves your Mac.

Download for Mac

← All posts