I'm a long-time (~4 years) user of TextExpander, and I've been unhappy with TextExpander even before the pricing change. I'm leaving this as a lowest-score review for many reasons. Even before the new price gouging, they'd still only have gotten 1 or 2 stars from me.
Here are just some of the reasons TextExpander is awful:
- They charge high upgrade fees for barely any new features.
- The most exciting new feature was support for Javascript in their snippets.
- But TextExpander's expansion of Javascript-based snippets is ridiculously slow (about 5-10 seconds on a non-SSD, about 2-5 seconds on an SSD), which I guess is because it reads/writes some temporary files to disk and then reads the script output from that temp file. Or maybe it's because of how it launches Apple's "osascript" program. Either way, it's sloooow at doing advanced scripting.
- And it only supports AppleScript and Javascript, so forget doing something super advanced (i.e. downloading a webpage, scraping some content and outputting the result).
- And including snippets inside of each other is horribly poor. When I needed several advanced snippets to share advanced code, I ended up with a very ugly, hacked-together system of cross-references that simply looked horrible and slowed TextExpander's expansion to a crawl.
- Furthermore, another annoyance during regular text expansion is that whenever you use their "cursor placement" operation, the text cursor *crawls* to that location one step at a time. It's been annoying me but I assumed there was no other way.
When I found an email in my inbox talking about TextExpander 6 and "subscription model at $5 per month", I nearly puked in my mouth. I wasn't surprised, though. It's *exactly* what I expected from a company adding 1-2 features and gouging users for $20 each year for "upgrades" that frankly are mini-features at best. And now the only new feature in "v6" is that they removed the Dropbox/iCloud syncing features and added their own subscription-based syncing cloud. Allow me to reciprocate the giant "FU" back to TextExpander, since they just spat in the faces of all users.
To thank them for their disgusting behavior, I will now compare them to their two primary competitors and show how TextExpander falls behind both of them. I'd never tried the competitors before, but I am incredibly glad I did. It gave me everything I was lacking in TextExpander and more.
First out was aText.
- Only $5. Woah!
- It supports scripting in ANY shell-language (you just choose "Shell script" as snippet type, and type something like "#!/usr/bin/env php" at the top line to make a PHP script, for example). This feature allows you to do what I described earlier; i.e. you could write a script that downloads a webpage, finds some text on it, and uses that text as part of the expansion.
- Script execution is faster than TextExpander, but still slightly slow (~1 second), because aText takes the script-text and generates a script-file on the fly and executes it. It'd be faster if it stored them statically on disk. But if you don't need the shell scripting features, or use it rarely, you won't care about this minor slowdown. And like I said, it's still much faster than TextExpander's scripting, and supports any language.
- Telling a snippet to place the text cursor in a specific location is as slow as TextExpander; it moves one character at a time, which means it takes a fraction of a second after expansion before the cursor is in the right location. But if your snippets never tell the cursor to move (most people don't), this is not an issue for you.
- It supports EVERY TextExpander feature (including things like fill-in forms with dropdown/text input, and Dropbox syncing).
- For $5 (the cost of a single month of TextExpander's bullsh.t), you get all the same features and a permanent aText license. This is a FANTASTIC replacement for TextExpander for anyone not requiring *fast* shell scripting. I estimate that most regular users will only need aText and will be very, very happy with it. The interface is beautiful, by the way.
Lastly, the winner of the pack. Typinator.
- About $22 with the current 25% discount for TextExpander crossgraders, and that includes a free upgrade to Version 7 in the future.
- Full Dropbox (and others) syncing of your snippets and shell scripts, simply by moving the "Sets" folder location to a cloud-synced location like your Dropbox folder. Any changes to the files are instantly detected by all Typinator apps on all computers, even when it's running at the time. This is a far cry above the unreliable sync that TextExpander had.
- Shell scripts are literally shell scripts. They're stored in a special "Scripts" folder, end in ".sh", and are marked executable. This means you can use your full, syntax-highlighting text editors to write long, advanced scripts that have full access to the web, your filesystem, etc, so that they can do very advanced things.
- Shell scripts execute *instantly*. This is thanks to Typinator just needing to execute the script and capture the output (unlike TextExpander which runs osascript and uses temp files, and aType which must write the script to a file before executing it). I made a PHP shell script that outputs the current date, and Typinator expanded it in about 100ms every time, even on a non-SSD. My jaw dropped. This finally gives me access to super fast scripting in my snippets, allowing me to do things like a web scraper that pulls down prices and outputs the latest up-to-date price.
- You are able to use regular expressions as your snippet type, which means that you could use something like "(ee|rr|nn)name" as your "abbreviation" and a single snippet will react to eename, rrname and nnname, and your snippet itself can be script-based and use the "ee", "rr" or "nn" portions to determine what to output based on how you typed that abbreviation. This is great for snippets where you want tiny variations in output. It's also great for things like currency formatting (make a snippet that reacts to a sequence of numbers followed by some special characters, and make it grab those numbers and format them and output them).
- Shell scripts can receive arguments, i.e. "{Scripts/Test.sh what}" to send "what" to the script. That makes it easy to re-use the same script across multiple snippets and give it an argument that tells the script to slightly adjust the output based on what snippet is executing it. Heck, you can even execute the same script with different arguments via a single snippet by using Typinator's regular-expression text snippets, to capture custom input every time, like "{Scripts/Test.sh $1}" to send it the 1st captured regular expression argument (that you typed) from a regex-based abbreviation.
- Typinator includes built-in functions like regex replacements inside of your snippets which lets you do many advanced things without ever needing to create a shell script at all. For instance, I made a Regular Expression snippet with "([0-9]+(?:\.[0-9]+)?)xx" as the pattern, and set it to Plain Text and wrote the following as the text replacement just to test it: "Please pay me \${/Regex /[0-9]/1//$1/}!". The result is that if I type "293.22xx", it expands to "Please pay me $111.11!". That was just a test of the built-in regex replacement function, which in this case replaces all digits with the number "1". There are many built-in functions and I am very impressed.
- Fill-in forms, dropdown menus, variables etc are fully supported and work better than TextExpander ever did. The popup window is faster, clearer and only asks for the field values (instead of showing all the distracting boilerplate text too).
- The "place text cursor at location" feature is instant. It just jumps directly from expansion to placing the cursor at the correct location. It's a godsend since I use lots of snippets with text cursor placement and it's wonderful to be able to keep typing instantly after expansion, instead of waiting for the cursor to move (like with TextExpander and aType).
- The Typinator language is very easy; all functions are within {} brackets, and you learn them quickly. For instance, {"xxdate"} would include the contents of the "xxdate" snippet, etc. It's therefore super easy to include snippets in each other, etc. Even script-based and input-form based snippet inclusions work perfectly.
- The company has an unbeatable track record of excellent OS support and stability year after year for all of their applications, and friendly customer support.
So... to sum it up:
- Buy aText if you don't need shell scripting and don't care about moving the text cursor fast (most people don't use "move text cursor" features in their text snippets at all so they won't notice or need this). It's just $5 and supports everything that TextExpander supports.
- If you need extremely fast shell scripting, cursor movement, powerful built-in functions (like regex text replacement), and *mindblowing regex pattern matching as your abbreviation triggers*, buy Typinator.
- Never again give a single cent to TextExpander. They've shown their greed and they're not even the best on the market. Typinator is light years ahead in power and speed.