TextExpander charges you about $40 a year, billed annually, to replace text. Type ;addr, get your address. Type ;sig, get your signature. It's a macro engine, and a good one - but it's a subscription for something that is, mechanically, a lookup table that pastes strings into text fields.

I ran the math on that subscription before writing this. Forty dollars a year, every year, for a feature that hasn't fundamentally changed since the early 2010s. The expansion engine is solid and the cloud sync is genuinely useful. But the recurring cost for static text replacement is the tension that sends most people looking for an alternative in the first place.

ToolPiper does the expansion on a free download, imports your .textexpander library on day one, and adds AI transforms that run on your Mac. Type a trigger, get text - same muscle memory. Select a paragraph, tap the right Command key, and a local language model rewrites it. That second part is the thing TextExpander doesn't do at all.

This article is fair about where TextExpander still wins. If you sync snippets across a Mac, a Windows laptop, an iPhone, and a browser, or you run a shared team library, keep reading to the honest-tradeoffs section - those are real strengths and ToolPiper doesn't match them yet.

What does a text expander actually do?

A text expander watches what you type, recognizes short abbreviations you've defined, and replaces them with longer text. Type a trigger like ;addr and the expander deletes those characters and inserts your full mailing address in their place.

That's the whole concept. The value is in the time saved typing things you type constantly, like addresses, signatures, boilerplate replies, code snippets, and meeting links. A good text expander matches the longest trigger first (so ;email and ;em don't collide), handles cursor placement (drop a marker where you want the cursor to land after expansion), and resolves dynamic values like today's date at the moment you expand.

ToolPiper does all of that. Typed delimiter-plus-abbreviation triggers, longest-trigger-first matching, cursor placement via a %| marker, and case-sensitivity modes (sensitive, ignore, or adapt to how you typed the trigger). The trigger has to be flanked by whitespace or punctuation to fire, so a snippet bound to ;fix never triggers in the middle of the word ;fixed.

How is ToolPiper different from TextExpander?

ToolPiper is a free download that does the same trigger-based text expansion as TextExpander, then adds two things TextExpander has no equivalent for. It rewrites selected text using a language model on your Mac, and it ships a built-in clipboard manager with history and OCR. The trade-off is that ToolPiper is macOS-only with no cloud sync or team libraries.

The static-expansion overlap is close to complete. Where the two diverge is the AI layer and the pricing model.

The AI transform is the real wedge. Select a sentence, tap the right Command key (a press-and-release under 250ms), and ToolPiper replaces the selection with a rewritten version. It tries Apple's on-device model first via Foundation Models, then falls back to ToolPiper's local language model over loopback for longer inputs. Twelve transforms ship built in. The set covers ;fix, ;formal, ;casual, ;concise, ;expand, ;simplify, ;bullets, ;summary, ;tldr, ;active, ;email, and ;rewrite. You can chain them - ;fix ;formal runs in document order, fix first then formal, up to four stages, and aborts on empty output so a bad transform never eats your text.

TextExpander's snippets are static. They paste what you stored. There's no model in the loop, so there's no "clean up this paragraph" or "make this more formal" - those aren't things a lookup table can do. That's not a knock on TextExpander, it's just a different category of tool. ToolPiper happens to do both categories in one app.

What dynamic values does ToolPiper support?

ToolPiper resolves 11 dynamic values at the moment you expand a snippet: the date in several formats, the time, your name, your email, the computer name, and the frontmost app name. These are computed live, not stored.

Type ;today for the long-form date, ;date for short, ;time for the current time, ;now for date and time together, ;iso or ;timestamp for ISO 8601, ;name for your full user name, ;login for the short user name, ;myemail for your license email, ;host for the computer name, and ;app for whatever app is in front. Drop any of these inside a larger snippet and they resolve when you fire it. A meeting-note template that stamps the date and the app you're in writes itself.

Can I import my TextExpander snippets?

Yes. ToolPiper imports TextExpander's .textexpander export file directly, along with Raycast JSON exports and generic CSV. Your triggers, expansion text, and cursor-placement markers carry over, so switching doesn't mean retyping your library.

This is the part that makes switching low-risk. Export your snippets from TextExpander to a .textexpander file, open ToolPiper's import dialog, and your library lands intact. The static snippets work immediately. The dynamic-value snippets map to ToolPiper's own dynamic utilities where they line up. The AI transforms are new - you create those fresh, but the twelve bundled ones cover the common cases out of the box.

If you came to TextExpander from Raycast snippets at some point, ToolPiper reads Raycast's JSON export too. And if your library lives in a spreadsheet somewhere, CSV import handles that. The goal is that you don't rebuild your snippet library to switch - you bring it.

How does the AI rewrite stay private?

The AI rewrite runs on your Mac. ToolPiper sends the selected text to Apple's on-device model or to its own local language model over a loopback connection, gets the rewrite back, and replaces your selection. The text never leaves the machine, and you can confirm that by watching network traffic while you trigger a transform.

This matters more than it sounds like it should. The obvious alternative to ToolPiper's local transforms is pasting your text into ChatGPT or Claude to clean it up. That works, but every paragraph you paste is a paragraph that travels to a server you can't audit. For a casual sentence, who cares. For a client email, a contract clause, or anything with a name in it, the calculus changes.

With ToolPiper, the transform runs locally, so the question of what a remote service does with your text doesn't come up - there's no remote service. We're not asking you to trust a privacy policy. The verification path is a packet inspector. Run one, trigger a ;fix, and watch nothing leave your Mac. The structural fact about cloud rewriting tools is that the text has to arrive at their servers for them to process it. We let you check that ours doesn't.

One precise note, because we'd rather be exact than oversell. The action-snippet selection capture checks the focused element's accessibility role and refuses to read secure or password text fields, failing closed if accessibility access is denied or the check times out at 250ms. The action pipeline never reads your clipboard either - the selection is the only input. App-aware suppression for typed snippet triggers is not built yet, so we don't claim snippets never fire inside a password manager. The action-snippet path is the one that probes secure fields today.

What else does ToolPiper do that TextExpander doesn't?

ToolPiper bundles a clipboard manager and push-to-talk dictation, neither of which TextExpander has. The clipboard manager keeps a searchable history (200 items by default, configurable from 50 to 2000) with image OCR and source-app tracking, and the dictation drops spoken text into the focused field on-device.

It's a clipboard manager. ToolPiper keeps a browsable history of what you copy - 200 items by default, configurable from 50 up to 2000 - with fuzzy search across the text, any OCR-extracted text, the source URL, and the source app. Copy a screenshot and Apple Vision OCRs it so the text inside the image becomes searchable. It tracks where you copied from, including the browser tab URL for Safari, Chrome, Firefox, Arc, Brave, Edge, and Vivaldi. Items auto-categorize into eight types: text, URL, email, code, JSON, file path, color, and number.

The history is privacy-aware on capture. Concealed, password, one-time-password, and transient pasteboard items are skipped, and 1Password, Keychain, LastPass, and Dashlane are on the ignore list by default, so your password-manager autofills don't pile up in clipboard history.

There's also push-to-talk dictation. Hold the right Option key, speak, release, and the transcript lands in the focused field at roughly 140ms end-to-end latency, running on Apple's Neural Engine. The push-to-talk, voice chat, and snippet expansion paths are interlocked so they can't collide. That's a different workflow than text expansion, but it's the same idea - get text into a field faster - and it's covered in our push-to-talk dictation writeup. None of this is in TextExpander's scope, which is fine. TextExpander is a focused expansion tool. ToolPiper bundles the adjacent jobs.

When is TextExpander still the right call?

TextExpander wins when you need cross-platform cloud sync (Mac, Windows, iOS, and web), a shared team snippet library, or a hosted service with an admin console. ToolPiper is macOS-only and local, so it can't match any of those three. If you need them, TextExpander earns its subscription.

Three cases, and they're real.

You sync across platforms. TextExpander runs on Mac, Windows, iOS, and the web, with cloud sync keeping your snippets identical everywhere. ToolPiper is macOS-only and local - no sync. If you type the same snippets on a Mac at work and a Windows machine at home, or you need them on your phone, TextExpander does something ToolPiper does not.

You share a team library. TextExpander's shared and team snippet libraries let a whole organization pull from one source of truth - support teams use this heavily for canned responses that stay consistent and update centrally. ToolPiper has no team-sharing layer. Your snippets are yours, on your Mac.

You specifically want a hosted, managed service. Some teams want the snippet library backed up and managed off their machines, with an admin console and billing they already understand. That's a legitimate preference, and it's what the subscription buys.

If none of those describe you - if you're one person on a Mac who wants fast expansion and would rather not pay annually for it - the free local tool is the better fit. If they do describe you, TextExpander earns its fee.

ToolPiper vs TextExpander

Here's the honest side-by-side. The cells where TextExpander wins are marked plainly, because pretending otherwise would make the rest of the table untrustworthy.

Get ToolPiper

ToolPiper is a free download (DMG) from modelpiper.com. It needs macOS 26 or later and Apple Silicon (M1 or newer). It's not on the Mac App Store because the Accessibility and CGEvent APIs that text expansion needs aren't compatible with the App Store sandbox - the same reason TextExpander, Raycast, Alfred, and Keyboard Maestro all ship outside it. Install it, grant Accessibility once, import your .textexpander file, and your library is live.

This is part of a series on text, clipboard, and snippet workflows on macOS and the broader case for local-first AI on macOS. If you want the deeper dive on the expansion engine itself, see local text expansion on Mac.