A text expander for the Mac
Type less.
Say the same thing.
Type a short abbreviation, press Tab, and the whole thing appears: the follow-up with the date worked out, the signature, the paragraph you have typed a hundred times. Your snippets stay on your Mac.
Free for 14 days, then $33 once. No subscription, no account. macOS 15 or later, Apple silicon and Intel.
How it fires
One prefix, one key. Nothing fires by accident.
The trigger character is one setting for the whole app, and the key that fires a snippet is swallowed, so a stray Tab is never left in your text.
The prefix, typed once
A snippet is stored as sig. You type ;sig. The prefix lives in Settings, not on every snippet you own, and a snippet or a group can opt out or bring its own.
The abbreviation
Plain, or a regular expression with capture groups you can use in the expansion. Case-sensitive, case-blind, or adapting the output to how you typed it: sig, Sig, SIG.
The expansion key
Tab out of the box, because nothing else types a Tab mid-sentence. Space, Return, punctuation or any character can join it, app-wide, per group, or per snippet.
Tokens
Anything in braces is a token. Anything it does not recognize is a question.
Dates that do arithmetic, the clipboard with modifiers, one snippet inside another, keys pressed at the caret, and a form for whatever is left.
{cursor}Where the caret ends up{date +3d}Three days from now. Units: s m h d w M y, chainable{clipboard}Whatever you last copied{date +1w MMM d}Next week, in the shape you want{clipboard|trim|uppercase}Modifiers, chainable: trim, capitalize, titlecase, urlencode, jsonescape, firstline{time}Now, in any format{snippet:sig}Another snippet, by abbreviation or by name, eight deep{Name}A fill-in: the form asks before it expands{key return}A real key press at the caret, not a character{#Calendar}…{/}An optional section, ticked by default. Untick it and its fill‑ins go too
A snippet can also be a shell command, an AppleScript, a JavaScript, or an instruction to Anthropic or OpenAI with your own key. Scripts are off until you turn them on, and an AI snippet needs your own API key. The whole list is in the docs.
Your snippets, your machine
There is no account, because there is no server holding your snippets.
Your snippets live on your Mac in plain, readable JSON, backed up daily. By default, two things leave it: claiming your license once, and the daily update check. Everything else is off until you turn it on.
- What you type is held in a 64-character buffer in memory, written nowhere, gone when the app quits.
- Nothing expands in a password field, on the lock screen, or while another app holds Secure Input.
- Export writes Expando JSON, a TextExpander group, CSV, plain text or Markdown, so leaving is as easy as arriving.
Coming from somewhere else
Import, and keep typing what you already type.
Groups, labels, abbreviations, timing, case, fill-ins, scripts and formatting all come across. Macros turn into Expando's tokens where there is an equivalent and are flagged where there is not.
The import asks one question: keep your abbreviations firing exactly as they do now, or move them onto Expando's prefix and Tab. Keeping is the default, because changing every trigger in your library without asking would be the worst thing an import could do.
Reads
Writes
Import only ever adds. Duplicates are tagged, anything untranslated is tagged for review with a note, and a backup is taken before a single thing is written.
When it does not fire
Nothing silently does nothing.
The complaint every expander earns is "it stopped working" with no way to see why. Expando shows the reason where you are looking: the menu bar changes state, the menu names the app responsible, and every attempt is in a log you can read.
- When another app holds the keyboard for a password, the menu names it and offers a way to release it.
- A completed abbreviation followed by the wrong key is recorded as a near miss and said in as many words.
- Two snippets on one trigger, or a short one shadowing a longer one, are flagged in the list with the fix.
- A shortcut another app already holds is found, and a free one is offered.
Expanding in every appWatching for its own abbreviations and nothing else.
Paused for a passwordThe menu names the app holding the keyboard, and how to release it.
Waiting for a permissionWhich one, and a link to the exact System Settings pane.
Expansion is offTurned off in this app, or by you, until you say otherwise.
Getting started
Download, drag, type.
macOS 15 or later, Apple silicon and Intel. Free for 14 days with everything on, and nothing to sign up for.
Install it
Download Expando. Open the disk image, drag Expando to Applications, and open it from there.
It lives in the menu bar, and a sample library is ready to type at: ;sig then Tab.
Allow two permissions
- Input Monitoring
- To notice that you typed an abbreviation. Expando watches for its own and nothing else, and no keystroke is written anywhere.
- Accessibility
- To swap the abbreviation for the snippet in the app you are typing in, and put the caret where the snippet says.
The welcome window asks for each one, and expansion starts the moment both are on, with no restart.
Bring your snippets
Open the editor and choose File, then Import… It reads an installed TextExpander directly, finds library files anywhere on the Mac, or takes an export from Typinator, Espanso, Alfred, Raycast or macOS Text Replacements.
Nothing you have changes, and a backup is taken first.
Pricing
One price, paid once.
One price for every Mac on your Apple ID. No subscription and no account, and it works offline.
- Every Mac on your Apple ID
- Works offline
- 14 days free first, everything on
- 14-day refund, no questions
Sold by High5 Labs through Paddle.
| Expando | The other guys | |
|---|---|---|
| Price | $33 once | $60 a year for unlimited snippets |
| Account | None | Required |
| Snippets | On your Mac | Synced through their servers |
| Stop paying | Keeps working | 5 snippets stay active |
Questions
Before you buy.
Do I have to keep paying?
No. Expando is $33 once, and that includes 2 years of updates. After that it keeps working on the last version released in those 2 years, and newer versions are yours to renew from inside the app if you want them.
What happens when the trial ends?
Expansion pauses until you enter a license key. Your snippets, the editor, search and export all keep working, so nothing is lost while you decide.
Does one license cover my other Macs?
Yes: every Mac signed in to your Apple ID. Paste the same key into each one. Moving to a different Apple ID? Release the license in Settings, then License, and activate it there.
Can I get a refund?
Yes, within 14 days of buying, no questions asked. Write to support@expando.app, or ask Paddle, who took the payment.
What leaves my Mac?
By default, two things: claiming your license once, through your own iCloud account (a hash of the key and an id that means nothing outside Expando, and nothing else), and the daily update check, which sends the version number only and can be turned off in Settings, then About.
Everything else is off until you turn it on: sync, through your own iCloud with snippet groups encrypted end to end or through a folder you choose, and AI snippets with your own Anthropic or OpenAI key, which send only that snippet’s instruction while it expands. No analytics, no crash reporting, no account.
Hear what’s new.
The Expando newsletter: new features as they land, and the occasional discount. Every email has a one‑click unsubscribe.