• Home
  • /
  • Blog
  • /
  • TextExpander: The Simple Guide to Getting Started with Text Expansion

TextExpander and Asian Efficiency

As an Asian Efficiency reader you are mostly likely someone who spends a lot of time behind a computer keyboard. We are of the notion that if you do spend a lot of your time on a particular activity, you should explore options on being more efficient at it. If you spend a lot of time reading books, you might as well learn speed reading. Likewise, most knowledge workers spend a lot of time behind a keyboard, so they might as well be well-versed at using it. In this article we will show you how text expansion can make you more effective.

What is text expansion?

In short, text expansion software, such as TextExpander, allows you to type shortcuts or abbreviations and the software will substitute that with the desired text. For example, instead of typing “I hope to hear from you soon!” you could type “ihope” which TextExpander can automatically replace with the former sentence. You can customize your own abbreviations so that you can type faster by using less keystrokes. The predefined text that will be used for substitution, or snippets as they are called in TextExpander, will save you hours of typing every week.

Previously we have covered keyboard shortcuts that can make you more efficient and there was a hint at the end of using text expansion software. This will be the follow up on that. In this article I’m going to use TextExpander by Smile Software, a popular text expansion software for the Mac, to show you how it can make you more efficient. I highly recommend you try the trial of TextExpander and play around with it. This guide will help you get started.

Setup and Settings

Let’s assume you just installed TextExpander. The first thing you want to do is configuring it properly. The default settings will be fine for most people, but here are screenshots of some my settings that are relevant:

textexpander settings
Some of my general settings for TextExpander.
textexpander shortcut
Setting a shortcut for TextExpander is really useful. I highly recommend it.
textexpander backups
Backing up your snippets on a remote server is a good idea. Dropbox is perfect for this.

The next thing is organizing your snippets. As of now you will have a couple default snippets that came with TextExpander, but you will most likely get rid of them or customize them. What is neat about TextExpander is that you can organize your snippets with folders so you can group similar snippets. I highly recommend you setup the following folders:

  • General – your general repository of your snippets.
  • Tmp – This is where you will put temporary snippets or snippets you want to test.
  • Symbols – Place for all your snippets you will use for special characters and symbols.
  • Messages – Any snippet that you use for emails or any form of online messaging.
  • Contact – Great for when you have a lot of different contact info.
  • Code – Snippets of code go in here (for you developers and programmers who read this).

They will make more sense as you create more snippets and when I show you a couple that I use. You will thank me later for setting these up. Once you have 25+ snippets, it will be a blessing to have them organized nicely into groups.

textexpander folders
Folder structure to organize snippets.

Your First Snippet

Now that you’re setup, let’s create your first snippet. It’s going to be a very simple one: whenever you type “sig” it will substitute it for “-Thanh of Asian Efficiency”. Not that it is my signature, but this is just for illustration purposes.

This is how you setup the snippet. First, select the folder you want to save your snippet in. In this case it will be the tmp folder. Next press the “new snippet” icon to create a new snippet. The following screenshot explains how snippets work.

textexpander snippet
This is an example of a snippet. Notice the numbering in orange and arrows in red.

Note the following:

  1. You can set different types of snippets but for most cases you will use the plain text option.
  2. This is the body where you will put the snippet in.
  3. The label is the handle you want to give to your snippet. This not the actually abbreviation used for typing, but to make it easy for you to know what the snippet does. Make sure this is descriptive.
  4. This is the actual abbreviation you will use for typing. I always keep the default option of case sensitive.
  5. This is where you can find macros. These will be explored later in the article.

Now that you have setup your first snippet, type “sig” (without the quotes) and you should see now that it works.


Before I introduce any snippets, I want to show you how I use it which is a little different than how most people use it. I like to use prefixes, meaning I use special characters at the beginning of my abbreviations. This makes it easy for me to memorize snippets, but your mileage may vary. Here are my prefixes:

  • ; (Frequently used shortcuts)
  • # (Phone numbers)
  • ! (Addresses)
  • . (Symbols)

So for the previous example of “sig” I would use something like “;si” or “;sig”. Just because I like to use prefixes does not mean that you have to do it too. To me they just make sense (I used to be a programmer, maybe that explains it). The other prefixes will make more sense as you see them below. But let’s dive into the snippets, because that’s what you came for right?

TextExpander Snippets for Every Day Use

The best way to get the most mileage out of TextExpander is to populate your snippet library slowly over time. There is absolutely no rush to fill it up; let it grow organically. Below are examples of TextExpander snippets you can use for every day use and that will help you get started.

Phone numbers and addresses

I have a lot of different phone numbers due to my traveling and my numerous Skype numbers so that some people can call me at a cheap rate (wherever I may be). There is no way I can memorize all these phone numbers so that’s where I have TE help me. For phone numbers I like to use the hash tag (#) as my prefix and then the country code as per their TLD. So #uk would mean my UK phone number, #nl my Dutch number, and so on.

textexpander contacts
Snippets for contact info.

For my addresses I like to use the exclamation (!) symbol (I tried the @ sign but it’s problematic when you write a lot of emails) and then the country TLD too. So !nl means my Dutch address and !us means my US address.

Paste without style

I’m going to show you more about how to use special variables, or some people refer to them as macros, in TextExpander but to get you started I’m going to show you one of my favorite and most frequently used snippets.

Every day I need to copy-and-paste text but it nags me when I paste something and the styling remains as the original. In most cases I don’t want the original styling (especially when you’re copying text in i.e. MS Word or Pages). The workaround is to open a text editor, paste the text in there (so the formatting is removed), copy all of that and then paste.

That’s so inefficient.

A quicker way is to use a built in shortcut in OS X, which is SHIFT+CMD+OPTION + V which will paste anything without the formatting. That’s a little faster than the above. The downside is that it’s an awkward shortcut to use with your fingers and I have a hard time memorizing it. Fortunately, there is a quicker solution with TextExpander. It comes with a variable that contains whatever is in your clipboard: %clipboard.

textexpander clipboard
Paste without style with TextExpander with this simple snippet that uses a builtin macro.

By setting up the following snippet, all you have to do is copy the text you want (so it’s in your clipboard) and then use the snippet’s abbreviation to paste it so the styling is removed (because the default styling of snippets is plain text). Sweet huh?

Stock email responses

If you have to send out a lot of canned email replies, you definitely want to shortcut this with a snippet. Save often used emails in TE. From my experience, this will save you a lot of time. Later on I will show you how you can make those emails look custom tailored to the recipient with some neat tricks (hint: it will involve inputting variables throughout the email).

Lorem ipsum

Any web developer, or anyone who makes websites on a regular basis, will be familiar with the lorem ipsum text to fill up a web page with content. This is another great snippet to have.

Journal template

We’ve talked before about the importance of journaling where at the start and/or end of the day you ask yourself important questions to answer. I highly recommend you create a snippet with all the questions you want to address. Here’s mine:

textexpander journal
My current snippet for journal questions.

Common symbols and special characters

If you work with a lot of symbols or special characters, you need snippets for them. Using the mouse and inserting symbols or special characters is way too slow. For symbols I like to use the dot (.) as a prefix. Here are some I use, but I recommend you set up the ones you use the most:

textexpander symbols
Symbols and special characters are great for snippets. No more manual lookups.
  • .eur = €
  • .gbp = £
  • .™ = ™
  • .rr = ®

Verbs for tasks

As a reader of Asian Efficiency, we assume you use a task manager (such as Omnifocus) and use the best practice of starting of your tasks with verbs (see tip #5). You can shortcut this with abbreviations too:

  • ;wf = “Waiting for”
  • ;rp = “Respond to”

Populate this with your own verbs and style.

URL parameters

Anyone who regularly needs to tweak URLs to include certain parameters knows it’s tedious to type them. Memorizing all these variables and typing in those ampersands is tedious. This is another opportunity to shortcut your keystrokes with TE.

Ninja snippets with Macros

At this point you should have the basics down of getting abbreviations substituted with something else. Just implementing the snippets above and with some of your own will make you a lot more efficient. But, we can go a step further.

Fortunately, TextExpander has some extra features that can make text expansion look sexy. I have to warn you though, once you implement some of these you won’t be able to live without TE anymore and you will hate working on other people’s computers that don’t have TE. You have been warned! With that little disclaimer out of the way, let’s kick it off with introducing macros in TextExpander.

As you’ve read earlier, TextExpander comes with a couple variables or macros that you can use. A simple one was the snippet for pasting without any formatting that used the %clipboard macro.

Macros are very easy to use. Whenever you create a snippet, near the bottom of TE you will see this icon:

textexpander macro icon
This is the icon where you can find all TextExpander macros. Super useful!

This will open up the macros list and show you which macros you can use. For example, you can see below a screenshot of the macros for dates.

textexpander macro dates
All date macros within TextExpander.

Just selecting one will have TextExpander automatically insert them into the snippet. I’ll show you how powerful they are as we build out an email that will be customized. Let’s picture a scenario where you have to reply to a lot of inquiries about a specific product. The email responses tend to be the same, but you want to customize parts of the email because some of them are subject to change. Here is the draft of the email:


As of today (TODAYS_DATE) the products have been sold out. They will be available again exactly 3 weeks from today (3WEEKS_DATE). The price will be $PRICE and the shipping will cost $SHIPPING.

NAME, I hope you will still purchase the product by then.

-Jessica F.

The capitalized words are meant to be placeholders, or variables, that will be substituted. So in this email we still need to replace the name, today’s date, the date that is three weeks from today, price and shipping cost. I’ll show you how TextExpander can make this very easy.

Cursor positioning

Let’s make this email into a snippet that’s easy to use. You can copy-and-paste the above email verbatim and use that as a stock response, but each time you use it you will have to move your cursor around and replace the placeholders with something else. For example, you need to move the cursor back to replace the name of the recipient twice. Fortunately, TextExpander has a macro so you can decide where the cursor should be after the snippet has been called. This is the %| macro which means “place the cursor here after the snippet has been used”. So this becomes the revised email.

Hi %|,

As of today (TODAYS_DATE) the products have been sold out. They will be available again exactly 3 weeks from today (3WEEKS_DATE). The price will be $PRICE and the shipping will cost $SHIPPING.

NAME, I hope you will still purchase the product by then.

-Jessica F.

In this case I still have to move the cursor the change today’s date, the date three weeks from day, price, shipping cost and again the name. Fortunately we can make this process a lot easier.

Today’s date

TextExpander comes by default with a snippet that shows today’s date (type “ddate” to see it). That in itself is pretty cool but you will most likely customize this. Depending where you are located, you will use the date format differently. In the US it’s common to start with the month whereas everywhere else it’s common to start with the day.

Let’s improve this email with some macros to substitute the dates. The first one is today’s date. You can specify it in different formats, but to not confuse anyone let’s use the three letters of the month and the numeric day.

Here’s the new email:

Hi %|,

As of today (%b %d) the products have been sold out. They will be available again exactly 3 weeks from today (3WEEKS_DATE). The price will be $PRICE and the shipping will cost $SHIPPING.

NAME, I hope you will still purchase the product by then.

-Jessica F.

Another date we need to put in is today’s date (which changes depending when you use the snippet) and then exactly three weeks after that (t+21). It’s kind of a silly example, but it will help get the point across that you can manipulate dates with TextExpander.

In order to automate this, you need to use the “Date / Time Math” selection.

textexpander date math
You can do date manipulation very easily with TextExpander.

In this case, we need to add 21 days to today’s date. Select “Add day(s)” and TE will insert a macro: %@+1D.

%@ signifies a macro for date maths with the plus sign meaning addition. Replace that with a minus (-) and you get subtraction. The capital D means the days you want to add. The digit between the operand (add/subtract) and the time unit (year/month/days/etc) will be used for the calculation. By default, TE will use one. We have to change this to 21. What you have to remember is that now you have to add the macro formatting of how you want to format that newly calculated date. Just using %@+21D will not output anything. We will use the same macros as for today’s date and this is how the new email looks like:

Hi %|,

As of today (%b %d) the products have been sold out. They will be available again exactly 3 weeks from today (%@+21D%b %d). The price will be $PRICE and the shipping will cost $SHIPPING.

NAME, I hope you will still purchase the product by then.

-Jessica F.

This new email will now show correctly the date three weeks from today.

Multiple inputs and variables

We are almost done with the email. Now we need to be able to insert manually a price of the product and a quote for the shipping cost. Of course, by now you should know that we’re not going to use our mouse and cursor but we will have TextExpander help us. In this case, let’s assume the price changes frequently and the same goes for the shipping cost.

What we can do is each time we use this snippet, TE will ask us for the price and shipping cost, and insert them into the snippet. How cool is that? We can do this with the %fill macro.

textexpander fill-in
The fill-in macro allows you to use (multiple) inputs in your snippets.

The format of the macro looks like this:


You can substitute “label” with anything you like, but give it something descriptive (without any spaces). This is the final email template with the fill-in macros.

Hi %fill:name%,

As of today (%b %d) the products have been sold out. They will be available again exactly 3 weeks from today (%@+21D%b %d). The price will be $%fill:price% and the shipping will cost $%fill:shipping%.

%fill:name%, I hope you will still purchase the product by then.

-Jessica F.

Did you notice I removed the cursor macro with a fill-in macro? And the macros for price and shipping? When you use this snippet, you will get a popup where you have to fill in the details:

textexpander fill-in popup
You will see this pop-up asking for your input to be filled in for the snippet. In this case I already filled it in.

As you can see, the name is being displayed twice because it’s used twice in the email template. This fill-in macro is really useful and I highly recommend you play around with this. It has saved me many hours by now and it has made my templates look very personalized (which an effective communication method).

That wraps up this guide to using TextExpander. If you implement all of these tips and tricks in your snippets you’ll be without a doubt more efficient. Let us know in the comments below if you have any cool snippets to share!

You may also Like

Last Updated: March 14, 2023

Read More
Read More
Read More


Thanh Pham

Founder of Asian Efficiency where we help people become more productive at work and in life. I've been featured on Forbes, Fast Company, and The Globe & Mail as a productivity thought leader. At AE I'm responsible for leading teams and executing our vision to assist people all over the world live their best life possible.

Leave a Reply

Your email address will not be published. Required fields are marked

  1. Thanks for taking the time to cover such an amazing app with many great tips too.

    Big fan of TE, but realise I’ve only been using it to a small fraction of it’s potential.

    The clipboard tip alone is a lifesaver; always wondered how to do that and it’s caused so much frustration – until now!

    Cheers, and keep up the great work !

  2. I have just started using TE Touch on iPhone and iPad this weekend. I spent the better part of the weekend reviewing its integration with Phrase Express and Breevy, as I work in a PC environment and would like to be able to work at my desk, but also while on the go. I have found that with some tweaking, I can make Breevy work with TE Touch via Dropbox sync and have all of my snippets in every location. For those of us who still use Windows, this can be a pricey endeavor, as Breevy runs about $35 for a PC and TE Touch runs about $5 for iOS. I imagine, however, that I will see significant savings in the amount of time that I spend typing and retyping the same pieces of information over and over. That is just my two cents!

  3. I read of people that are looking for a Windows alternative.We are the author of PhraseExpander https://www.phraseexpander.com

    It’s similar to text expander but is very focused on creating templates that can be customized very quickly. This comes handy when you need to insert long pieces of text (very useful for reports).

    It can sync with dropbox as well.

  4. Does anyone know if there’s a similar tool for smartphones? I’m an Android user.

    I’m using Breevy and liking it every bit. Knowing that typing can be this easy, I’m wondering if something like this is also possible when typing on a smartphone.

    All suggestions are welcome. Thank you in advance!

  5. Great post! And I sure like to use it.

    The only problem is that my laptop is running on Windows. Do you know a good alternative for Windows which offers the same possibilities?

    Also Omnifocus isn’t availbale for Windows. Do you know a good alternative for that too?

    Thank you in advance!

      1. I just installed and configured Breevy. So far I’ve been able to apply everything you mention in this post to Breevy and I’m loving it!

        Thank you!

  6. Can anyone tell me how to have TE do some simple math? For example, I have a pop up selection with 4 options, and I have say 3 of these pop ups. Depending on what I select for each popup, I have a corresponding value. I want to be able to add up the values depending on what I have chosen. So for example, let’s say popup1 has 2 options, option X and option Y. option X is 1 and option Y is 2. Now, popup2 has 2 options, option P and option Z, each worth 3. If I chose X and I chose Z, I want another fill in to do the math for 2+3 and return the value.

  7. i love TextExpander. You presented some good uses too. I think it is interesting how individuals preemt their snippets. I use a backslash. Others use two periods.

    I wrote to the Text Expander people about whether or not we can add underscores instead of spaces in our snippets. They said, “no”. So I just continue to use my TE & Hazel combo on file names. I would love it though, if there was a way to make web server-friendly file names right in Text Expander.


  8. I would like to make a snipped with formatted text. Part of it is bold, part is centered and part is italic. How can I make such a snippet that keeps the formatting when I add it to an email? Thank you!

    1. Hi Bruno,

      Make sure you select the Rich Text option when you create a new snippet. Then copy and paste the text into the new TextExpander snippet and that should do it!

    2. Create snippet in a separate document program (Word, Google, Outlook whatever), creating it with all the formatting that you want. In the Text Expander box, if you start at the top middle of TE's window you'll see Text Expander, look down more, Text Expander again, a little farther down, then you'll see the words Content: Plain Text. Click that and you will be able to change it to formatted text. Copy snippet from document and paste in Text Expander Content Window, it should keep it's original formatting

  9. How do I get a snippet to appear with the current font type matched. It seems to always come into my Mac Mail in a different miss matched font and I can not continue typing?

    Cheers, Jeff Eichen

    1. Hi Jeff,

      Make sure to turn off rich text in your snippet and keep it as plain text. That should work and match the font.

  10. I am just getting started using TE4. Your review was great! Thank you. Is there a list or suggestion for contact snippets. I have about 1200 contacts and would like to be able to pull up a few I use most often.

    Thanks again,


  11. Thanks for this! Just wanted to let you know that in OS X you can “paste to match style” which is what I usually want when pasting. This might replace the “paste without style” shortcut you have (or not): cmd + alt + shift + v. Once again, thanks for the tips.

  12. Excellent review. I have used TE for years, and I agree with all your positive comments about it save one — it routinely bogs down and severely decreases the speed at which I can type and sometime causes letters to invert. For example, I can type “Asian efficiency” and the result will be “sianA efficiency”. It definitely has something to do with TE because once I disable it, the problems disappear. For these reasons I have started using Typinator. Not quite as flexible but no slow downs.

    1. Hey Swehba I’ve never experienced that problem. I haven’t tried any other text expansion software but I know people who don’t use TE tend to have Typinator. If you don’t use many of the advanced features of TE, that’s probably a good alternative.

    2. Yeah, I have this issue too. The really annoying one is when it’ll get confused and just paste the clipboard instead of inserting the snippet. That one sucks if you’ve got a complicated %fill:x% snippet.

      I think it’s a testament to how useful it is that I still use Text Expander.

  13. I also like setting a shortcut for “suggest matching abbreviations” and “search snippets”. When you have a list of different things (songs and games for esl, in my case) remembering it becomes very easy to type the root of the snippet (in your phone number example, “#”) and trigger the shortcut. It’ll give you a list of various options.

    Then, I don’t have to remember hundreds of different snippet abbreviations; just the root or prefix.

    1. How to do you create the shortcut that gives you those options, this looks like a dropdown menu that I am trying to have.

    2. This doesn’t make any sense. If you trigger a snippet w/ “#” then you have eliminated all the other snippets with “#” as it’s first character. They would never fire.

      The only way I can see this happening is if you are using the SEARCH SNIPPETS function that is located on the TE icon (in the menu bar).

      An example would be VERY helpful.

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}