Guide

What is text expansion, and how do you use it on Windows?

By The Keyfire team 5 min read

Text expansion turns a short trigger you type into a longer block of text the app sees. You type ;sig and your email signature appears. You type ;addr and your full postal address fills in. The mechanic is simple. The hours it gives back over a year are not.

This post walks through the idea from the absolute basics (typing ;sig) all the way through to dynamic templates that fill in dates, prompt for variables, and run small calculations inline. By the end you should be able to pick the right level of sophistication for the writing you actually do.

The simplest version

You define a snippet. The snippet has a trigger string and a payload.

  • Trigger: ;ack
  • Payload:
    Hi,
    
    Thanks for getting in touch. We've received your message and one of the team will respond within one business day.
    
    In the meantime, if it would help to share any screenshots or extra context, just reply to this email.
    
    Best,
    The team

You install a text expansion tool. You type ;ack in any reply. The four characters disappear and a six-line acknowledgement takes their place. Outlook, Gmail in the browser, the Slack DM box, a support tool, a Notepad window. Anywhere you can type, the snippet fires.

If that is all you ever use text expansion for, you have already won most of the value. Five or six common templates (acknowledgements, refund declines, “your invoice is attached” lines, the four-sentence reply you send to recruiters) pay back the setup time in the first week.

Dynamic tokens (the easy upgrade)

Most people stop at flat text snippets. That is fine, but it leaves three useful features on the table: dates that auto-fill, fill-in fields for the variable parts of a template, and inline computation. The first one is the easiest to adopt.

A token is a placeholder inside the snippet that the expander replaces at the moment you fire it. The most common ones:

  • {date} inserts today's date. In Keyfire you can format it: {date:DD MMM YYYY} gives 23 Jun 2026. {date+7} jumps a week forward, handy for “reply by next Tuesday” templates.
  • {time:HH:MM} inserts the current time.
  • {clipboard} drops in whatever is currently on your clipboard. Useful for “quote the thing I just copied” reply patterns.
  • Cursor positioning. You can leave a marker inside the snippet so the cursor lands ready for you to type the specific part.

A worked example. The snippet for a meeting follow-up:

Hi {clipboard},

Thanks for the chat today, {date:dddd}.

Three things to action this week:
1.
2.
3.

Best,
The team

You copy the recipient's name, type ;mfu, and the whole template appears with their name in the greeting, today's day of the week in the second line, and the cursor parked on the first action item. The work of writing it is gone. The work of thinking about what to say is still yours.

Fill-in fields

Tokens cover the parts the expander can fill in by itself. For everything else there are fill-in fields: prompts that appear when you fire the snippet and ask you to supply the values.

The typical pattern: you press the trigger, a small floating window pops up asking for one or more values, you type them in, press Enter, and the completed snippet writes out.

A customer-service reply template:

Hi {name},

Thank you for getting in touch about ticket {ticket}.
We've reviewed the issue and {resolution}.

If you have any further questions please let me know.

Best,
The team

Fire the trigger, the prompt asks for name, ticket, and resolution, you type them in once, the formatted reply lands. Three minutes of writing reduced to forty seconds of filling in three fields.

The advanced tools (Keyfire included) also let you set the field type. Some fields are short text, some are multi-line, some are dropdowns with preset options, some are dates. The right type for the field gives you the right input control when you fire the snippet.

Formulae and conditional output

This is where text expansion stops being a typing aid and starts looking like a tiny template engine.

Keyfire has an expression engine that lets you do arithmetic and conditional logic inside a snippet. Two examples to give you the flavour.

A VAT-inclusive quote. You fill in the subtotal once, the expander does the maths:

Subtotal: £{subtotal}
VAT (20%): £{= subtotal * 0.2}
Total: £{= subtotal * 1.2}

An invoice with a conditional late fee. The fee only appears if the days-overdue value crosses thirty:

Amount due: £{amount}
{if days_overdue > 30}
Late fee (10%): £{= amount * 0.1}
Total payable: £{= amount * 1.1}
{else}
Total payable: £{amount}
{/if}

You set the fill-in fields for subtotal, amount, and days_overdue. The maths and the branching happen at the moment of expansion. The output is a clean block of text ready to paste.

For most people most days, formulae are overkill. For the days when you would otherwise have opened Excel to compute a single number before pasting it back into an email, they are the feature that closes the loop.

Picking good triggers

The biggest cause of text-expansion fatigue is picking triggers that fire by accident. Three rules of thumb: use a prefix rare in normal typing (;ack, /ack) so the trigger never appears inside a real word; make it memorable (;addr is obvious, ;k7q2 is not); group related snippets under a shared prefix (;cs for customer-service replies) so you can list them when you forget the exact name.

Common Windows text expanders

A very short shortlist with one honest catch per tool (the full comparison is in our text-expander comparison post):

  • BeefText. Free, open source, easy to start with. Plain text only, no rich formatting, no images, no fill-in dialogs. You will outgrow it if you want anything past flat snippets.
  • Espanso. Free, open source, very capable. Configuration is YAML files you edit by hand. The learning curve is real and the GUI is minimal.
  • PhraseExpress. Long-established, deeply featureful, suitable for enterprise. The UI feels its age and the licensing tiers are confusing.
  • TextExpander. Polished cross-platform tool with cloud sync. Subscription-only, vendor-cloud-only (no fully local mode), and the price climbed again in 2026.
  • Keyfire. Free during Beta. Visual UI for hotkeys, macros, text expansion, and a clipboard manager in one tool. Rich text, fill-in fields, the formulae described above. Windows only at the moment and still in Beta.

Things to know before you start

A handful of gotchas worth knowing in advance:

  • Terminals. Command prompts and Linux-on-Windows shells (WSL, Git Bash, ConEmu, Windows Terminal) don't always accept the standard paste path that text expanders use. Good tools detect the terminal and switch to a compatible injection method automatically.
  • Passwords. Never put credentials in a snippet. A trigger that fires by accident is a leak.
  • Trigger collisions. If you type ;sig as part of a normal sentence (rare, but it happens), the expander will fire. Plan for an undo. Ctrl+Z usually puts the original three characters back.
  • Rich vs plain. Some tools store snippets as plain text only. Some store rich text (bold, links, images). If your email signature has formatting, check the tool supports rich-text expansion before committing.

Where to start

The lowest-effort, highest-payoff starting point: pick three phrases you type more than once a week. Your email signature. Your address. One stock reply you find yourself reusing. Bind those three. Use them for a fortnight. You will notice yourself reaching for the trigger automatically by the second week, which is the moment the feature has earned its place.

After that, you add new snippets when you catch yourself typing the same thing twice. The library grows in the background. The only rule is to keep using consistent prefixes so you can remember what you set up.