- You rewrite the same client follow-up for the fifteenth time this week, and every version drifts a little.
- A text expander does not save keystrokes. It freezes a decision, and it can fire where you did not want it.
- This article explains why an ordinary trigger causes errors, how to write one that does not, and gives you one action to take today.
You are typing the same client follow-up for the fifteenth time this week. Each version comes out a little different: a bit curter one day, a missing date the next, a link that still points to the old booking page. Typing speed is not what slows you down. It is making the same decisions again: which wording, which tone, which link.
A text expander fixes that, provided you know what it actually fixes. It does not save keystrokes. It freezes a decision, and it can fire at the wrong moment, inside text you never meant to replace. I give both points equal weight. The first justifies the tool. The second explains why many people drop it after a week.
What you are actually repeating
When people picture a text shortcut, they think of typing: ten characters instead of sixty. That math is wrong. A sixty-character signature typed ten times a week costs a few seconds a day. That is not where your time goes.
It goes into rewriting. Each time you retype a follow-up, you make three small choices: the opening line, the sentence that nudges without guilt, the link to include. Each one takes a second, sometimes ten. Multiplied across dozens of messages, that becomes mental load, and the versions drift apart. One follow-up in three ends up with a dead link or an outdated date, because you did not reread the previous version.
A snippet freezes the choice once, when you are calm and have reread the wording. After that, it inserts the same text every time. So the gain is not measured in characters saved. It is measured in decisions you no longer have to make again. That changes what belongs in it: a wording you have validated, not everything that comes to mind.
The consequence is uncomfortable. A badly chosen snippet does not waste a minute. It repeats the same mistake every time you use it, and a wrong sentence, once frozen, shows up in twenty messages before you notice.
The trap: a trigger that appears inside a word
An expansion fires as soon as its trigger is typed, wherever that happens. If your trigger is an ordinary word, it fires in the middle of other words. Espanso gives this example itself in its documentation: with a rule that replaces ther with there, typing other turns into othere. The same mechanism turns any run of letters into text you never asked for.
There are two ways to prevent it, and they suit different uses.
The first is a prefix. Every trigger starts with a character that never opens a word, such as : or ;. Nobody types ;rsvp in the middle of a sentence, so the rule stays silent unless you mean it. The cost is one extra keystroke. The benefit is a simple rule: a trigger should not look like any word.
The second is the whole-word constraint, word: true. The rule only fires when it is surrounded by spaces, commas or line breaks. It suits typo corrections, where you want ther to become there only when it stands alone. For longer snippets, the prefix stays more predictable, because you always know what fires it.
Keep the rule that follows from this. Any trigger that can appear inside an ordinary word will produce errors, and a silent error costs more than one extra keystroke. When in doubt, add a prefix.
A long text does not go in like a keystroke
There is a second mechanism, less well known, that explains some odd behavior. Espanso inserts text in two ways. For short text, it simulates typing, key by key. For long text, it goes through the clipboard. The default setting, backend: auto, picks the clipboard above a character threshold, 100 by default, which you can change with clipboard_threshold (Espanso options). By default, Espanso then restores whatever was in your clipboard before.
In practice, a long snippet briefly passes through your clipboard. If the target application reacts slowly, it can paste the previous clipboard content instead of the new one. That is the price of insertion through the clipboard, not a crash. You notice it in one way: the pasted text is not the text you expected.
The right habit is to test every long snippet in the application where you will really use it: your mail client, your editor, a web form. A wording that works in Notepad can behave differently in a messaging app. A thirty-second test prevents a bad surprise in front of a client.
Which text deserves a snippet
Not everything qualifies. Three criteria are enough, and all three must hold.
The text must be stable: it would read the same in a year. A signature, a thank-you formula, a service description qualify. An amount, a date, a project name do not.
It must be repeated: at least once a week. Below that, rewriting costs less than maintaining the snippet.
It must be checkable in ten seconds: you can scan its content at a glance, without opening the configuration file.
To find candidates, do not rely on memory. Open the messages you sent this week and look for passages you wrote word for word, give or take two or three words. Those deserve a trigger, not the ones you think you retype most.
The typical failed snippet contains a price. It was right when you wrote it. Three months later it quotes a rate that no longer exists, and it keeps quoting it, because an expander never warns you. That limit is not a reason to give up. It calls for a periodic review: once a quarter, half an hour is enough to delete the snippets you no longer use and fix the ones that went stale.
Two automations, two ways to break
A macro records gestures; a snippet records a sentence. A macro breaks when the window moves, because it memorized a position. A snippet breaks when the sentence becomes false, because it memorized content. Both need checking, but not the same kind. Why your Windows macros break covers the first case in detail.
That difference tells you where each tool belongs. Something that depends on a repeated gesture, such as opening the same series of screens, belongs to a macro or a script. Something that depends on stable text belongs to a snippet. Mixing them up leads to recording a macro to type a formula, or freezing in a snippet a procedure that changes every month.
One action to take today
Take the three sentences you retype most this week. Run each one through the three criteria: stable, repeated, checkable. Keep the one that passes best.
Write it one last time, reread it, then give it a prefixed trigger, like ;rsvp rather than rsvp. Open a plain text field and type a sentence that contains the same letters in the middle of a word: nothing should appear. Finally, paste the snippet into the application where you use it most, and check that the text arrives intact.
Note the date and how long you spent retyping it before. In three months, you will know whether the rule held.
What this changes for you
A text expander is not a typing-speed tool. It stops you from making decisions you have already made, and it stops itself from firing where you do not want it. So your first snippet should be a sentence you will not change, with a trigger that does not look like any word.
To install Espanso, set the on/off toggle and store your first snippets step by step, the Automation lesson walks through the setup. If your first question is what to automate before anything else, the free guide to 10 Windows settings lays the groundwork. If you are still torn between several tools, the text expander comparison sets out the criteria. Already have a library in Espanso or TextExpander? Move your snippets without retyping.
Sources
Last checked: November 1, 2026.
See the 2 sources of this article
- Espanso, Matches Basics (official documentation): espanso.org/docs/matches/basics
- Espanso, Options (official documentation): espanso.org/docs/configuration/options