ParrotFlow vs Handy

Both are free, open source and turn speech into text on your computer. Handy is simple and cross-platform. ParrotFlow runs on the Mac and you can program it.

Pick Handy if

  • You use Windows, Linux or an Intel Mac.
  • You want a settings window, not a config file.
  • You want to pick the speech model, such as Whisper or Parakeet.
  • You dictate in languages other than English and French.

Pick ParrotFlow if

  • You want PR links (#478), Slack mentions (@siobhan) or your own scripts.
  • You want names checked against the sentence and spelled from the screen.
  • You want different steps in different apps.
  • You are fine editing YAML, or letting a coding agent do it.

Feature by feature

HandyParrotFlow
Basics
PriceFreeFree
Speech becomes textOn your computerOn your Mac
Works offlineYes, after a model downloadsYes, after the models download
PlatformsmacOS, Windows and Linux, Intel Macs tooMac with Apple silicon, macOS 15 or later
LanguagesDepends on the model you pickEnglish and French
Source codeOpen, MITOpen, GPL-3.0
Cleanup
Filler words“um”, “uh” removed✓ Yes✓ Yes
Stutters and repeats“the the prompt” → “the prompt”Only a word said three or more times✓ Yes
Stray full stops after a pause“a parrot. At the top” → “a parrot at the top”Not documentedYes, in English
Numbers, dates and money“nine fifteen AM” → “9:15 AM”In the default LLM post-processing prompt✓ Yes
AI rewrite of your wordsOptional and experimental, on its own shortcutOnly if you add a prompt step
Names
Learns words you correctA custom words list you fill in✓ Yes
Right name by contextMik the developer, Mick the guitaristNot documented✓ Yes
Spells names from the screen“carrot anchor” → CaretAnchorNot documentedAny app, except password managers and System Settings
Your own steps
PR links“PR 478” → #478Not documentedYes, one rule you add
Slack mentions“Siobhan” → @siobhanNot documentedYes, add your roster and press S
Different rules per appNot documented✓ Yes
Your own scriptstext in on stdin, text out on stdoutLinux only: a script that pastes the text✓ Yes
Prompts on a model you chooseCloud providers, Apple Intelligence or a custom URLOllama, OpenAI or Anthropic
Actions by key or voice after dictatingpress B for a bug reportNot documented✓ Yes

What Handy does well

Handy runs on more machines. Its download page has Mac builds for Apple silicon and Intel, Windows builds for x64 and ARM, and Linux builds for x64 and ARM as AppImage, DEB and RPM. ParrotFlow needs an Apple silicon Mac with macOS 15 or later.

You pick the speech model. The list has four Whisper sizes, Parakeet V3 and others, such as Moonshine and SenseVoice. Some are English only. Others cover many languages. Speech recognition runs on your computer, and the privacy page says Handy has no analytics.

Setup happens in a settings window. You grant the microphone and Accessibility, choose a model and set a shortcut. The website sums it up as “One tool, one job.” Filler sounds such as “uh” and “hmm” are removed by default.

Handy is MIT-licensed and in active work. Version 0.9.8 shipped on 3 October 2026, and its main branch has changed since. This page describes 0.9.8.

Your own steps after the transcript

This is the main difference.

Handy has one extra step, LLM post-processing. It sits in the Experimental settings group and is off by default. Once on, a second shortcut sends the transcript to a model with the one prompt you selected. The default prompt asks the model to fix spelling, capitals and punctuation, turn number words into digits and drop filler words. Providers include OpenAI, Anthropic, OpenRouter, Groq, Apple Intelligence on supported Macs, and a custom OpenAI-compatible URL. On Linux, a script of yours can do the paste.

ParrotFlow runs a pipeline of steps you write in config.yaml. A step is a rule, a script or a prompt. Rules and scripts need no model.

You say

“PR 478”

ParrotFlow writes

#478

A replace: rule with a pattern. In apps that accept formatted text, it links to the pull request.
You say

“Siobhan”

ParrotFlow writes

@siobhan

After you press S. The slack_mentions script ships with ParrotFlow. You fill in the roster.

A step can carry app: /slack/, so it runs in Slack and nowhere else. Scripts that ship with the app turn spoken numbers, dates and prices into digits, so “nine fifteen AM” becomes “9:15 AM”. Prompts run on a model you choose, on your Mac through Ollama or with a remote provider. In both apps, a remote provider receives the text it works on.

See programmable dictation and your first rule.

Names and jargon

Handy has a custom words list that you fill in. With a Whisper model, the list goes to the model as a prompt. With other models, Handy puts in a custom word when a transcribed word is close to it in spelling or in sound. Its settings say this fuzzy correction only works for words made of A–Z and numbers. The main branch, not yet released, sends the list to more models.

When you fix a word in the text, ParrotFlow offers to learn it. It matches by spelling and by sound, then checks the sentence before it writes the word. So the ordinary word stays where it belongs.

You say

“upgrade view”

ParrotFlow writes

upgrade Vue

You say

“re-render the whole view”

ParrotFlow writes

re-render the whole view

Same sound, ordinary word. ParrotFlow leaves it alone.

ParrotFlow also spells names the way the screen does. It is on by default. When you press the key, it reads the window you dictate into, in any app. It skips known password managers, System Settings and password fields. When it gets no screen, it uses the text above the caret in the field.

You say

“caret anchor”

Model heard

carrot anchor

ParrotFlow writes

CaretAnchor

Claude Code had just written CaretAnchor in the terminal.

More in custom vocabulary and screen context.

What ParrotFlow asks of you

ParrotFlow keeps its behaviour in ~/.config/parrotflow/config.yaml. You edit the file and save it, and the app reloads it. ParrotFlow --check-config prints what the app will run. ParrotFlow --pipeline runs a pipeline file on a sentence, with no microphone, so you can test a rule first.

This is the setup Handy does not ask of you. A coding agent can do it for you. Add the ParrotFlow skill, then describe the rule in your own words:

npx skills add znat/parrotflow --skill parrotflow

Install ParrotFlow. Also see the Wispr Flow alternative and ParrotFlow vs VoiceInk.

Sources, checked 23 October 2026

Handy

ParrotFlow