Review: TextExpander
Today, we take a look at TextExpander, a text snippet/text replacement app for macOS, iOS, iPadOS, and Windows. The idea is simple:
You define longer text snippets or text templates such as pre-written emails, article skeletons, some message you send out regularly; and then define a text shortcut for it. TextExpander will run in the background and replace it, if you ever type one of those shortcuts. There are more advanced features like automation, placeholders, or collaboration, but this is the gist.
In this review I'll first introduce the app, show all noteworthy features, discuss what I think of them and how I use it (as I am a customer of this app for a couple of years.) Lastly, I'll discuss some strengths and weaknesses of this app so you can decide whether it might be worth your time.
Summary of TextExpander
Powerful advancecd text snippets for desktop platforms.
Subscription pricing. Not that powerful on mobile platforms.
$39.96/year for individuals
Tested platforms: macOS iPadOS iOS Windows
This review tested the following versions: macOS: 7.2, iOS: 4.6.x, Windows: 7.2.
Text Snippets
What are text snippets?
So, TextExpander is an app around, well text expanding. The idea is simple, so simple that it's actually a basic functionality already built-in into macOS and iOS:
When you type "omw" the OS will now replace those words with the suggestion "On my way!". So far so good, so why do you need another, paid, app for this, if it is already built-in into macOS?
Well, TextExpander comes with a lot more customizability and options for this. First of all, it's not just for single phrases or abbreviations, but rather allows for creating long-form templates, such as e-mails, longer messages, or even things like articles or blog-posts, if you happen to have a strict formatting on those.
Here's an example:
It's a snippet for replying to comments on this website. I can copy somebody's name, then type ".pnetcomment" into the reply field and it will give me the template for writing the comment -- with (a) the username already inserted into the "(Clipboard)" placeholder, and (b) the cursor already positioned in a way that I can quickly continue typing:
Functuality like this is not available in the built-in text replacement of OSes, but rather need extra software, like TextExpander.
Overall, this is the idea, but the app goes a bit further, allowing things like placeholders, pre-defining values, automation and scripting capabilities, collaboration, and so on.
Pricing
TextExpander used to cost about fifty bucks per platform per major release, charging for updates. However, there's only so much you can do when it comes to text expansion. While new features are rather rare, the company develops bugfixes for newer OSes, maintains servers for collaboration, and so on. Therefore, they switched to a subscription model to be more sustainable.
Feelings about subscriptions aside, it is now the only way you can get TextExpander. The new pricing is about fourty bucks per year for an individual, although there are regular discounts and coupons (Actually, my affiliate link also includes a small discount.) There are also pricier plans targeted at teams and companies, which include some extra collaboration features and such.
With a subscription, you get full access on all platforms including macOS, iOS/iPadOS, and Windows, as well as Web access and synchronization functionality.
Is the price worth it for a utility app? Well it is hard to say. It depends on how much you use templates or text snippets, and whether it can be integrated well into your workflows.
For me, its usage is vastly fluctuating. I often have months where I don't touch it at all. But then there's some single event where I have a mundane programming task involving lots of copy and paste; or some e-mail announcements where I need to template a few hundred emails to conference participants. Then, the app absolutely saves my day. Sometimes I cancel it, but then come back to a yearly subscription on the next occasion.
While similar automation can be achieved with other apps or sometimes even simple scripting skills, TextExpander snippets shine through its easy to use snippet editor. Well, for me the simplicity, in the end of the day, makes me come back to it despite its pricing point.
TextExpander in detail
So, let's go over some features of TextExpander in more detail.
Placeholders
As the previous example already hinted at, aside from simple text snippets like putting a pre-defined texts, some greetings, and alike, TextExpander comes with some more advanced tools for templating.
Let's say you have a template which stays close to a pre-defined text, but you need to fill in a couple of placeholders like customer names, some specific prices, or alike. The template engine in TextExpander allows you to pre-define such "variables", which will then be able to be filled out every time you use that snippet.
For example, in this snippet which I prepared for a job, I needed to ask a lot of people about their scientific papers. The text was the same for every message, but there were some specific numbers which were different for each individual message. I needed to repeat this message over and over, but always with different numbers:
I defined two "placeholders" called "#CMT" and "#Paper" which show up in the pill-like formatting. Essentially this means, that now TextExpander will ask me what to put into those, every time I use the snippet. It looks like this:
After clicking "OK" it will proceed and put it into the current document, the current e-mail, the current Slack message, or whereever I started typing out the snippet shortcut.
Sure, I could have just done a normal text snippet and fill-in those numbers myself. However, I might forget one field, or put it in the wrong location. Using this kind of template, it will specifically ask me for the input of each specific field, and make sure that the final email fits my intended formatting.
Here is another example from the pre-existing examples available when installing the app:
In this example, they have a pre-defined e-mail template which contains a couple of open fields, like a customer name, a donation amount, and so on. Similar templates can be very helpful if you work with customers and have many pre-defined templates or often used replies, which you need to type or copy over and over.
Note, that there's a drop-down field in the right picture. TextExpander allows you to pre-define open text fields like the person's name, but also allows you to pre-define "possible entries" or dropdown boxes. In this case, a selection of funding use-cases:
Other than this, there's also a handful of useful "pre-defined placeholders" like dates, time, weekdays, months, etc. Therefore, you can create snippets like "today's date", or those for other arbitrary dates like templating a "deadline" snippet with some simple math: "MM-DD-YYYY + Add one Month" which would result in the date for one month from today.
Last but not least, there are placeholders for things like "put the cursor here after the snippet" and "put the current clipboard here", as shown in the introductory example above. The former is helpful for things like emails (i.e., putting the cursor between introductory greetings and the signature). The latter is interesting if you want to insert the current clipboard contents into some pre-defined snippet text (again, shown in the above example where I use it to insert the username into "Dear <Clipboard>,")
Rich-text
While my previous examples all basically work with plain text, you can also switch the editor to rich-text formatting, which allows snippets with Word-like editing such as Bold/Italic/Underlined texts and so on.
Even more advanced scripting
To unleash the full automation potential, on desktop, TextExpander also allows for putting AppleScripts, Shell Scripts, or JavaScript into a snippet. With this, you can basically run arbitrary scripts or programs directly from typing text snippets within random applications.
Reading the documentation for it;
- For JavaScript, the most appealing use-case seems to be stuff like advanced text-manipulation or adding "logic" like if/else statements or loops in your snippets.
- For AppleScript, the main appeal seems to target at connecting TextExpander automations to other apps, potentially grabbing context or contents from other open applications.
- Lastly, a shell script is probably the "most open" and probably also the most insecure option. Here, you can basically do whatever you want using UNIX command line tools.
To be honest, while I love that these features are available, I have not found really compelling use-cases for it yet. Also, you would need to have existing knowledge of one of those programming languages, or trust people and download their pre-defined scripts from the Web.
Other features
Organizing snippets
Snippets can be sorted into "groups", i.e., by topic or use-case. This is essentially like folders in other apps. While this is mostly for organizational purposes, it also allows some extra settings to be set per-group.
For example, you can make all snippets in a certain group only be usable in certain apps. Or, you can change the activation behavior, like whether whitespaces are needed before the snippet code or not, can be tweaked per-group.
If you have an individual account, you have two categories of groups: yourself ("Personal") and one for "Public" which allows for downloading public groups from the TextExpander website.
I assume if you have a team-oriented or business-oriented account, it is possible to have different group-groups for different teams, which would share between those team users, allowing for collaboration of common snippets. However, I have not tested those as I use the app for individual use only, so I cannot comment on it.
Syncing
There is sync across platforms through the TextExpander server. As you need to be logged in to use the app, it is basically unavoidable to use it in the first place. It will sync your snippets across all apps, and also allows for snippets be browsable through the web-interface on the TextExpander website.
The sync speed is OK. It's not instant but edits on one machine usually appear on the other within less than a minute or so. If you edit the same snippet on both machines, it will also detect conflicts, which can be resolved from within the app:
Stats
TextExpander will aggregate stats for you, i.e., how often you use snippets and how much time those snippets have saved you (in comparison to fully typing out those letters.) There's a weekly and/or monthly report option which will send you an email with your statistics:
As well as a statistics section on the website:
Well, it's not really too much of a feature as it's mostly marketing for themselves: TextExpander reminding you of how much you use them in order to emphasize that you should continue to pay for a subscription ;-). But I guess, it's still interesting to know sometimes, and maybe some lite form of gamification?
Suggested snippets
While at the topic of keeping stats: TextExpander will also track what you type during the day. Then, based on your "typing habits", it will recommend you snippets for phrases which you often type.
(Yes, this sounds pretty scary to be honest, but it can also be deactivated, either fully or on a per-app basis. It will also automatically stop tracking any inputs if you are in password fields or alike.
Keep in mind, that the app, by nature, will need to track all your inputs, so it will be able to detect when you type a snippet abbreviation. So, in gist, the setting on whether you want "suggested snippets" will just toggle off whether it will analyze your typing habits or not; but it will still track all inputs.)
Preferences
In the preferences menu, there's a couple of extra things to setup, mostly regarding keyboard shortcuts, the "snippet suggestions" feature, and defaults for new snippets or groups:
Different platforms
Now, so far all seemed pretty useful, and if you read so far, it seems you are interested in the templating features of TextExpander across your devices.
Here come's the catch: The TextExpander apps for desktop operating systems (i.e., macOS or Windows) are very powerful and show all the capabilities shown above. The mobile apps (i.e., iOS and iPadOS), are basically gimmicks or companion apps in comparison. Let me elaborate.
Powerhouse for macOS or Windows
As powerhouses, TextExpander is available for both macOS and Windows. It used to be an Apple-only ecosystem app, but has been ported over to the Windows world in recent years.
While most screenshots so far in this article were taken from the macOS app, the Windows client is pretty much identical. It runs, works and looks essentially the same as on macOS. Similarly, it allows text snippet expansions across all apps.
For completeness, here's some screenshots of the Windows client:
The whole UI seems a direct port from the macOS variant. Funnily enough, it even shows you, and let's you edit, AppleScript snippets. Of course, they won't run on Windows, as AppleScript is only available on macOS.
Otherwise, from normal text snippets over placeholders up to JavaScript, most features are available in the Windows client, too. So, from what I have seen, in the most current version (7.2 at this time), Windows is more or less feature complete except for AppleScript.
Chrome
There is also a Chrome extension which allows one to run TextExpander directly inside Chrome. Of course, if you work from macOS or Windows, you might as well use those native clients which provide better integration, as well as, most crucially, being able to use snippets in applications other than Chrome.
However, the extension might be useful if you (a) work on ChromeOS, or (b) are not allowed to install third party applications on your (corporate) environment but can install Chrome extensions.
Restricted mobile platforms
Now, let's discuss the problematic mobile app.
First of all, this is not really TextExpander's fault: The mobile platforms simply do not allow developers to have the same level of OS integrations than, let's say macOS or Windows. There's no APIs for cross-application interactions, and things like keyboard events cannot be tracked or interjected as it is possible on the macOS client, if only due to sandboxing restrictions (but probably also many more other reasons.)
So what does that mean for TextExpander? Well essentially the app cannot work. It simply is not possible to provide a text expansion functionality through a third party app like TextExpander in the way it can be done on Windows and macOS. So if you want text expansions through all your apps in the same convenient way, you are basically out of luck.
However, TextExpander found two workarounds.
Workaround 1: Software Keyboard
There is a "software keyboard" option available, which is added by TextExpander. You need to activate this keyboard in the iOS/iPadOS settings, similar as you would add a keyboard for a second language, say German or Japanese. Then, you can use the "language switcher" button to switch to the TextExpander keyboard.
This software keyboard will use snippets, and it can be used in any application. It does not work well with fill-ins or placeholders, but can basically be used for long-scale text replacements (i.e., inserting your greeting or article skeleton with a shortcut). Next, it does not support most features of other preinstalled keyboards, like swipe-typing or non-English autocorrections. Lastly, well, it looks pretty ugly. It is better than nothing, but honestly probably not worth to switch to.
Of course, because it is a software keyboard, on iPadOS it will also not work for external keyboards, bluetooth keyboards, or foldable keyboards.
Workaround 2: TextExpander SDK
This one is the better option for using TextExpander on iOS/iPadOS. TextExpander provides a programming kit which allows other app developers to basically add support for TextExpander. This is, of course, not available for arbitrary apps, because the developer of each app needs to manually adjust their app to make it support TextExpander.
Still, there's a growing list of so-called "TextExpander-Enhanced Apps". It includes apps like OmniFocus, Drafts, Bear, Fantastical, DevonThink, and so on. The supported features vary by app, but it makes for an experience closer to those on macOS or Windows.
Using one of these "TextExpander-Enhanced Apps", you now have access to functionality from the desktop clients such as rich-text formatting, parts of the advanced functionality including placeholders, fill-ins, and so on. There's still no proper scripting, though. Still, it's the closest of what TextExpander on Mobile will get to the macOS app.
Use-cases
In the following I will discuss some ways I use this app. Maybe as an inspiration for your own snippet groups; or just to help you consider whether to try this app. I discuss two use cases. First, "daily use" is stuff I use all the time to abbreviate things. Second, there's the once in a while cases where I use TextExpander for some specific single job, and it really helps me to get it done.
In daily use
For emails, I have moved common greetings to TextExpander. In English, this would be stuff like "Thank you for your inquiry!" or "Yours sincerely, <Name>", etc. As my day job is in Japan, I often write e-mails in Japanese, which includes quite a few of such honorific phrases scattered over each email. I use textexpander for a pre-defined selection of those.
For webdev, I actually also moved some coding-related text snippets to TextExpander. If working on a website in Hugo, images and other content often get included through codes like {{ image "picture.png" }}
. I have a category of Hugo shortcodes which I can access through TextExpander shortcuts.
One somewhat rare yet interesting use-case: I speak Esperanto and am often typing messages in this language. As a constructed language with few speakers, there is no good OS support for this language and macOS does not support typing the characters easily. However, I added a section of TextExpander snippets which helps me write characters like ĉ or ŭ.
Once in a while life-saver
Ok, so let's discuss a use-case where TextExpander was very close to a life-saver for me. In Autumn 2020 I was involved in a publishing job for a conference, essentially doing communications with authors, asking them to do paper revisions or confirmations on details for each paper.
With about 250 papers in total, there were a lot of things to communicate. Quickly, I came up with a dozen of "common issues" which I needed to contact authors about. Some of them a single clarification, some of them multiple at once. It quickly became a job of needing to write approx. 150 customized emails to different authors (aggregating to up to 350 when including follow-up emails and so on.)
I created a group of TextExpander snippets. One or two "email skeletons" which basically included a "Hi I'm Marc and work for this conference. I want to clarify the following things: <Cursor position>. Greetings, Marc" kind of default template.
Next, I created a 1-2 liner snippet for each "common issue" I wanted to clarify:
With this I now could simply type out 2-3 TextExpander snippets in a row, first creating the default template and then add several oneliner ones, each individually for each specific case. Using this, I wrote all 150 customized emails in an afternoon, quickly finishing my job and getting back to other things on my todo list.
Summary
So, this is my review on TextExpander. It is a helpful yet pretty expensive app for text replacements. For 40 bucks a year, you get text snippets with advanced templating and scripting support with an easy yet powerful editor.
On macOS or Windows, it might be worth it if you do lots of templating, or work with pre-defined text or often reoccurring snippets. On mobile platforms, the app is not really worth it for sandbox reasons. The developers tried their best to have some support, and if you happen to use those "TextExpander-Enhanced Apps" supporting the TextExpander SDK, then it might be still worth investigating it, as it gives you the same "muscle memory" on your Mac and iPad. ;-)
Overall, for me this app does not shine for daily use (I tend to type out most stuff anyway,) but there's once in a while occasions where this app becomes a life-saver for me.
Strengths
- Powerful text snippet manager.
- Allows for dynamic placeholders with simple editing.
- Advanced scripting up to running AppleScript, JavaScript, and Shell Scripts.
Weaknesses
- Subscription-based pricing might be off-putting for many users.
- Privacy considerations when installing an app which, by nature, will track all your keyboard inputs.
- The functionality is very weak on mobile.
Summary of TextExpander
Powerful advancecd text snippets for desktop platforms.
Subscription pricing. Not that powerful on mobile platforms.
$39.96/year for individuals
Tested platforms: macOS iPadOS iOS Windows
This review tested the following versions: macOS: 7.2, iOS: 4.6.x, Windows: 7.2.
Screenshots
Disclosure: This post may contain affiliate links. This means I may make a small commission if you make a purchase.
About me
Dr. Marc A. Kastner
I am an assistant professor working on computer vision and multimodal understanding. I am interested in task- and knowledge management. In my free time, I blog on productivity workflows and apps.
For my professional portfolio, please visit: marc-kastner.com