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

  1. Download Wordy from getwordy.app
  2. Move Wordy to your Applications folder
  3. 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.

  1. Click Open System Settings when prompted
  2. Navigate to Privacy & Security → Accessibility
  3. Enable Wordy in the list
  4. Return to Wordy—you're ready to go!

Creating Snippets

Basic Snippet Creation

  1. Click the Wordy icon in your menu bar
  2. Select Add New Snippet... (or press ⌘⇧N)
  3. 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
  4. 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:

  1. Click the folder + button in the toolbar
  2. Name your folder
  3. 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.

Creating a global variable in Wordy

Setting Up Global Variables

  1. Click Global Variables in the sidebar (or from the menu bar)
  2. Click the + button to add a new variable
  3. Enter a Name (e.g., Name, Company, Email)
  4. 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
NameYour full name
FirstNameYour first name
CompanyYour company name
EmailYour email address
PhoneYour phone number
TitleYour job title
AddressYour mailing address
WebsiteYour 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 time
  • today() — Current date
  • time() — Current time
  • random(min, max) — Random integer
  • uuid() — 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: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.

Fill-in form with Remember checkbox

How it works

  1. Expand a snippet with fill-in fields
  2. Enter your values
  3. Check Remember next to fields you want to save
  4. 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:

  1. Export your snippets from TextExpander as CSV
  2. In Wordy, go to Settings → Import
  3. Select your CSV file
  4. 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
  5. 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 loginStart Wordy automatically when your Mac boots
Hide dock iconKeep Wordy out of your Dock (still accessible via menu bar)
Play sound on expansionAudio feedback when snippets expand

iCloud Sync

Setting Description
Sync snippets with iCloudKeep snippets in sync across your Macs
Sync NowManually trigger a sync

Synced data is stored in your iCloud Drive and visible in Finder.


Keyboard Shortcuts

Shortcut Action
⌘⇧NNew snippet
⌘,Open Settings
⌘⇧PPause/Resume expansion
⌘QQuit 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

  1. Check accessibility permission: System Settings → Privacy & Security → Accessibility → Wordy (enabled)
  2. Check if paused: Look for "Resume Expansion" in the menu bar menu
  3. 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

  1. Ensure you're signed into iCloud on your Mac
  2. Check that iCloud Drive is enabled
  3. Try Sync Now in Settings
  4. Check the sync status indicator for errors

Global variable shows [#Name?]

This means the variable isn't defined:

  1. Open the Global Variables window from the sidebar
  2. Check if the variable exists (use search to find it)
  3. Verify the spelling matches exactly (names are case-insensitive)
  4. 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)