Features

Dictation that cleans up after you

SayWrite is a dictation app for Mac that runs entirely on your Mac. Here is everything it does, starting with the basics. For setup, see the install guide.

Dictate into any app with the Fn key

SayWrite types what you say into whatever app you're using: email, Slack, Notes, your code editor, a browser form. Hold the Fn (Globe) key while you talk and let go when you're done, or tap Fn once to start and again to stop. SayWrite never presses Return, so nothing is sent before you've read it.

  • Three modes: Auto (tap or hold), Toggle and Hold. Control-Option-D works as an alternative shortcut.
  • A small floating pill shows you're live, with a level meter; Esc cancels and nothing is typed.
  • If an app won't accept typed text, SayWrite pastes it and restores your clipboard, or copies it for you.

On-device speech recognition

SayWrite turns speech into text on your Mac with NVIDIA's Parakeet TDT 0.6B v2 model, running through Core ML on the Apple Neural Engine. Nothing is sent to a server. After a one-time model download of about 465 MB, dictation works with no internet connection at all.

  • Measured on an M5 Pro: about 0.2 seconds from the end of a short dictation to text.
  • The model uses about 0.5 GB of memory while loaded and unloads itself after 10 idle minutes (unless you keep it loaded).
  • English only for now.

AI Polish with Fn + Space

AI Polish rewrites what you just said into what you'd have written with time: the point first, rambling cut, paragraphs or a short list where it helps, and every fact and your casual voice kept. Tap Space while holding Fn to turn it on for that dictation. It runs on your Mac with Apple Intelligence's on-device model or your own Ollama or LM Studio server on 127.0.0.1.

  • Match tone to the app: short replies in chat apps, full sentences in email, exact names in code editors.
  • Optional "How I write" note (like "short sentences, British spelling") stays on your Mac.
  • If the AI engine fails, your words are typed as you said them, never lost.
  • AI features are off until you turn them on.

Rewrite · do what I say

In "Rewrite · do what I say" mode, your words are an instruction instead of text to type. Say "write a short email asking the team to confirm by Friday" and SayWrite writes that email where your cursor is, in your voice, without inventing names, dates or details you didn't give.

  • Select text and say "make this more concise" to rewrite the selection in place.
  • End a dictation with "rewrite that to make sense" to fix up what you just said.
  • If the rewrite fails, nothing is typed, because the words were an instruction.

Spoken commands

Say "new line" or "new paragraph" to break lines as you dictate, and say "scratch that" on its own to undo your last dictation. You don't have to reach for the keyboard to format as you talk.

Snippets

Snippets expand a short spoken trigger into saved text, typed exactly as you wrote it. Say "my address" on its own to insert your address, or say "snippet my address" in the middle of a sentence.

Personal dictionary with suggestions

Add names, product terms and jargon to your personal dictionary so SayWrite spells them your way, every time. SayWrite also suggests entries: when you correct a name after dictating, or when an unusual word keeps showing up in your dictations, it offers to add it. It never adds a word without asking.

Filler-word removal

Turn on filler-word removal and SayWrite drops um, uh, er, ah and hmm from your text before it's typed. It counts filler words too, including "like" and "you know", so your Stats page can show how often you use them.

Per-app auto-polish and style

SayWrite can behave differently in each app. Set Slack or Mail to always polish, Messages to a light clean-up, and everything else to type exactly what you said. Per-app style also controls the final period, first-letter capital and line breaks, with sensible defaults for chat apps and code editors.

  • Tap Space during a dictation to skip auto-polish just that once.
  • Auto-polish only runs when local AI is turned on.

Edit Last Dictation, replace in place

Edit Last Dictation opens your most recent dictation in a small editor, with one-click local AI actions (Polish, Grammar, Concise, Bullets, Email, Friendlier) and your own instructions. When you're happy, Replace swaps the edited text in for the original, right where it was typed, but only if SayWrite can confirm the original is still exactly there. Otherwise the text goes to your clipboard.

History, saved on your Mac

History keeps your past dictations on your Mac so you can search them, see which app each went to, and paste one again. You choose how long it's kept (7, 30, 90 or 365 days, or forever). Text typed into password managers is never saved, and audio is never stored.

Stats: speaking vs typing speed

The Stats page compares how fast you speak with how fast you type, measured on your own Mac, and shows streaks, a daily heatmap, personal bests, a weekly recap and your filler-word habits. Typing speed is worked out from keystroke timing only; SayWrite doesn't record what you type.

Transcribe audio and video files

Drop an audio or video file (MP3, M4A, WAV, AIFF, CAF, MP4, MOV and more) into the Files section and SayWrite transcribes it on your Mac, split into timestamped segments. Click a segment to copy it, or export the whole transcript as plain text, Markdown or .srt subtitles.

  • Measured on an M5 Pro: a 26-second clip transcribes in well under a second once the model is loaded.
  • The audio is decoded to a temporary file and deleted when the job ends; only the text is saved.

Automatic updates

SayWrite checks for a new version once a day and installs it when you say so. The check contacts GitHub only, and no system profile or personal information is sent. You can turn automatic checks off in Settings.

Say it messy. We'll write it neat.

Hold Fn, talk, and let SayWrite type it. Everything stays on your Mac.

Free during early access · macOS 15+ · Apple silicon