Wordy User Guide
Wordy is a native macOS menu bar text expander that monitors your keystrokes and automatically expands trigger phrases into replacement text.
Getting Started
Installation
- Download Wordy from getwordy.app
- Move Wordy to your Applications folder
- Launch Wordy
Granting Accessibility Permission
On first launch, Wordy will ask for Accessibility permission. This is required for Wordy to detect your typing across all applications.
- Click Open System Settings when prompted
- Navigate to Privacy & Security → Accessibility
- Enable Wordy in the list
- Return to Wordy—you're ready to go!
Creating Snippets
Basic Snippet Creation
- Click the Wordy icon in your menu bar
- Select Add New Snippet... (or press ⌘⇧N)
- Fill in the fields:
- Title: A descriptive name (e.g., "Email Signature")
- Trigger: The text you'll type to expand (e.g.,
;sig) - Replacement: The text that will be inserted
- Click Save (or press ⌘↩)
Tips for Triggers
- Use a prefix like
;or//to avoid accidental expansions - Keep triggers short but memorable
- Minimum 2 characters recommended
- Wordy warns you if a trigger is already in use
Organizing with Folders
Create folders to organize related snippets:
- Click the folder + button in the toolbar
- Name your folder
- Assign snippets to folders using the dropdown in the snippet editor
Right-click folders to rename, change color, or delete them.
Global Variables
Global variables let you define values once (like your name, company, or email) and use them across all your snippets. Unlike fill-in fields, global variables expand automatically—no popup form needed.
Setting Up Global Variables
- Click Global Variables in the sidebar (or from the menu bar)
- Click the + button to add a new variable
- Enter a Name (e.g.,
Name,Company,Email) - Enter the Value (e.g.,
John Smith,Acme Corp,john@example.com)
Variables are saved automatically as you type.
Using Global Variables in Snippets
Use the {{#VariableName}} syntax in your snippets:
| Placeholder | Output |
|---|---|
{{#Name}} | John Smith |
{{#Company}} | Acme Corp |
{{#Email}} | john@example.com |
Example: Email Signature
Best regards,
{{#Name}}
{{#Title}} | {{#Company}}
{{#Email}} | {{#Phone}} Expands instantly to:
Best regards,
John Smith
Product Manager | Acme Corp
john@example.com | (555) 123-4567 Tips & Common Use Cases
- Variable names are case-insensitive (
{{#name}}={{#Name}}) - Undefined variables show as
[#VariableName?]to help you spot typos - Global variables sync with iCloud (if enabled)
Recommended Variables
| Variable | Example Value |
|---|---|
Name | Your full name |
FirstName | Your first name |
Company | Your company name |
Email | Your email address |
Phone | Your phone number |
Title | Your job title |
Address | Your mailing address |
Website | Your website URL |
Placeholders
Placeholders add dynamic content to your snippets. Insert them using the Insert Placeholder menu in the snippet editor.
Tip: For values like your name, email, and company that you use everywhere, see Global Variables — they auto-expand without any popup.
Date & Time
| Placeholder | Output |
|---|---|
{{date:short}} | 1/26/26 |
{{date:medium}} | Jan 26, 2026 |
{{date:long}} | January 26, 2026 |
{{time}} | 3:30 PM |
Date Math
Add or subtract time:
| Placeholder | Output |
|---|---|
{{date:+1d}} | Tomorrow's date |
{{date:-1d}} | Yesterday's date |
{{date:+1w}} | One week from now |
{{date:+1m}} | One month from now |
{{date:-1y}} | One year ago |
{{date:+1d:long}} | Tomorrow in long format |
Time Math
| Placeholder | Output |
|---|---|
{{time:+1h}} | One hour from now |
{{time:-30M}} | 30 minutes ago |
Units: d (days), w (weeks), m (months), y (years), h (hours), M (minutes)
Clipboard
| Placeholder | Output |
|---|---|
{{clipboard}} | Current clipboard contents |
Text Transforms
| Placeholder | Output |
|---|---|
{{uppercase:hello}} | HELLO |
{{lowercase:HELLO}} | hello |
{{titlecase:hello world}} | Hello World |
Cursor Positioning
| Placeholder | Effect |
|---|---|
{{cursor}} | Places your cursor here after expansion |
Only the first {{cursor}} is used if multiple are present.
Counters
Auto-incrementing numbers that persist across sessions:
| Placeholder | Output |
|---|---|
{{counter:invoice}} | 1, 2, 3... (increments each use) |
{{counter:ticket:100}} | Starts at 100 if new |
{{counter:invoice:reset}} | Resets to 1 |
Each counter name is independent—use different names for different sequences.
Nested Snippets
Reuse other snippets inside your snippets:
| Placeholder | Effect |
|---|---|
{{snippet:sig}} | Inserts the snippet with trigger "sig" |
Supports up to 10 levels of nesting. Circular references are detected and prevented.
JavaScript Expressions
Run JavaScript code in your snippets:
| Placeholder | Output |
|---|---|
{{js:1+1}} | 2 |
{{js:Math.PI.toFixed(2)}} | 3.14 |
{{js:random(1,100)}} | Random number 1-100 |
{{js:uuid()}} | Generated UUID |
Available helpers
now()— Current date and timetoday()— Current datetime()— Current timerandom(min, max)— Random integeruuid()— Generate UUID
Fill-in Fields
Fill-in fields create an interactive form that appears when you expand the snippet, letting you customize the output each time.
Text Field
{{field:Name}}
{{field:Name:John}} // With default value
{{field:Name::required}} // Required field
{{field:Name:John:required}} // Default + required Multiline Text Field
{{textarea:Notes}}
{{textarea:Notes:Enter details here}}
{{textarea:Notes::required}} Dropdown
{{dropdown:Priority:High,Medium,Low}}
{{dropdown:Status:Draft,Review,Published:required}} Options are comma-separated. The first option is selected by default.
Optional Sections
Include or exclude content based on a checkbox:
{{?:Include Greeting}}Hello {{field:Name}},
{{/?}}Here is the information you requested... When expanded, you'll see a checkbox. Uncheck it to remove that section entirely.
Remembering Field Values
Each fill-in field has a Remember checkbox. When checked, Wordy saves that field's value for next time.
How it works
- Expand a snippet with fill-in fields
- Enter your values
- Check Remember next to fields you want to save
- Click Expand
Next time you use that snippet (or any snippet with the same field name), the field will be pre-filled with your remembered value.
Tips
- Remembered values are per-field name, not per-snippet (so
{{field:Email}}shares its value across all snippets) - Uncheck "Remember" and expand with a new value to update the saved default
- Use this feature for values that change occasionally but not every time (e.g., project names, client names)
Combining Global Variables and Fill-in Fields
Global variables and fill-in fields work great together. Use global variables for values that never change, and fill-in fields for values you customize each time.
Example: Sales Outreach Email
Hi {{field:Recipient}},
Thank you for your interest in {{#Company}}.
{{?:Include meeting request}}I'd love to schedule a call to discuss further.
You can reach me at {{#Email}} or {{#Phone}}.
{{/?}}Best regards,
{{#Name}}
{{#Title}} When expanded:
{{#Company}},{{#Email}},{{#Phone}},{{#Name}}, and{{#Title}}auto-fill from your global variables- Only the
{{field:Recipient}}field and the checkbox appear in the form
Example: Meeting Follow-up
Hi {{field:Name}},
Thank you for meeting with me {{dropdown:When:today,yesterday,last week}}.
{{?:Action Items}}Action items:
{{textarea:Items}}
{{/?}}{{?:Schedule Follow-up}}Let's schedule a follow-up for {{date:+1w:long}}.
{{/?}}Best regards,
{{#Name}} Import & Export
Importing from TextExpander
Wordy can import your TextExpander snippets:
- Export your snippets from TextExpander as CSV
- In Wordy, go to Settings → Import
- Select your CSV file
- Review the import preview:
- Choose a destination folder (or create a new one)
- Handle duplicates: Skip, Replace, or Import as new
- Review any conversion warnings
- Click Import
Automatic placeholder conversion
| TextExpander | Wordy |
|---|---|
%clipboard% | {{clipboard}} |
%filltext:name=X% | {{field:X}} |
%fillarea:name=X% | {{textarea:X}} |
%fillpopup:name=X:a:b:c% | {{dropdown:X:a,b,c}} |
%snippet:trigger% | {{snippet:trigger}} |
Undo Import
Changed your mind? Go to Settings → Recent Imports and click Undo next to the import batch.
Exporting Snippets
CSV Export (TextExpander compatible)
- Settings → Export as CSV
- Format: trigger, replacement, title
- Works with other text expanders
JSON Export (Full backup)
- Settings → Export as JSON
- Includes all snippets, folders, metadata
- Use for complete backups or migration
Settings
Access settings via the menu bar → Settings (or ⌘,).
General
| Setting | Description |
|---|---|
| Launch at login | Start Wordy automatically when your Mac boots |
| Hide dock icon | Keep Wordy out of your Dock (still accessible via menu bar) |
| Play sound on expansion | Audio feedback when snippets expand |
iCloud Sync
| Setting | Description |
|---|---|
| Sync snippets with iCloud | Keep snippets in sync across your Macs |
| Sync Now | Manually trigger a sync |
Synced data is stored in your iCloud Drive and visible in Finder.
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
| ⌘⇧N | New snippet |
| ⌘, | Open Settings |
| ⌘⇧P | Pause/Resume expansion |
| ⌘Q | Quit Wordy |
| ⌘↩ | Save snippet (in editor) |
| ⎋ (Escape) | Cancel/close |
| ⌫ (Delete) | Delete selected snippet(s) |
Statistics
Track your productivity in Menu Bar → Statistics:
Lifetime Stats
- Total expansions
- Characters saved
- Time saved
- First expansion date
Last 7 Days
- Daily expansion chart
- Hourly usage distribution
- Top 5 most-used snippets
Pause/Resume
Need to type a trigger literally without expansion? Pause Wordy temporarily:
- Menu Bar → Pause Expansion
- Or press ⌘⇧P
Resume the same way when you're ready.
Troubleshooting
Snippets not expanding
- Check accessibility permission: System Settings → Privacy & Security → Accessibility → Wordy (enabled)
- Check if paused: Look for "Resume Expansion" in the menu bar menu
- Test in different apps: Some apps handle input differently
Fill-in form not appearing
- Ensure your snippet contains fill-in placeholders (
{{field:...}},{{textarea:...}},{{dropdown:...}}, or{{?:...}}) - The form only appears when there are fields to fill
iCloud not syncing
- Ensure you're signed into iCloud on your Mac
- Check that iCloud Drive is enabled
- Try Sync Now in Settings
- Check the sync status indicator for errors
Global variable shows [#Name?]
This means the variable isn't defined:
- Open the Global Variables window from the sidebar
- Check if the variable exists (use search to find it)
- Verify the spelling matches exactly (names are case-insensitive)
- Create the variable if it doesn't exist
Data Storage
Local data: ~/Library/Application Support/Wordy/
iCloud data (if enabled): ~/Library/Mobile Documents/com~apple~CloudDocs/Wordy/
Your snippets are stored as JSON files and can be backed up manually if needed.
System Requirements
- macOS 13.0 (Ventura) or later
- Accessibility permission (required)
- iCloud account (optional, for sync)