I cannot type, so I built a free, open-source dictation app for the Mac

Every dictation app on the Mac that was good enough to replace a keyboard wanted a subscription, a $249 licence, or my voice on someone else's server. I dictate everything I write, because my hands make typing difficult, so this was not a preference. It was the cost of using a computer. I built YapToText instead: free forever, open source under the GPL, and running entirely on the machine. It is on the Mac App Store, so installing it is one click and no terminal.

Why I built it

I do not dictate because it is convenient. I dictate because typing is difficult for me, and dictation is how I write emails, messages, documentation, and the code comments in this app. When speech is your keyboard, a dictation app is not a productivity toy. It is the input device.

That reframes what the pricing means. A subscription for a text editor is a business decision. A subscription for the ability to write at all is a toll. And sending every word you produce to a server is not a checkbox on a privacy page; it is your correspondence, your work, and your medical appointments passing through a company you have to trust forever.

I could not find a Mac app that was all three: good enough to replace typing, fully on device, and free. So I wrote one and gave it away.

What the alternatives actually cost

Checked September 2026. Prices change, so check before you switch, and read the full comparison for the sourced detail.

  • Apple Dictation is free and on device, but it will not clean up what you said, will not format an email, and cannot edit text you have already written.
  • Wispr Flow is a subscription and sends audio to the cloud.
  • superwhisper has a free tier and paid tiers, including a lifetime licence in the hundreds of dollars.
  • MacWhisper is a one-time purchase and runs locally, and is genuinely good software.

These are not bad apps. Several are better than mine at things I have not built yet. The point is narrower: the underlying speech model is open source, Apple gives every developer the hardware acceleration for free, and none of that cost should land on someone who cannot use a keyboard.

What it does

Press one key, talk, press it again, and the words appear where your cursor is, in any app. That is the whole interaction. Underneath it are the parts that took the actual work.

  • It reads the sentence you are dictating into. Put your cursor in the middle of a line and speak, and the first word lowercases when it should, the spacing joins cleanly, and a trailing period is dropped when the sentence continues. This is the feature I miss most in every other app.
  • It knows an email from a note. Auto mode reads what you said and picks the format on its own. An email comes out as an email, a quick message stays casual, everything else is just cleaned up.
  • You can edit text by voice. Select any text in any app, press the Quick Edit key, and say the change: make this shorter, fix the grammar, translate it to Spanish. The rewrite replaces your selection in place.
  • Spoken punctuation works the way dictation users expect. Say "is it working now, question mark" and you get the mark, with no stray comma left behind.
  • Dictionaries and voice commands. Teach it the spelling of a name it keeps missing, or make "insert phone number" type your real number.
The expanded YapToText panel: a live blue waveform above the transcribed sentence, with cancel, pause, stop and the mode switcher beneath it.
One key starts it. The words land where your cursor is.
The Quick Edit card with a live waveform, reading Listening for your edit, with the spoken instruction make it sound more formal underneath.
Select text in any app and say the change.

Inside the audio path

Most of the engineering went here, because I dictate quietly, often in a room with a 3D printer running. Feeding raw microphone audio to Whisper and hoping is where most wrappers stop, and it is why they fall apart in a real room.

Before the speech model sees a sample: the room's noise floor is measured and stationary noise subtracted only when the signal-to-noise ratio calls for it, so a quiet room is never over-processed. A quiet voice is lifted relative to the room rather than to a fixed level. Capture is peak-guarded so one loud word cannot clip. Long silences are compressed so the decoder does not drift. Decoding switches from greedy to beam search when the clip measures noisy.

After: a rescue pass runs when the transcript comes back shorter than the speech that went in, and a guard collapses the repetition loops Whisper falls into on silent tails. All of it is measured against a harness of my own real dictations before any of it ships, because a change that helps a clean recording often hurts a whispered one.

How it differs from other open-source Whisper wrappers

Wiring Whisper to a hotkey is a weekend project, and several people have done it well. open-wispr is a good example: hold a key, speak, release, and the text appears at your cursor, all locally, MIT licensed. If that is all you need, it is a fine choice and you should use it.

The difference is what happens after the transcript exists. A wrapper hands you Whisper's raw output. Most of YapToText is the work between that output and the text you actually wanted:

  • Context. It reads what is on either side of your cursor and adapts the transcript to fit, so mid-sentence dictation comes out with the right case, spacing, and final punctuation.
  • Cleanup. A local language model turns spoken filler into finished text, and picks the format from what you said. No wrapper does this without a cloud call.
  • Editing. Select existing text anywhere and change it by voice, which is a different job from transcription entirely.
  • The audio path. Noise subtraction gated on the signal-to-noise ratio, room-relative gain, peak-guarded capture, and a decoder that switches strategy when the clip is noisy. This is what makes a quiet voice in a loud room work.
  • Install. The App Store rather than a shell script, so it is sandboxed, notarised, and updated by the system.

None of that makes the simpler tools wrong. It makes them a different size of thing. I needed the larger one because dictation is not a shortcut for me, it is the only way I write.

Why it installs from the App Store, not a shell script

Plenty of open-source Mac tools install by piping a script from the internet into your shell. It is convenient for the developer, and it asks the user to run unreviewed code with their own privileges, from a URL they cannot audit at the moment they run it.

YapToText is on the Mac App Store. That means it is sandboxed, notarised, reviewed, updated through the system, and removable like any other app. One click, no terminal, and nothing to trust beyond what Apple already checks. Being free and open source does not have to mean an install method that would fail a security review at work.

If you prefer the command line, there is a Homebrew cask, and it is signed and notarised too. The source is public either way, so you can read every line before you run it.

What on-device actually means here

The speech model and the cleanup model are both inside the app. There is no account, no telemetry, no analytics, and no network request in the dictation path at all. It works on a plane, on the first launch, with the wifi off.

Voice is unusually personal data. It is not a search query; it is you, speaking, with the content and the context attached. The honest version of a privacy claim is not a promise about what a company does with your recording. It is that the recording never leaves, and the code that proves it is public.

The YapToText menu bar popover showing Start Dictation, mode and microphone pickers, transcribe file, regenerate, insert last, and recent dictations.
The whole app from the menu bar, with no window in the way.

What I learned building it

The model was the easy part. Whisper is excellent out of the box. Everything that makes dictation feel finished lives around it: knowing where the cursor is, what is on either side of it, which app you are in, and what you meant by "period".

Inserting text is harder than transcribing it. Reading the text around your cursor without stealing focus, in apps that all behave differently, took more work than the entire transcription pipeline.

Accessibility is design, not a checklist. An app for people who cannot type has to be operable without typing, and it should not look clinical. It has a real waveform of your voice, three panel sizes, and the system's own materials, because tools people depend on deserve to be nice to look at.

Try it

It is free on the Mac App Store, with no account and nothing to unlock. There is a tip jar in the app if you want to support it, and it changes nothing about what you get.

If you try it and something is wrong, I would rather hear that than anything else. That is how it got this far.

Questions

What is the best free dictation app for Mac?

For dictation that types into any app, YapToText is free with no subscription, no account, and no cloud, and the source is public. Apple Dictation is also free and on device, but it does not clean up what you said, format it, or let you edit existing text by voice.

Is there an open-source alternative to Wispr Flow and superwhisper?

Yes. YapToText is GPL-licensed and free, runs Whisper plus a local cleanup model entirely on your Mac, and installs from the Mac App Store or Homebrew. Nothing is uploaded and there is no account.

Does YapToText work offline?

Yes, from the first launch. The speech model and the cleanup model ship inside the app, so dictation makes no network request at all.

How is this different from other open-source Whisper wrappers?

Three things. It adapts what you say to the sentence around your cursor, so mid-sentence dictation comes out with the right case, spacing, and punctuation. It picks the format for you, so an email comes out as an email. And it lets you select text anywhere and change it by voice. It also installs from the App Store rather than a shell script.

Is it really free? What is the catch?

There is no catch and no paid tier. It is free forever, the source is public, and the only money in the app is an optional tip jar that unlocks nothing.

Why did you make it free?

Because I need it. My hands make typing difficult, so dictation is how I use a computer, and charging disabled people for the ability to write felt wrong when the speech model is open source and the hardware acceleration is free.