Stenography and Plover

The process of writing shorthand is called stenography. Using a stenotype machine, you can type over 100 or even 200 words per minute. For a real overview, see the Open steno project.

Plover is the world's first free, open-source stenography program, which translates chorded key strokes into meaningful words.

Try steno online.

Interactive Typing Drills

Practice typing using QWERTY or Plover (using your own dictionaries) with interactive drills made from the Learn Plover book:

Plover, Learn! Interactive Drills

Why Learn Stenography?

See also: How to Speak with Your Fingers (Plover Blog).

Stenography for Coders

Stenography is an efficient method for editing text.

See also: Vim and Plover

Stenography for RSI

There are many ergonomic benefits to using stenography to write. Note: the Stenoboard uses keys rather than levers, which may reduce some of the ergonomic benefits of traditional stenotype machines.

Start Learning Stenography

  1. Buy a stenoboard:
    • Set it up
    • Note: Stenosaurus — great, though I'm sure it will be — does not exist yet. My wild, uninformed guess is that it's months or years away.
  2. Download Plover:
  3. Configure Plover.
  4. Important: the * button is, essentially, Backspace.
  5. Start reading Learn Plover:
  6. Overview the reference info available.
  7. After reading Learn Plover, read Learn More Plover.
  8. Make it easy to learn new briefs and look up briefs:
  9. Practice drills (this is my update of Lars's interactive Plover, Learn!).
  10. Practice particularly tricky briefs.
  11. Practice sentences.
  12. Practice more sentences.
  13. Practice paragraphs.
  14. Practice with games.
  15. Explore the practice section of the wiki.
  16. Compete on TypeRacer.
  17. Join the active discussion group on Google Groups.
  18. Ask questions and post about your progress at the Aviary.
  19. Follow Mirabai or Plover, and Ted on Twitter.

Plover Versions

The first full release in 2 years, Plover 3 holds many feature updates and bug fixes. Celebrate! \o/

The last official Plover version was released almost 2 years ago. There have been many excellent forks since then with varying features and support for new features from the main project. Try looking at these:

Dictionary Management

Note: some of the following strokes only work with particular versions of Plover.

Workarounds and Hacks

Dictionaries & Briefs

Forming Briefs

Your purpose in studying stenography will shape how you approach briefs as there are trade-offs to each approach. As a live captioner, accurately recording the speaker's words as well as other sounds may be important. As a writer, recording your thoughts as fast as you can think them may be important. If you have an injury, reducing strokes may be important.

Tips for creating briefs

Start by reading Designing briefs (Learn Plover book)

Briefs conflicting with prefixes and suffixes

When creating new briefs, check for existing prefixes and suffixes that you could use instead and check for prefixes and suffixes you should avoid using as beginning or ending strokes in your brief. That is, avoid creating briefs that use strokes currently employed for prefixes and suffixes.

Consider these suffix strokes:

"O*R": "{^or}",
"RAL": "{^ural}",
"HREU": "{^ly}",

… and these words:

"ABGT/O*R": "actor",
"O*R/RAL": "oral",
"RAL/HREU": "rally",

Now imagine you wanted to write this phrase:

actor rally

You'd see:

actor rally

Success! Now imagine you wanted to write this phrase:

act oral

You'd see:


:( Now imagine you wanted to write this phrase:

act orally

You'd see:

actor rally

:( What to do? Consider these translations:

"OR": "or",
"AUR": "{or^}",
"O*R": "{^or}",

If you want to stroke the word "ordeal", you might use:

If you want to stroke the word "oral", you might use:

If you want to stroke the word "ordinary", you might use:

Understanding prefixes

Let’s examine the word “dispense”, stroked TKEUS/PEPBS. As a word starting with “dis-”, you might think to use the prefix stroke: "TKEUZ": "{dis^}". Using that prefix, however, will result in the misspelled word “dispens” — Plover prepends the “dis” prefix to the word “pens”. This is why the translation is TKEUS/PEPBS exists instead.

For this reason, in the default Plover dictionary you won’t find many strokes beginning with TKEUZ/. If you wanted to write “disable”, you could use the entry "TKEUS/AEUBL": "disable", or add the “dis^” prefix to “able&rdqduo;: TKEUZ/AEUBL. The translations starting with TKEUS/ are usually included to handle misstrokes and to avoid the confusion of remembering whether a word should be stroked using TKEUS or TKEUZ.

For the same reason, you’ll find SUB strokes for many words starting with “sub” in the default Plover dictionary. Some of those are misstrokes for the prefix SAUB and subsequent root word, while others are words starting with “sub” that only form sensible words with “sub” included.

So, remember you can form words using prefixes that may not need their own dictionary entries, and not all words starting with common beginnings are actually using prefixes.

When to add a brief for word endings

When adding a suffix to a word, you don't need a dedicated brief unless adding the suffix changes the previously stroked letters. For example, a brief including /HREU is necessary for "emptily", but not for "avariciously":

"EFRP/TEU": "empty",
"EFRP/TEU/HREU": "emptily",
"A*F/REURB/OUS": "avaricious",

You might, however, explicitly add the brief "A*F/REURB/OUS/HREU": "avariciously", for your preferred brief to stroke the word so that it appears when doing a word lookup while you're still learning.

Note: Plover has a built-in American word list and, if a brief is missing, will attempt to match a stroke with that list. So in the case above, if "EFRP/TEU/HREU": "emptily", were missing from your dictionary, Plover would still turn EFRP/TEU/HREU into "emptily".

-RBGS for fingerspelling and commas

-RBGS is sometimes used for fingerspelling. To cut back 1 stroke in 3-letter acronyms, you might use "TK-RBGS/PH*Z": "DMZ", to fingerspell D and add MZ. To create a brief for a word shorter than the phonetic stroke itself, you can add -RBGS (but you should also consider fingerspelling the word).

The -RBGS stroke part is also used to append commas to words. As such, some phonetic briefs unintuitively require an asterisk to stroke the bare word and ditch the asterisk to write it using a comma. Coincidentally, these phrases are often followed by commas anyway:

"O*ERBGS": "oh",
"OERBGS": "oh{,}",
"A*ERBGS": "ah",
"AERBGS": "ah{,}",
"HAO*EU": "hi",
"HEURBGS": "hi{,}",

-RBGS may be used to "finish" a word with a comma. For example, consider:

"PR*ERB": "pressure",
"PR*ERB/-RBGS": "pressure{,}",
"PR*ERB/KAOBG/*ER": "pressure cooker",

To avoid word boundary errors, you might append -RBGS to shorter briefs to declare them finished words. For example, consider:

"PWRAUPB/-RBGS": "brawn",
"PWRAUPB/KWREU": "brawny",
"PWRAUPB/TPH*EU": "brawny",
"PWRAUPB/TPH*EU/*PBS": "brawniness",

You might find instead that a brief like "TK-LS": "{^^}", to finish a word is more reliable.

Repeat strokes

Repeat the main brief's strokes to capitalise the brief (or consider the "retrospectively uppercase first letter" stroke), for example:

"SR\*EUPL": "vim",
"SR\*EUPL/SR\*EUPL": "Vim",

To write the word repeatedly, you'd just keep tapping the stroke:

vim vim

Cycle through briefs with repeated strokes, eg:

"SKWRAP/KAT": "\uff08\u03a6\u03c9\u03a6\uff09",
"SKWRAP/KAT/KAT": "(\u225a\u110c\u225a)\u2112\u2134\u0475\u212f\u2764",
"SKWRAP/KAT/KAT/KAT": "( =\u2460\u03c9\u2460=)",

Star last stroke

Star the last item for a command, for example:

"TKEUBGS/REU/TEPL/PHRA\*EUT": "{^}\\{\n\"\": \"\",\n\"{}\": \"\\{\\}\"\n\\}",

Star the last item for a variation. For example, to write "em dash" you might stroke:

"EPB/TKARB": "em dash",

… and to write an character, you add an asterisk to the final stroke in the phrase:

"EPB/TKA*RB": "\u2013",

Steno Machine Options

Steno try before you buy options

The process of writing shorthand is called stenography. Using a stenotype machine, you can easily type over 100 or even 200 words per minute. Using steno, you can efficiently record text from thought, avoid pain from repetitive strain injuries, type fast, dictate, and communicate at conversational speed via text or synthesised voice. For those of you, or your friends, that would like to try steno, but aren’t ready to invest in an expensive steno machine or a playfully fragile open-source alternative, here’s what you can do …

1. Interactive steno demo

This interactive steno demo works with regular QWERTY keyboards on regular browsers with no installation needed, so you can start playing with it immediately. The big limitation is that you can only send a few key strokes at a time rather than the 6 or more needed for the full vocabulary of steno words.

2. Mac’s Karabiner Engelbart key remapping

Karabiner is a keyboard customiser that lets you remap keys to more comfortably perform more powerful operations. For example, use Vi anywhere or stop accidentally closing applications by requiring ⌘Q to be double tapped. Using Karabiner’s Engelbart settings, inspired by computer pioneer Douglas Engelbart’s projects, you can try chorded keyboard behaviour. That is, by simultaneously pressing keys together, they can perform different actions to their defaults. For example, I use simultaneous "x" + "c" together for a more comfortable Escape key. Karabiner can let you play with a chorded style of keyboard use to see if that’s a more pleasant approach, before upgrading to steno.

3. Arpeggiate any keyboard

Plover is the world’s first free, open-source stenography program, which translates chorded key strokes from your normal computer keyboard into meaningful words. Its “Arpeggiate” setting allows using non-NKRO keyboards (most normal keyboards). Each key can be pressed separately using the space bar to send the stroke.

Flashing Ergodox or Planck for Stenography

One option for trying out stenography is to use any NKRO keyboard with a grid key layout (that is, the keys line up neatly instead of being staggered diagonally), such as the Ergodox. For a full guide, check out this blog post, Stenography adventures with Plover and the Ergodox EZ. The short version—if you know your way about hardware—you can flash an ergodox using this GUI tool from Input Club Keyboard, add the steno key layout to the home row, and make it behave like a steno machine. To build the steno key layout, try their Configurator. Remember to make sure every layer has a Flash key. Layer switching keys are handy too.

Plover on Planck

There are lots of options for steno machines, including relatively cost effective choices such as the Planck Ortholinear Keyboard (when it’s available). Here is the keymap firmware I needed to enable NKRO for the Plover layer.

Planck keyboard with steno layout

It’s a narrow board. Without the split board that I am used to, writing feels cramped and hurts my wrists, so I made an adjustment to the default Plover layer in the firmware to move the Plover keys to the outer edges of the available keys on the board. This has eased the discomfort somewhat, so I recommend making that tweak. This does make me wonder how people using it for QWERTY typing feel. Similarly, I also moved the vowels closer to each other so that the thumbs can comfortably spread out in a more neutral position for my hands. It would probably be better for them to be lower as well, as with most steno machines, but it’s less restrictive overall on my writing than the UTOPEN Stenoboard, which has far stiffer keys due to its choice of key switches.

It’s portable. Unlike my previous steno machines, this can be comfortably held in one hand or placed safely inside a box without extraneous cables or general bulk. It’s tiny by comparison!

Using G20 blank key caps turned around in places so that they fit snugly together, writing on this board is easy—I’ve had no issues with stroking any words. Some people find issues using staggered (regular) keyboard layouts rather than ortholinear (gridded) keyboards, or narrow and curved key caps, because the tops don’t fit together well enough to press keys simultaneously.

Finger Positioning and Posture

Use the finger tips rather than finger pads, with your fingers curled. See also: Key demo for finger placement.

Straighten out free, idle fingers during a stroke. This may help you avoid mashing extra keys accidentally. As a paraphrased example from the Plover Google Group, imagine the word "vicious", which is stroked SREURBS. Flatten and lift your ring finger to avoid pressing -L or -G during the stroke. Watch this video for a demonstration.

QWERTY Keys and Layout

Vim and Plover

At the time of writing, Plover has no capacity for key repeat. That is, holding down a key on a QWERTY keyboard will type it repeatedly. Holding down a stroke with Plover will do nothing until it's released. Therefore, to type something repeatedly you need to stroke it repeatedly (or repeatedly stroke the repeat stroke command). As such, tasks like moving your cursor down several lines using an arrow key like you would on a QWERTY keyboard becomes challenging and tiring. Vim's modal editing makes this easier, for example, letting you write “4j” or 4/SKWR* to arrow down 4 times.

Similarly, Vim is designed for efficient typing as is conceptually a natural fit for using with stenography.

Here are some dictionary entries for using the Vim text editor. For more comprehensive details and up-to-date briefs, see my Vim dictionary.

Generally, for your left hand the briefs contain SR => V for Vim. They also include TP, which is based on TPH => M, but drops the H for reasons of convenience and avoiding dictionary conflicts. Ideally, together they’d form the word Vim, but instead it’s Vif. Oh well.

To move around in Vim, combine SR => V and STP used in regular arrow navigation strokes, and for your right hand, use Vim-style home row keys for Vim’s “hjkl”:

STPROEUFRL => VPLOVERL for Vim Plover Lookup to yank the previous word to the system clipboard * and perform a Plover lookup:

Here’s the variation I use that includes my own QWERTY keyboard shortcut for my steno lookup tool:

Enter command mode using the left-hand Vim part—SR => V for Vim—and the right-hand part of the standard colon brief STPH-FPLT:

Unspaced Tilde for capitalisation:

Unspaced dollar to jump to the end of a line:

For a “;” leader key, use an unspaced semicolon SKHR-PB => SKLN => semicolon, mimicking the brief style of an unspaced colon KHR-PB => KLN => colon:

Additional Notes on Learn Plover

Learn More Plover

Your First Briefs


History of the #{FLUSH} command

Q: What is the meaning of the FLUSH definition TPHR-RB and THR-RB? Is it a command stroke for Plover?

A: Great question. That stroke is actually a big reason why Plover exists, though fortunately it's not a stroke that we need to implement in Plover, and it can safely be taken out of the Plover dictionary. Basically, all proprietary steno software uses a time-based buffer, which means that the strokes aren't released to the OS until a specified amount of time has passed. You can change the length of this buffer manually, but if you set it any shorter than 1.5 seconds or so, you're at risk of seeing split strokes -- like KAT/HROG being translated as "cat log" instead of "catalogue". So I have to keep my stroke timer set to 1.5 seconds, but because my CART clients don't like having to wait 1.5 seconds to see each stroke displayed, I have to manually flush the buffer by invoking the {FLUSH} definition every time there's the slightest pause in the flow of speech. According to my steno software's dictionary editor, I've used the {FLUSH} stroke about 100,000 times. That's 100,000 wasted keystrokes. It's maddening. One of the biggest advantages Plover has over all the $4,000 software out there is that it uses a length-based buffer rather than a time-based one, so the translations are released to the OS immediately, instead of after an arbitrary delay. It's also the reason Plover can actually interact with the OS in a meaningful way, beyond just text entry. 1.5 seconds may not seem like much, but imagine having to wait 1.5 seconds after delivering any command, from Enter to Backspace to Alt-Tab (most proprietary software can't even send Alt-Tab as a command, but never mind...); it's horrendously frustrating and completely unworkable. The time-based buffer has kept all proprietary steno software subfunctional for decades. Plover's the only steno program I've ever seen that doesn't have this problem. The difference is nothing short of staggering.

Redo with Space. Redo without Space.

  • Type very nearly and get first "very" followed by "venereal"? Happened to me. If you have a stroke defined as {*?} it will delete the stroke, insert a space, and repeat the stroke, so you actually get out "very nearly".
  • Have you tried three times to get "everyone" but you only found three different ways to get "every one"? If you don't want to resort to spelling, a stroke defined as {*!} will just remove the space. It works for any words, so you can turn "folks pizza" into "folkspizza".


Back to top