Fast, private dictation for macOS. Free and open source.
Press a hotkey, speak, and Overwhisper inserts the text wherever your cursor is. It lives in the menu bar, runs local WhisperKit or Parakeet speech-to-text on your Mac by default, and does not ask you to rent access to hardware you already bought.
Download · Features · Build from source · Contribute
There are plenty of dictation apps that run transcription on the user's own machine and still charge a subscription for the privilege. Overwhisper takes the more obvious deal: your Mac does the work, so the core app is free, local-first, and open source.
The goal is not "voice notes". The goal is to make speaking into any Mac text field feel as direct as typing:
- Hold a hotkey while writing in Slack, Notes, Linear, your browser, or your IDE.
- Choose WhisperKit or Parakeet local models for private, low-latency transcription on Apple Silicon.
- Keep a polished menu bar workflow with onboarding, model management, waveform feedback, recent transcriptions, retry, and sensible failure handling.
- Choose cloud transcription only when you explicitly want it.
- Download the latest signed DMG from GitHub Releases.
- Open the DMG and drag Overwhisper.app into
/Applications. - Launch Overwhisper from Applications or Spotlight.
- Grant the requested permissions:
- Microphone records your speech.
- Accessibility lets Overwhisper paste text into the app you are using.
- Pick a model in Settings and start dictating.
Overwhisper is a menu bar app. It does not show a Dock icon.
- macOS 14 Sonoma or later
- Apple Silicon Mac, M1 or newer
- Microphone and Accessibility permissions
Release builds are arm64-only.
- WhisperKit local transcription, optimized for Apple Silicon.
- Parakeet local transcription via FluidAudio, including Parakeet v2 English and Parakeet v3 multilingual model options.
- OpenAI Whisper API as an optional cloud engine when you prefer hosted transcription.
- Download, select, and delete local models from the settings UI.
- Two hotkey styles:
Option+Spacetoggles recording, andOption+Shift+Spaceis push-to-talk by default. Both are configurable. - Tap-or-hold behavior: tap the toggle hotkey to start/stop, or hold it like push-to-talk and release to transcribe.
- Cursor-aware insertion: text is pasted into the active app, not trapped in a separate transcript window.
- Floating overlay: configurable position with live waveform and transcribing state.
- Menu bar controls: start/stop recording, copy recent transcriptions, retry the last failed transcription, open settings, and check for updates.
- Input device selection: use the system default microphone or choose a specific input device.
- Custom vocabulary for names, acronyms, and project-specific terms.
- Text replacements for fixing predictable mishearings, like
Cloud Code -> Claude Code. - Language selection with auto-detect, common Whisper languages, and Parakeet language hints.
- Translate to English when using a model/API mode that supports translation.
- Silent recording detection so accidental empty captures can be skipped.
- Optional recording limit for long-running hotkey mistakes.
- Optional system-audio mute while recording with built-in speakers.
- Recent transcription history and local debug sessions for playback, retry, and troubleshooting.
- Sparkle updates for signed release builds.
- Focus any text field.
- Press your Overwhisper hotkey.
- Speak naturally.
- Release the push-to-talk hotkey, or press the toggle hotkey again.
- Overwhisper transcribes the audio and inserts the result at the cursor.
If Accessibility permission is missing, Overwhisper copies the text to the clipboard and tells you to paste manually.
Overwhisper is local-first.
- Audio stays on your Mac when using WhisperKit or Parakeet.
- Audio is sent to OpenAI only when the OpenAI engine is selected, or when cloud fallback has been enabled in local settings and a local transcription fails.
- OpenAI API keys are stored in the macOS Keychain.
- Recent debug sessions are stored locally under Application Support so you can inspect audio, retry failures, and troubleshoot issues. The app keeps a capped set of recent sessions and includes a Clear All control in Settings.
- Anonymous usage analytics are optional and off until you choose to share them. When enabled, Overwhisper sends app lifecycle events, basic app/device/OS information, model choices, and bucketed dictation outcomes to PostHog through Overseed's first-party proxy. An allowlist strips all other event fields. It never sends audio, transcribed text, API keys, filenames, other app names, or raw errors. You can change this choice at any time in Settings.
Requires Xcode 15+ and Swift 5.9+.
swift build
swift run OverwhisperOr use the Justfile:
just build # debug build
just run # run debug build
just build-release # release build
just bundle # create Overwhisper.appFor Xcode:
open Package.swiftWhen running inside Codex or another Seatbelt sandbox, SwiftPM may fail while trying to create its own nested sandbox or write shared caches. Use:
swift build --disable-sandbox --cache-path .swiftpm-cacheOverwhisper/
├── App/ # App delegate, app state, onboarding, crash handling
├── Audio/ # AVAudioEngine recording and device handling
├── Hotkey/ # Global keyboard shortcuts via HotKey
├── Logging/ # App logs and local debug session storage
├── Output/ # Clipboard + synthetic Cmd+V text insertion
├── Resources/ # App icon and bundled assets
├── Transcription/ # WhisperKit, Parakeet, and OpenAI engines
└── UI/ # Settings, overlay, menu bar icon, debug playback
The core recording flow is:
HotkeyManagerreceives the global hotkey event.AudioRecorderrecords a 16 kHz mono WAV throughAVAudioEngine.OverlayWindowshows recording and transcribing state.- The selected
TranscriptionEngineproduces text. TextInserterpastes the final text into the active app.
- WhisperKit for local Whisper models.
- FluidAudio for Parakeet ASR.
- HotKey for global shortcuts.
- Sparkle for app updates.
Contributions are welcome. Useful areas include:
- Dictation UX polish and reliability.
- Model download and setup experience.
- Better language/model documentation.
- Accessibility and permission-flow improvements.
- Bug reports with macOS version, Mac model, selected engine/model, and the relevant error from the menu bar or History tab.
Please keep changes focused, use the existing SwiftUI/SwiftPM style, and prefer small pull requests that are easy to review.
Overwhisper is free and open source. If it saves you time and you want to support development, you can do that at buymeacoffee.com/halshin.
MIT. See LICENSE.