
Review, edit, and combine TextExpander snippets before importing them into Raycast. Inspired by Ahmad Awais's textexpander-to-raycast.
[Group] prefixes.No data is uploaded. Source files and your live Raycast library are never modified. Files use private permissions, and existing output files and folders are never overwritten. If an export fails, newly created output is removed so the same filename can be retried.
| Source | How to use it |
|---|---|
| TextExpander web CSV export | Export a group from TextExpander's Import/Export page, then choose the CSV file. The filename becomes its group name. |
Legacy Settings.textexpander | Auto-detected in ~/Library/Application Support/TextExpander/. Reads snippetsTE2 and groupsTE2. |
.textexpander or XML group export | Choose a property list containing name and snippetPlists, or groupInfo.groupName and snippetsTE2. |
Settings.textexpandersettings bundle | Auto-detected at the same location, or choose a bundle yourself. Reads group*.xml files directly inside it. |
Auto-detection checks the bundle before the legacy file. It does not search custom Dropbox/iCloud locations or newer TextExpander databases. Choose those sources manually or use CSV exports. Unzip compressed exports first.
CSV accepts abbreviation, snippet, and optional label headers, in any order. Headerless files must contain two or three columns in that order. Quoted commas, double quotes, Unicode, and multiline text are supported. Repeated column names and incomplete recognized headers are rejected.
Try Email.csv alone, or combine it with Work.csv to review a keyword conflict. raycast-reference.json provides safe comparison data. The sample JSON contains Email's greeting and signature without its date template.
See TextExpander's export instructions.
Untitled. A group prefix is optional.Macro conversion is off by default and applies only to plain-text snippets. Supported conversions are:
| TextExpander | Raycast |
|---|---|
%clipboard | {clipboard} |
%| | {cursor}, when the result has only one cursor |
%Y-%m-%d | {date format="yyyy-MM-dd"} |
%H:%M:%S | {date format="HH:mm:ss"} |
Date runs support %Y, %y, %m, %d, %H, %M, and %S, with spaces and common separators. If a snippet contains an unsupported or ambiguous macro, an escaped percent sequence, or multiple cursor positions, the entire snippet stays unchanged for manual review. Fill-ins, nested snippet references, keyboard actions, and date arithmetic are not automatically converted.
Review the original and current export before importing. Raycast dynamic placeholders expand when a snippet is used.
Press ⌘S or choose Save Progress in the preview to save one local migration snapshot. It includes source snippets, comparison snippets, edits, renamed groups, and selection. Saving again replaces the previous snapshot.
Choose Resume Saved Migration in the Source dropdown or the source form's action panel to continue. Resuming uses the saved snapshot and does not re-read files. Start a new preview to read source changes. Delete Saved Progress removes the snapshot from Raycast's extension storage. Progress is saved only when you request it.
Reports list names, keywords, sources, changes, warnings, and selection or exclusion reasons. Snippet bodies are omitted. Suggested Snippets are excluded before conversion and appear only as counts per source.
A single-file export can include a sibling *.report.json. A group export creates a new *-groups folder with numbered, sanitized filenames and an optional report. Export files use 0600 permissions; group folders use 0700. If a multi-file export fails, only files and folders created by that export are removed.
Requires macOS, Raycast, and Node.js 22.22.2 or later.
npm ci
npm run dev
Raycast registers the development command. Keep the development process running while editing.
npm run check
This runs TypeScript, lint, formatting, metadata validation, and the distribution build.
See CONTRIBUTING.md for release checks and Store submission steps. Raycast's snippet documentation describes the import format.
Combine TextExpander exports, edit snippets, resolve keyword conflicts, and export Raycast JSON with a migration report.