Switching from Espanso to TypeSnap
Moving from Espanso to TypeSnap? Import your Espanso YAML match files directly, with triggers, labels, and common variables converted. Here's how to migrate.
Espanso is a capable open-source text expander, and the fact that it’s free and cross-platform makes it a reasonable starting point. But if you want a native macOS GUI instead of editing YAML files, fill-in fields with dropdowns and text inputs, and optional iCloud sync, TypeSnap is worth a look. Since version 1.4, TypeSnap reads Espanso’s YAML match files directly, so there’s no hand conversion. Here’s how to bring your snippets with you.
What TypeSnap Adds Over Espanso
TypeSnap offers a different workflow. Espanso already has forms and search; these are TypeSnap features to evaluate rather than capabilities absent from Espanso:
- Native Mac GUI: browse, search, and edit snippets visually without touching a text editor
- Fill-in fields: prompts with text inputs, dropdowns, and optional sections that appear when a snippet expands
- iCloud sync: optionally sync your snippet library across your Macs
- Date and time macros: insert formatted dates and times using simple macro syntax
- Clipboard macros: insert the current clipboard contents anywhere in a snippet
What Transfers
TypeSnap’s Espanso importer reads .yml and .yaml match files and converts what it can:
- Triggers: each
triggerbecomes a TypeSnap abbreviation. A match with severaltriggersbecomes one snippet per trigger. - Replacement text: single-line, quoted, and multi-line (
|and>)replacevalues - Labels: an Espanso
labelbecomes the snippet’s label - Cursor:
$|$becomes{{cursor}} - Variables defined in a match’s
vars:datebecomes a{{date:...}}macro, with strftime formats such as%Y-%m-%dconvertedclipboardbecomes{{clipboard}}choicebecomes a{{select:...}}dropdown with the same optionsrandombecomes{{random:...}}with the same choicesechois inserted as its fixed value
- Form fields referenced as
{{form1.name}}become{{input:name}}fill-ins
Everything lands in one group per file. base.yml imports into a group called Espanso, and any other file (for example work.yml) imports into Espanso (work).
What doesn’t transfer:
- Regex matches (
regex:instead oftrigger:) are skipped with a warning. Recreate them as TypeSnap regex snippets. - Image and other non-text matches are skipped with a warning.
- Shell and script variables don’t run in TypeSnap. Any variable type the importer doesn’t recognize, including
shellandscript, becomes a fill-in field with the variable’s name, so you’ll get a prompt instead of command output. Rebuild those with a JavaScript snippet or a fill-in. global_varsare not read. References to a global variable inside a match become fill-in fields.form:shorthand matches import as text, but their[[field]]placeholders are left as is. Replace each one with{{input:field}}in the editor.
Step 1: Find Your Espanso Match Files
Run espanso path in Terminal. It prints the folders Espanso uses; your match files live in the match folder inside the config folder. On a Mac that’s usually ~/Library/Application Support/espanso/match/. In Finder, use Go → Go to Folder… and paste the path.
You’ll find base.yml and possibly other .yml files, each with entries that look like this:
matches:
- trigger: ":br"
replace: "Best regards,"
- trigger: ":addr"
replace: "123 Main Street\nSpringfield, IL 62701"
Step 2: Import into TypeSnap
- Open TypeSnap
- Open File → Import Snippets and select Espanso as the source
- Click Choose File and select a match file (for example
base.yml) - Review the preview and its separate Warnings and Errors sections. Each skipped match is listed with the reason.
- Click Import
The importer reads one file at a time. If your library is split across several files, repeat these steps for each one.
If an imported abbreviation matches one you already have in TypeSnap, you’ll be asked whether to skip or replace it.
After Import
Test a few of your most-used snippets to confirm they expand correctly. Static text snippets should behave the same as before.
One difference to know about: Espanso expands as soon as you finish typing a trigger. Imported TypeSnap snippets use your default trigger mode (Settings → Expansion → When to expand), which starts out as “After a space or punctuation.” Triggers wrapped in colons, like :smile:, are set to expand immediately. If you want the Espanso behavior for everything, change the default to “As soon as I finish typing it,” or change it per snippet.
FAQ
What about Espanso regex matches?
TypeSnap supports regex triggers too, but the syntax differs from Espanso’s. The importer skips regex matches and lists each one in the warnings, so you know exactly which ones to recreate in TypeSnap’s snippet editor. For most people that’s a small fraction of the library.
Do I need to keep Espanso running after migration?
No. Once your snippets are in TypeSnap and working, quit Espanso and remove it from your Login Items (System Settings → General → Login Items). Running both at once means both will try to expand the same triggers.
TypeSnap is $17.99, one time. No subscription, no cloud account required. Download TypeSnap. Or see the full import guide for all supported formats.