I'm not much of a productivity guy. I'm plenty productive, don't get me wrong, but I don't care much about the endless pile of open-source software and specialty hardware packaged and sold to productivity gurus looking to optimize every last moment spent on work. That creates more work for me. However, there's one productivity tool that I've quickly learned I can't live without — a text expander.
I used it right there to insert an em dash, which is a symbol I'd otherwise need to copy over from somewhere else. What started as a simple way to create a few common symbols has turned into a tool that's radically transformed how I use my PC. There are loads of text expanders available, including the aptly-named TextExpander, but I've fallen in love with the open-source tool Espanso. And if you're willing to do a tiny bit of legwork to set it up, you're in for a treat.
6 You never have to copy anything
Set up a trigger for anything
Especially these days, there are a ton of symbols you probably use that aren't on your keyboard. That's my beloved em dash, of course, but you also have emojis, accents, currency symbols, emoticons, and proper nouns with strange capitalization or accent symbols, such as macOS or eBay. With a text expander, you never have to copy these over. You can set up a trigger, such as ":smile" and a function, like inserting a smiling emoji.
That alone has saved me a ton of time, especially as a writer, where I'd normally have to copy over words like Pokémon from somewhere else. Espanso handles all of your triggers in a YAML file that you can open with any text editor, and you're free to add any trigger and any response you want. So, you could turn "pokemon" into "Pokémon," or you could just set up a trigger like "e;" to insert "é."
This is the high-level use case for a text expander, but you can expand it further. Maybe you have a stock opening for emails that's a sentence or two, but instead of typing it, you can set up a trigger like ":greeting." There are a ton of possibilities, and shaving off those micro-seconds when you're working all day really adds up.
5 Turn text chat into real words
For the lazy typists like me

I really started using Espanso a lot when I realized what it could do for me at work. When I'm texting friends or chatting on Discord, I'm using some form of text language. With Espanso, I'm able to set those up as triggers to make my typing more efficient. Triggers like "ty" become "Thank you!," and instead of writing emails from scratch, I can use a trigger like ":email" to automatically create a template. Espanso also includes dynamic triggers, so you trigger a script or insert things like the time or date without recalling it manually.
Where Espanso gets special is how you're able to define and organize your triggers. By default, Espanso creates a global YAML file for your commands, but you can create your own files within that folder to better organize your triggers. Further, you can tie files to specific applications. So, I can still use "tysm" when I'm chatting on Discord, but when I type it into Slack, it turns into "Thank you so much!"
If you have multiple config files you want to include with a specific application, you don't need to add them manually, either. You can have a master config file that includes several other config files you automatically import when using a particular application. In addition, you can create multiple matches for a trigger — such as different email signatures — and choose between them whenever you trigger the input.

Related
9 tools that will supercharge your productivity on Windows
While working, you want to get things done and these tools will help boost your productivity on Windows.
4 Execute scripts and commands
All with a simple text prompt

The core function of Espanso is simply to insert more text based off of a trigger, but given how open the YAML configuration files are, you can push the tool much further. One of the more interesting things you can do is execute scripts written in Python (or any other language) and trigger shell commands. For scripts, you can create a folder alongside your configuration files and replace your trigger with the output from the script. It takes the idea of dynamic triggers to the next level, allowing you to do things like print details from an API.
Similarly, shell expansion gives you access to any shell command with a simple text trigger. Espanso supports most shells out of the box, including Powershell for Windows, bash for Linux, and sh for macOS. If you're diligent enough with setting everything up, you can essentially pull any information you want from a terminal with a simple trigger. And you can ping APIs if you don't want to set that up with a Python script by using curl. Even if you don't know a ton about scripting or shell commands, Espanso includes some highly detailed documentation that will walk you through setting everything up.

Related
100+ run commands that can help you work efficiently on Windows
Skip the clicks! Master these run commands to save your time running Windows
3 Automatically fix typos
And so much more

Being open-source, Espanso has a ton of community interaction. There are a ton of config files that you can download through the Espanso Hub, and they span everything from turning ":shrug" into "¯\(ツ)/¯" to generating lorem ipsum to configs specially made for medical charting. One of my favorites is Typofixer, which is a collection of over 17,000 words matched to over 67,000 common typos. You can create your own, too, which I've taken advantage of. For instance, I always write "necessary" as "nessacary." I've done it for years, and I can't kick the habit. I can set that up as a trigger and automatically correct my typo when I'm working.
Really, though, this is just one small example of the excellent configs you can find through the Espanso Hub. Here are just some of the files you can find:
- Espanso Dice: Use a random function is Espanso to roll a die, up to a 1000-sided die.
- Currency Symbols: A collection of currency symbols in unicode for easy insertion.
- US Drug Names: A great example of using Espanso's multiple match feature to essentially create a database search.
- Calc: A way to do basic arithmetic without opening a calculator.
- Base64 Encoder and Decoder: Triggers a Base64 encoder or decoder for whatever's copied to your clipboard.
- Dadjoke: Inserts a random dad joke on the ":dadjoke" command.
- Quick Translate: Leverages Google, Bing, and Yandex translations tools to automatically translate entered text with a trigger.

Related
7 ways to save time with keyboard shortcuts and automations on Windows
You can work faster and more efficiently using these shortcuts and automations.
2 Insert boilerplate code and mathematical symbols
Literally save hours of time

Espanso — or really any text expander — is a lifesaver if you're coding. You can insert common functions and tags that are cumbersome to type manually with a simple trigger. You can set these up manually, but there are a handful of useful config files already available on the Espanso Hub. Python Utilities includes a handful of Python code snippets that you can trigger, while HTML utilities package has a ton of triggers for HTML. Those are just two examples, but you can easily set up a config file for just about any boilerplate code you need to vastly speed up your coding time.
Outside inserting boilerplate code, another popular category for configuration files are mathematical symbols. There are files that can add things like superscripts and subscripts, unicode fractions, and common Latex symbols if you're writing equations. There's even a configuration for symbols commonly used in quantum notation.

Related
5 Python scripts anyone can use to boost their productivity
If you've heard of Python but don't know where to start with it, these five scripts can help boost your productivity.
1 Create a smart database search
Massive databases, searched in an instant

I've already hinted at this, but you can essentially turn Espanso into a highly functional database search for your PC. For starters, you can pull up a search bar for Espanso using Alt + Space — this also pulls up Windows search, so I recommend changing the hotkey. Using the search, you can go through all of your commands, either searching by the trigger or the replacement. Where Espanso really gets special, though, is when you create a database tied to a specific trigger. If you have multiple options for a trigger, Espanso will automatically pull up the search window.
A great example of where this is useful is the US Drug Names configuration file I mentioned above. All the names share the same trigger, so I'm able to search and insert names specifically from that configuration file. Now, I don't need to do that for US drug names, but you can see how this is useful elsewhere. I've been slowly working on a database triggered with "hw:," which pulls up a search bar for model names of different CPUs and GPUs so I can easily enter the right name, as well as filter different types of hardware, such as KF SKUs from Intel or RTX 50-series GPUs from Nvidia. That's how I apply this function to my workflow, but there are dozens of other applications where it could be useful.

Related
5 cool tricks LaTeX can do that Microsoft Word can't (easily)
If you're sick of using Microsoft Word, it might be worth trying out LaTeX to see if you prefer what it can do for your documents.
As good as you make it
A text expander, and in particular Espanso, has become a superpower for my PC. But it's a tool that's only as good as you make it. It's a useful addition for quickly entering characters you don't have access to on a keyboard, but if you're willing to set up the proper configuration files, you can turn it into a coding assistant, autocorrect, translator, and so much more. Even more impressive, Espanso can manage all of these functions without much overhead. You're just dealing with text and a handful of YAML files, so you should never even recognize Espanso running in the background.
