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 trigger becomes a TypeSnap abbreviation. A match with several triggers becomes one snippet per trigger.
  • Replacement text: single-line, quoted, and multi-line (| and >) replace values
  • Labels: an Espanso label becomes the snippet’s label
  • Cursor: $|$ becomes {{cursor}}
  • Variables defined in a match’s vars:
    • date becomes a {{date:...}} macro, with strftime formats such as %Y-%m-%d converted
    • clipboard becomes {{clipboard}}
    • choice becomes a {{select:...}} dropdown with the same options
    • random becomes {{random:...}} with the same choices
    • echo is 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 of trigger:) 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 shell and script, 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_vars are 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

  1. Open TypeSnap
  2. Open File → Import Snippets and select Espanso as the source
  3. Click Choose File and select a match file (for example base.yml)
  4. Review the preview and its separate Warnings and Errors sections. Each skipped match is listed with the reason.
  5. 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.

Ready to type less?

Try your own snippets in the apps you use. All features, free for 7 days. Buy once for $17.99 if it earns its place.

Download the free 7-day trial

Already tried it? Buy a license — $17.99

Direct Mac download Local text expansion Made by an indie developer