MacWhisper Command-Line Tool
To celebrate the launch of the MacWhisper CLI you can upgrade to MacWhisper Pro with a 10% discount using this link.
Using the MacWhisper Command-Line Tool
MacWhisper (13.20) ships with an optional command-line tool called mw that lets you drive the app from Terminal — list and switch models, transcribe files, pipe results into other programs, and automate transcription from scripts.
The CLI talks to the running MacWhisper app over a local socket, so it uses the exact same engines, models, and settings you've configured in the UI. If MacWhisper isn't running when you invoke mw , the CLI will launch it for you automatically.
1. Installing the CLI
- Open MacWhisper → Settings → Advanced.
- Under Command-Line Tool, click Install.
- MacWhisper will place the
mwbinary at/usr/local/bin/mw. macOS may ask for your password the first time — this is required to write into/usr/local/bin. - When the install is complete, the pane shows a green checkmark: "installed at /usr/local/bin/mw".
To remove it later, return to the same pane and click Uninstall.
Verify the install
Open a new Terminal window and run:
$ mw version MacWhisper 13.19.2 (1409)
If you see a version number, you're ready to go. If your shell can't find mw , make sure /usr/local/bin is on your PATH (it is by default on macOS).
2. Commands at a glance
| Command | What it does |
|---|---|
mw version |
Prints the MacWhisper version. Handy as a connectivity check. |
mw models list |
Lists your installed transcription models. |
mw models select <id> |
Changes the active model used by MacWhisper. |
mw transcribe <file> |
Transcribes an audio or video file and prints the text. |
mw on its own prints a help summary. Add --help to any subcommand for detailed options (mw transcribe --help ).
3. Working with models
List installed models
$ mw models list ID NAME SIZE whisper-cpp:ggml-tiny.en Tiny (English Only) 80 MB whisperkit:openai_whisper-small Small 483 MB ▸ parakeet-pro:nvidia_parakeet-v2_476MB Parakeet v2 (476MB) 476 MB apple:en-GB English (United Kingdom) -
- The
▸marker shows the currently selected model. - The ID column (e.g.
whisperkit:openai_whisper-small) is what you pass to--modelormw models select. apple:<locale>entries are Apple's on-device speech models provided by macOS 26+. Their size shows-because the OS manages storage for them.
Switch the active model
$ mw models select whisperkit:openai_whisper-small Selected: whisperkit:openai_whisper-small (Small)
The change applies immediately to both the CLI and the MacWhisper UI. If the model isn't installed, the command fails with a clear error — download it from the MacWhisper UI first.
4. Transcribing files
The simplest case — print a transcript to stdout:
$ mw transcribe ~/Desktop/meeting.m4a Hello everyone, welcome to the meeting...
By default, transcriptions are transient — they are returned to the terminal and then discarded. They do not show up in your MacWhisper history unless you ask.
Useful flags
--model <engine>:<model-id>— override the active model just for this run.mw transcribe --model apple:en-GB talk.wav--persist— save the transcription into MacWhisper's history (same as a regular in-app transcription).--stream— print segments as soon as they finalize, instead of waiting for the whole file. Works best with local engines (WhisperKit, ParakeetKit, Apple speech). Cloud engines (OpenAI, Groq, Deepgram, ElevenLabs, MacWhisper AI) only return one final result, so--streamhas no effect for them.
Progress output
When stderr is a terminal, mw transcribe renders a live Transcribing: 47% progress line on stderr. The actual transcript goes to stdout, so redirection stays clean:
mw transcribe foo.m4a > transcript.txt # transcript.txt contains ONLY the transcript mw transcribe foo.m4a | grep "hello" # grep sees only transcript lines mw transcribe foo.m4a 2>/dev/null # suppress progress when scripting mw transcribe foo.m4a > out.txt 2>&1 # capture both, if you want progress too
You can interrupt a transcription at any time with Ctrl+C.
5. Cool things to do with it
Transcribe and copy to clipboard
mw transcribe meeting.m4a | pbcopy
Transcribe every recording in a folder
for f in ~/Recordings/*.m4a; do
mw transcribe "$f" > "${f%.m4a}.txt"
done
Word count of a call
mw transcribe call.m4a | wc -w
Find every mention of a name across a folder of recordings
for f in *.m4a; do
echo "=== $f ==="
mw transcribe "$f" 2>/dev/null | grep -i "acme corp"
done
Transcribe and summarise with a local LLM
mw transcribe interview.m4a | ollama run llama3 "Summarise the key points:"
Live-pipe a long file into a note
Using --stream , you'll see transcript lines appear in the target file as they're produced:
mw transcribe --stream lecture.m4a | tee lecture.txt
One-off transcription with a different model without changing your default
mw transcribe --model whisperkit:openai_whisper-small quick-note.m4a
Save a proper entry into MacWhisper history from a script
mw transcribe --persist ~/Recordings/meeting.m4a > /dev/null
The transcription appears in the MacWhisper window like a normal import.
6. Troubleshooting
mw: command not found— the/usr/local/bindirectory isn't on yourPATH. Open a new Terminal window, or addexport PATH="/usr/local/bin:$PATH"to your shell profile.- "File not found" —
mw transcriberesolves~and relative paths against your current directory. Double-check the path, or drag the file into Terminal to paste its absolute path. - CLI hangs or can't reach the app — quit and relaunch MacWhisper, then try
mw version. The CLI auto-launches MacWhisper if it's not running (5-second timeout). - A model ID isn't recognised — run
mw models listto see the exact IDs you can use, and make sure the model has been downloaded from MacWhisper's UI first. - Progress line clutters a log file — add
2>/dev/nullto suppress it, or2>&1to capture it alongside stdout.
7. Uninstalling
Open MacWhisper → Settings → Advanced → Command-Line Tool and click Uninstall. MacWhisper will remove the binary from /usr/local/bin/mw .