You’re familiar with these utilities: Hazel, Alfred, TextExpander, LaunchBar, PopClip, and Dropzone. You know what you can do with each utility, but when you want to automate a task, paralyzed by the choices, you’re unable to choose which utility should do the job.

Most of the utilities can carry out the same task. You can expand text with TextExpander or Keyboard Maestro. You can convert images into a different format with Automator; you can also do the same with Hazel. Which utility should you use?

It depends on the triggers. You can have multiple utilities, but there can be just a few triggers. Do you want to run the task when the files arrive in a folder? Do you want to run the task when you open Terminal? Do you want to run the task when you type a particular word? You must know the triggers before building the tool.

There are a lot of triggers, but I’m going to talk about the triggers people often use when building a tool.

Query Based

Query based is the most flexible trigger. A search engine is a perfect example of query based trigger. If I want to convert USD into JPY, I simply type 20 USD to JPY in the search engine.

Currency Conversion in Spotlight

Alfred, LaunchBar, and Spotlight belong to this category. You can define the word, convert currency, and search for information. Utilities like Alfred and LaunchBar even let you rename, move, and process the documents directly from the search result. With Alfred workflows, you can also optimize and resize images.

List of Commands in Alfred

Query based trigger is flexible because there is no shortcut to remember. When I want to shut down the computer, the natural query is shutdown. Since there is no such a thing as shortcut conflicts, you can use the same query for the different type of tasks. Take a look at this Alfred workflow I use to control system. Their keywords start with tb <command>. Do I have to remember the command? No. Simply type tb and I can choose any commands from the list.

Folders and Files Event Based

We often need to make a decision based on the files and folders condition. Move the files containing specific word into Evernote. Rename the files in Download folder into this format. Delete the files in the Trash after three days. Won’t it be better if these tasks are taken care automatically?

There are two utilities recommended for this job: Automator and Hazel.

Automator is a built-in OS X application by Apple for creating workflows to automate repetitive tasks. It comes in a variety of forms: as a workflow, application, or system services. But the one that fits into files and folders event based triggers is the Folder Action.

Automator Folder Actions

Folder Action monitors and processes the incoming files and folders with series of actions you add in the workflow. You can rename Finder items, convert the images into a different format, or extract PDF text and save it into a separate document. Applications that support Automator will have their actions listed in the library. For example, if you own Pixelmator, you’ll be able to use Watermark Images action in your workflow. If you want to learn more about Automator, you can take a look how I use it to create a beautiful stack in Dock.

A far more powerful utility in this category is Hazel. With Hazel, you can setup rules to match the filename patterns, last modified date, or even the content of the incoming files. There is a different type of default actions from renaming, moving, sorting the matching files into subfolders. You can also choose to run a shell script, AppleScript, or Automator Workflow for each matching files. I use Hazel primarily to sort photos, organize screenshots, and run Keyboard Maestro macro remotely.

To conclude this section, whenever the task you want to run is definite and dependent on the files or folders, you should automate it with Folder Action or Hazel. This way you can save a lot of time from having to manually manage those files.

Typed String Based

Typed string based trigger runs a specific action when you type a specific string. There are also two utilities you can use under this category: TextExpander and Keyboard Maestro.

First, let’s talk about TextExpander. Whenever you think “I want a text in this format whenever I type this”, TextExpander should be the utility you use. You can do the same with Keyboard Maestro, but I highly recommend TextExpander since its feature are made for specifically for, well, expanding the text.

Fill-ins in TextExpander

One of the most used TextExpander features is fill-ins where you can insert single-line field, multi-line field, popup section, and optional section. The fill-ins let you create a template that you can populate with a different type of values to speed up the typing process.

TextExpander supports rich text where you can customize the expanded text with a different type of typeface combination, colors, and images. With some understanding of AppleScript or Shell script, you can manipulate the printed value in TextExpander.

Typed String Macro in Keyboard Maestro

As for Keyboard Maestro, the only time you choose it is whenever you want to do something aside expanding the text. For example, you can create a macro that renames an active document whenever you type .rename. I’m not saying you shouldn’t use Keyboard Maestro to expand text, but TextExpander is a better choice when it comes to expanding the text.

Text Selection Based

Select some text, and then choose what you want to do with it. The method you use to choose the text will affect the type of utility you use.

If you spend most of your time on a mouse or stylus, you’re going to need a utility that can handle your selection without the need to reach over the keyboard. Think how you usually copy and paste text in iPhone and iPad? That would be the utility you need for Mac.

Calculation in PopClip

PopClip is a utility that replicates iOS text selection behavior where a list of executable commands are visible after you’ve selected the text with a mouse cursor. This utility is particularly useful when you need to manipulate or pass the value of the selected text into a workflow. It has tons of extensions to supercharge your toolbox. You can select some text and search in Google, transform it into uppercase, or send it to Evernote.

Not everyone will enjoy using PopClip, I don’t use PopClip because I spend most of my time on the keyboard. I usually select text with the combination of Command, Shift, and arrow keys. The type who likes to run a specific action with shortcuts can use Automator Service, Keyboard Maestro, or Alfred.

SearchLink by Brett Terpstra

An example of service tool I often use is SearchLink by Brett Terpstra where you can select some text and create link in Markdown format. I assign Command-Shift-S as the shortcut to the service, so whenever I want to create a link in Markdown, I just need to select the text and run the service.

There are no exact guidelines when you should use a shortcut in which utility. Whenever I want to build the tool that handles selected myself, I choose Keyboard Maestro since it offers the easiest method to manipulate clipboard. But when I discover the tool that can carry out the tasks I want in Alfred such as QuickCursor, I won’t mind using it either.

Files Selection Based

There are times where you need to execute a workflow for a bunch of selected files such as sending them to FTP server or convert selected images into a different format. Alfred users can batch process these files with the File Selection feature. However, the common way people run those files is selecting those files and drop them into Automator Folder actions or Automator Application. Another popular utility you can use for this type of triggers is Dropzone.

Dropzone 3 Grid

Dropzone is similar to the Dock, except that it’s more organized than having all actions laid out in the Dock. It has the same feature as DragonDrop which acts as a temporary placeholder for the files you want to move. One of the examples is where you can drop the files into share to Dropbox public folder that returns the public link into the clipboard. Configure your FTP and Amazon S3 server so you can upload files from anytime.

Miscellaneous Event Based

There are a lot of events you can use as a trigger in Keyboard Maestro. From detecting which connected networks, computer name, and the screen condition. You can detect anything in Keyboard Maestro. Since Keyboard Maestro can do everything, it becomes the last consideration when building a tool — most of the times I use Keyboard Maestro when the none of the mentioned utilities are suitable for the jobs.

For example, this macro I build need to monitor the battery life every 40 minutes. It’s a recursive event that can’t be built easily with other utilities — even if it can, it would take a complicated scripting to make it work. So I choose Keyboard Maestro to run this script that extracts the battery percentage, compare the result, and open the Battery Remaining Time when the charge falls below 40%.

Another reason to use Keyboard Maestro is when the actions you want to run needs to emulate the user actions as closely as possible. This can be clicking mouse event, moving files into a different folder, or enter a password from keychain. The Control Flow library is packaged with actions you can use to decide when to run a macro based on the environment variables which results in less scripting.


If you have come this far, I hope you can understand the framework I use when deciding which utility should do the job. Try to find out what’s your preferred triggers so you can purchase the correct utility that’ll increase your productivity.