Getting Started

Welcome to TypeShift

TypeShift is a macOS text expander — type a short abbreviation anywhere on your Mac and it instantly expands into whatever text you want. This guide covers everything from your first snippet to advanced AI-powered macros.

Installation

TypeShift is distributed as a signed and notarized disk image — no App Store required.

  1. 1
    Download TypeShift.dmg from typeshift.monogramcreative.co.
  2. 2
    Open the DMG and drag TypeShift into your Applications folder.
  3. 3
    Launch TypeShift from Applications or Spotlight. macOS may ask you to confirm opening an app downloaded from the internet — click Open.
  4. 4
    Grant Accessibility access when prompted. This is required for system-wide expansion — see the next section for details.

TypeShift will add itself to Login Items automatically so it's always running when you log in.

Accessibility Permission

TypeShift monitors keyboard input system-wide so it can detect when you type an abbreviation and replace it with your snippet. macOS requires you to explicitly grant Accessibility access for this to work — it does not happen silently.

System Settings Accessibility showing TypeShift enabled

TypeShift listed and toggled on in System Settings → Privacy & Security → Accessibility.

Granting access

  1. 1
    Open System Settings → Privacy & Security → Accessibility.
  2. 2
    Click the + button and add TypeShift, or find it in the list and toggle it on.
  3. 3
    Return to TypeShift — expansion will start working immediately. No restart required.
💡
Not working after granting access? Try toggling the permission off and back on in System Settings, then quit and relaunch TypeShift.

Your First Snippet

Creating a snippet takes about 30 seconds. Here's the quick version:

  1. 1
    Click the TypeShift icon in your menu bar, then click Open TypeShift (or press the keyboard shortcut shown there).
  2. 2
    Click the + button in the snippet list to create a new snippet.
  3. 3
    Give it a Title (e.g. "My Email"), an Abbreviation (e.g. !em), and type your expanded content in the text area.
  4. 4
    Click Save.
  5. 5
    Open any app — Mail, Notes, a browser — and type your abbreviation. The moment you finish typing it, TypeShift replaces it with your snippet.
TypeShift main window

The TypeShift main window: categories on the left, snippet list in the middle, editor on the right.


Snippets

Managing Snippets

Snippets are the core of TypeShift — each one pairs an abbreviation with a block of text that gets typed for you. They can be plain text, formatted rich text, or anything in between.

Creating & Editing

To create a snippet, click the + button at the bottom of the snippet list. To edit an existing one, select it from the list.

Each snippet has three required fields:

FieldPurpose
TitleA human-readable name shown in the snippet list. Not used for expansion.
AbbreviationThe short text you type to trigger expansion. Case-sensitive.
ContentWhat gets typed when the abbreviation fires. Plain or rich text.

Click Save (or press ⌘S) to save changes. TypeShift will warn you if you try to navigate away with unsaved edits.

Plain Text vs Rich Text

TypeShift supports two content modes per snippet:

Plain text

The default. TypeShift types the characters directly as if you pressed the keys yourself. Works reliably in every app — Terminal, code editors, web forms, anything.

Rich text

Lets you apply bold, italic, underline, font size, text color, and hyperlinks. TypeShift pastes the formatted content via the clipboard, so it appears with formatting in apps that support it (Mail, Pages, Word, Slack, most text editors).

⚠️
Rich text in plain-text apps: In apps that don't accept formatted text (Terminal, code editors, some web inputs), rich text snippets will paste as plain text without formatting — the content still arrives, just without the styling.

To switch a snippet between modes, use the Plain / Rich toggle at the top of the editor. Switching from rich to plain will strip formatting but preserve the text content.

Rich text editor with formatting toolbar

The rich text editor with formatting toolbar. Use ⌘B, ⌘I, ⌘U for bold, italic, and underline.

Abbreviation Tips

A good abbreviation fires reliably and never triggers by accident. A few conventions that work well:

Use a prefix character

Starting every abbreviation with a character that doesn't appear at the start of real words prevents accidental expansions. Common choices:

  • !!em, !sig, !addr
  • ;;em, ;sig
  • ////date, //reply

Keep them short but distinct

Two or three characters after the prefix is usually enough. !em for email, !ph for phone, !addr for address. Avoid prefixes of each other — if you have !s and !sig, !s will always fire before you can finish typing !sig.

💡
Conflict detection: TypeShift highlights abbreviations that are duplicates or prefixes of each other with a warning indicator in the snippet list. Resolve conflicts before they cause unexpected expansions.

Categories

Categories let you group snippets and filter the list. Each category gets a name and a color — the color dot shows in the sidebar and in the snippet list.

To create a category, click the + button next to "Categories" in the sidebar. To assign a snippet, open it in the editor and choose a category from the dropdown.

Snippets not assigned to a category appear under All Snippets. You can also view all snippets regardless of category by selecting All Snippets at the top of the sidebar.

Recently Deleted

When you delete a snippet or category, it isn't removed immediately — it moves to Recently Deleted, where it stays for 30 days before being permanently erased. This gives you a safety net to recover anything deleted by mistake.

Accessing Recently Deleted

Click Recently Deleted at the bottom of the sidebar. You'll see two sections — Categories and Snippets — each with a countdown badge showing how many days remain before permanent deletion.

  • Gray badge — more than 7 days remaining
  • Orange badge — 7 days or fewer remaining
  • Red badge / "Today" — deletes today

Restoring items

Click any item to preview it, then click Restore. The snippet or category returns to its original location. If a snippet's category was also deleted, restoring the snippet automatically restores the category too.

Bulk restore or delete

Select multiple items using ⌘-click or Shift-click (or ⌘A to select all), then use the Restore All or Delete All Permanently buttons that appear in the detail panel. You can also press the Delete key to permanently erase all selected items.

Permanent deletion

To immediately and permanently erase an item, click it and choose Delete Permanently. This cannot be undone. Items are also automatically purged after their 30-day window expires — TypeShift cleans these up each time it launches.

Deleted snippets don't expand

Snippets in Recently Deleted are inactive — their abbreviations won't trigger expansion. They're fully restored the moment you click Restore.

Backups include Recently Deleted

When you export a backup (Settings → Backup & Sync → Export Now), deleted items are included with their original deletion timestamp. Importing the backup on another Mac restores them to Recently Deleted with the same countdown, so nothing is lost.


Macros

Macros

Macros are special tokens you embed in snippet content. When the snippet expands, each token is replaced with a dynamic value — today's date, clipboard contents, a prompt for user input, and more.

Overview

All macro tokens use curly-brace syntax: {token} or {token:parameter}. They work in both plain and rich text snippets.

TokenWhat it inserts
{date}Today's date — April 17, 2026
{date:MM/dd/yyyy}Today's date in a custom format
{time}Current time — 10:30 AM
{time:HH:mm}Current time in a custom format
{clipboard}Contents of the clipboard at expansion time
{cursor}Where the cursor lands after expansion — works in most standard macOS apps
{fill:Label}Pauses expansion and asks for typed input
{snippet:abbrev}Inline-expands another snippet by abbreviation

To insert a macro token into a snippet, position your cursor in the content area and click the Insert Macro button in the toolbar (the {…} icon). This opens a picker with all available tokens.

Date & Time

{date} inserts the current date in Month D, YYYY format. {time} inserts the current time in h:mm AM/PM format.

Custom formats

Add a colon followed by a Unicode date format string to control the output:

TokenExample output
{date}April 17, 2026
{date:MM/dd/yyyy}04/17/2026
{date:yyyy-MM-dd}2026-04-17
{date:EEEE, MMMM d}Friday, April 17
{date:d MMM yyyy}17 Apr 2026
{time}10:30 AM
{time:HH:mm}10:30
{time:h:mm:ss a}10:30:45 AM

The macro picker's date and time presets show a live preview of each format before you insert it.

Clipboard

{clipboard} is replaced with whatever text is on your clipboard at the moment the snippet fires.

A common use: copy something to the clipboard, then fire a snippet that wraps it in a template.

-- Snippet: "Reply with quote" abbreviation: !rq -- Thanks for your message. You wrote: "{clipboard}" Here's my response...

TypeShift captures the clipboard value at the moment the abbreviation is typed, before any expansion happens, so the value is always what you copied — not something TypeShift itself put there.

Cursor Position

{cursor} marks where the text cursor should land after expansion. Place it anywhere in the snippet content.

Hi {fill:Name}, {cursor} Best, James

In this example, after expansion the cursor lands between the greeting and the sign-off so you can type the body of your message immediately without clicking.

If a snippet has no {cursor} token, the cursor lands at the end of the expanded text.

App compatibility

{cursor} works in most standard macOS apps. In apps that use a custom text engine, the cursor may land at the end of the expanded text instead of the {cursor} position. The in-app macro picker notes this when you insert the token.

Fill-in Fields

{fill:Label} pauses the expansion and shows a small floating panel asking you to type a value. Once you type the value and press Return, expansion resumes with your input substituted in.

Hi {fill:First name}, Thanks for reaching out about {fill:Topic}. I'll get back to you by {date}.
Fill-in field prompt

The fill-in panel appears near your cursor. Type the value and press Return to continue.

Multiple fill-in fields

You can have as many {fill:…} tokens as you like in one snippet. TypeShift collects all the values first — showing each field's label as a prompt — and only then performs the final expansion with all values substituted simultaneously.

Reusing the same field

If two tokens share the same label — {fill:Name} appearing twice — TypeShift asks for the value once and uses it in both places. The label is the identity, not just a hint.

Nested Snippets

{snippet:abbrev} expands another snippet inline. The referenced snippet's content is inserted at that position, with its own macros resolved.

-- Snippet: "Support reply" abbreviation: !support -- Hi {fill:Name}, {cursor} {snippet:!sig}

Here {snippet:!sig} embeds your email signature snippet, so you never have to maintain it in multiple places.

⚠️
One level deep only. Nested snippets are resolved once. A snippet embedded via {snippet:…} will not further expand its own {snippet:…} tokens.

Combining Macros

All macro types can be mixed freely in one snippet. Here's a more complex real-world example:

-- Snippet: "Meeting follow-up" abbreviation: !mtgfu -- Hi {fill:Name}, Great meeting with you on {date:EEEE, MMMM d}. As discussed: {cursor} Next steps: - {fill:Action item} by {fill:Due date} {snippet:!sig}

When this fires, TypeShift collects Name, Action item, and Due date in sequence, then expands everything at once — with today's date formatted as "Friday, April 17" and the cursor landing at the "As discussed:" line ready for you to type.


AI Macros

AI Macros

AI Macros let you embed an AI prompt directly inside a snippet. When the snippet fires, TypeShift sends your prompt to an AI provider and types the response in place — no copy-pasting, no switching apps.

Overview

The AI macro token is {ai: your prompt here}. Write whatever prompt you'd give the AI, and the result is what gets expanded. Combine it with other macros to make prompts dynamic — pass in clipboard text, fill-in values, or today's date.

-- Type "!fix" anywhere to fix grammar in your clipboard -- {ai: Fix any grammar and spelling errors in the following text, return only the corrected text: {clipboard}}
⚠️
AI Macros require an internet connection (except when using Ollama running locally). The prompt is sent to the AI provider you've configured — see the Privacy section at the bottom of Settings → AI Macros for details on what's transmitted.

Supported Providers

TypeShift supports four AI providers. All require an account with the provider; most charge per use (fractions of a cent per expansion).

API Key Required

OpenAI

GPT-4o, GPT-4o mini, and all current OpenAI models.

API Key Required

Anthropic

Claude 3.5 Sonnet, Claude 3 Haiku, Opus, and newer Claude models. Enterprise/gateway support included.

API Key Required

xAI (Grok)

Grok 3 and Grok 3 mini from xAI.

Free · Local

Ollama

Run any open-source model locally. No API key, no internet, no cost per use.

💡
Not sure which to pick? Start with OpenAI's gpt-4o-mini — it's fast, cheap (around $0.0001 per expansion), and handles most writing tasks well. For more complex reasoning or writing quality, step up to gpt-4o or claude-3-5-sonnet.

API Key Setup

Open Settings → AI Macros to configure your provider and API key.

AI Macros settings

Settings → AI Macros. Select a provider, paste your API key, then click Test Connection.

OpenAI

  1. 1
    Go to platform.openai.com/api-keys and create a new secret key.
  2. 2
    Select OpenAI in the Provider picker and paste the key into the API Key field.
  3. 3
    TypeShift fetches the available model list automatically. Choose a model from the picker, then click Test Connection.

Anthropic

  1. 1
    Go to console.anthropic.com/settings/keys and create an API key.
  2. 2
    Select Anthropic and paste the key. TypeShift will list available Claude models.
  3. 3
    Click Test Connection to verify.

xAI (Grok)

  1. 1
    Go to console.x.ai and generate an API key.
  2. 2
    Select xAI (Grok), paste the key, choose your model, and test.

Ollama (local)

  1. 1
    Download and install Ollama, then pull a model: ollama pull llama3
  2. 2
    Make sure the Ollama app is running (it shows a status icon in your menu bar).
  3. 3
    Select Ollama in TypeShift. No API key needed — TypeShift auto-detects running models.
⚠️
Important: API access for OpenAI, Anthropic, and xAI requires a separate account and billing with each provider. It is not included with a ChatGPT Plus, Claude Pro, or similar consumer subscription. Charges are per use — typically fractions of a cent per expansion.

Writing AI Prompts

The {ai: …} token accepts any text as the prompt. Write it exactly as you would write a prompt in ChatGPT or Claude — the clearer and more specific you are, the better the output.

Practical examples

Snippet contentWhat it does
{ai: Write a polite out-of-office reply. Keep it under 3 sentences.} Generates a fresh out-of-office message each time
{ai: Rewrite the following in a professional tone: {clipboard}} Rewrites whatever you've copied into a more formal register
{ai: Translate this to Spanish: {clipboard}} Translates clipboard text to Spanish on demand
{ai: Summarize the following in one sentence: {clipboard}} One-sentence summary of copied text
{ai: Write a LinkedIn connection request to {fill:Name} who works at {fill:Company}.} Generates a personalized connection note after asking for name and company

Getting consistent output

A few techniques that help:

  • Be explicit about format: "Return only the corrected text, no explanation." prevents the AI from adding commentary.
  • Specify length: "Keep it under 2 sentences" or "Write exactly 3 bullet points."
  • Specify tone: "Professional", "casual", "concise", "friendly but brief."
  • Use a System Prompt for constraints that apply to all your AI macros — see below.

Embedding Macros in AI Prompts

Any macro token can be placed inside an {ai: …} prompt — TypeShift resolves all inner tokens before sending the prompt to the AI.

-- Rewrite clipboard text -- {ai: Rewrite the following in a professional tone: {clipboard}} -- Use a fill-in to target the audience -- {ai: Rewrite this for a {fill:Audience} audience: {clipboard}} -- Include today's date in the context -- {ai: Write a status update for {date:EEEE MMMM d}. Key update: {fill:Update}}

The order of resolution is: fill-in fields first (TypeShift collects all values from the user), then {clipboard}, {date}, and other tokens — then the fully-resolved prompt is sent to the AI.

💡
The most powerful pattern: {ai: … {clipboard}}. Copy any text — an email, a document excerpt, a URL — then fire a snippet that processes it with AI. Grammar fixing, translation, summarization, tone adjustment, and reformatting all work this way.

System Prompt

The system prompt is a set of standing instructions prepended to every AI request you make. Use it to give the AI consistent context about who you are and how you want it to behave across all your AI macros.

Find it in Settings → AI Macros → System Prompt. Some useful starting points:

-- Example system prompt -- You are a writing assistant for a software engineer at a B2B SaaS company. Keep responses concise and professional. Return only the requested output — no explanations, caveats, or preamble unless explicitly asked.

The system prompt applies to all providers and all AI macro snippets. Leave it blank if you don't need global context — individual snippet prompts can be self-contained.

Advanced Settings

Expand the Advanced section in Settings → AI Macros to access:

SettingWhat it doesDefault
Temperature Controls randomness. Lower values (0.0–0.5) give more predictable, consistent output. Higher values (0.8–2.0) give more varied, creative output. 0.7
Max Tokens Maximum length of the AI's response. Increase for longer outputs like full emails or summaries of long documents. Decrease to force brevity. 1024
Custom Model ID (Anthropic) Override the model picker with any model ID — useful for newly released models not yet in the standard list.

Enterprise & Gateway

If your organization routes AI requests through a corporate gateway — such as an AWS Bedrock deployment, an Azure OpenAI endpoint, or a custom proxy — you can configure TypeShift to send requests there instead of directly to the provider's public API.

💡
Enterprise settings are available for the Anthropic provider only. They live under Settings → AI Macros → Advanced → Enterprise / Gateway and are hidden until you enter a Base URL, so regular users never see them.
AI enterprise gateway settings

Enterprise settings appear in Advanced once you enter a Base URL.

Base URL

Enter your gateway's base URL — everything up to but not including the path. For example:

https://your-gateway.corp.example.com/bedrock

Leave this blank to use the standard Anthropic API (https://api.anthropic.com).

Authentication

Choose how TypeShift sends the API key to your gateway:

OptionHeader sentWhen to use
x-api-keyx-api-key: <key>Standard Anthropic API and most gateways. The default.
Bearer tokenAuthorization: Bearer <key>OAuth-style gateways and many Azure deployments.
Custom header<your header>: <key>Gateways that require a specific non-standard header name. Enter the header name in the field that appears.

Endpoint Style

Controls what URL path TypeShift constructs for the request. Choose based on what your gateway expects:

StyleURL constructedBody format
Standard {base}/v1/messages Standard Anthropic Messages API. Model name in the body.
Bedrock path {base}/model/{model}/messages Model name in the URL path, not the body. anthropic_version: bedrock-2023-05-31 in the body.
Bedrock invoke {base}/model/{model}/invoke Native AWS Bedrock invoke format. Model in URL, anthropic_version in body.
Custom path {base}{your path} Enter any path. Use {model} as a placeholder where the model ID should be inserted.

AWS Bedrock example

A typical configuration for a Salesforce or similar AWS Bedrock gateway:

Base URL: https://your-gateway.corp.example.com/bedrock Auth: x-api-key (or Bearer, depending on your setup) Endpoint: Bedrock invoke Model ID: us.anthropic.claude-opus-4-6-v1

Custom path example

For gateways with a non-standard path structure, use Custom path with the {model} placeholder:

Base URL: https://your-gateway.corp.example.com Auth: Bearer token Endpoint: Custom path Path: /api/v2/models/{model}/chat

TypeShift will construct the final URL as https://your-gateway.corp.example.com/api/v2/models/us.anthropic.claude-opus-4-6-v1/chat.


Sync & Backup

Sync & Backup

Keep your snippets safe and in sync across all your Macs with iCloud, or export regular backups to any folder.

iCloud Sync

iCloud sync keeps your entire snippet library — snippets, categories, and settings — automatically in sync across all your Macs using your iCloud account. It's opt-in and off by default.

iCloud sync settings

Settings → Backup & Sync. The green checkmark and "Last synced" line confirm sync is active.

Enabling sync

  1. 1
    Open Settings → Backup & Sync.
  2. 2
    Toggle on Sync with iCloud. TypeShift will relaunch automatically to initialize the CloudKit store.
  3. 3
    Repeat on each Mac you want to sync. Make sure all Macs are signed into the same Apple ID.

How long does sync take?

After enabling, existing snippets typically appear on other devices within a few seconds to a couple of minutes. If a Mac has been offline, it will catch up the next time it connects.

Refresh button

If changes from another Mac aren't appearing, hit the Refresh button in Backup & Sync. This reloads the local store and picks up any records CloudKit has already delivered in the background.

Troubleshooting

  • "Not yet synced this session" — sync hasn't completed a full cycle yet. Wait a minute, then hit Refresh.
  • Sync error appears — check that iCloud is signed in and working in System Settings → Apple ID, and that you have sufficient iCloud storage.
  • Snippets missing on one Mac — confirm that both Macs have the iCloud Sync toggle on (not just the backup folder set), and that both are signed in to the same Apple ID.
⚠️
Sync vs. Backup are different things. Setting a Backup Folder (even if it's in iCloud Drive) does not enable live sync — it only saves periodic JSON exports. The Sync with iCloud toggle is what enables real-time sync between Macs.

Backup & Restore

TypeShift can automatically export a JSON backup of all your snippets, categories, and settings to any folder you choose — including iCloud Drive, Dropbox, or a local folder.

Setting up a backup folder

  1. 1
    Open Settings → Backup & Sync → Backup Folder and click Choose…
  2. 2
    Select a folder. TypeShift saves a timestamped JSON file there each time it backs up.
  3. 3
    Click Back Up Now to run an immediate backup.

Restoring from a backup

  1. 1
    In Settings → Backup & Sync, click Restore from Backup…
  2. 2
    Select a .json backup file. TypeShift will import the snippets and settings it contains.
Restoring merges, it doesn't replace. Imported snippets are added to your existing library. Duplicates (same title + abbreviation) are skipped. If you want a clean restore, delete your existing snippets first.

Licensing

Licensing

TypeShift is a one-time purchase of $3.99. There's no subscription, no annual renewal, and all future updates are included.

Free Trial

TypeShift includes a full-featured 30-day free trial — no credit card required. The trial starts the first time you launch the app and counts down calendar days regardless of whether the app is running.

When 5 days remain, a banner appears at the top of the window as a reminder. When the trial expires, snippet expansion is paused until a valid license is activated.

Purchasing

Buy TypeShift at typeshift.monogramcreative.co or directly from the in-app paywall. Payment is handled by Lemon Squeezy — your license key is emailed immediately after purchase.

The $3.99 license covers up to 3 Macs.

Activating a License

  1. 1
    Open Settings → General and find the License section, or click Activate License from the trial banner or paywall.
  2. 2
    Paste your license key into the field and click Activate.
  3. 3
    TypeShift validates the key with the Lemon Squeezy server. Once confirmed, the trial countdown disappears and expansion is fully unlocked.

Validation requires an internet connection on first activation. After that, TypeShift works fully offline — it only checks in once per launch when online.

Multiple Macs

One license key activates up to 3 Macs. Simply enter the same key on each Mac.

Deactivating a Mac

If you've reached the 3-Mac limit and need to activate on a new machine, you can free up a slot by deactivating an old one: open Settings → General → License and click Deactivate this Mac. That slot is immediately available for another machine.

License not validating?

  • Check that your Mac has an active internet connection.
  • Make sure you're pasting the full key with no extra spaces.
  • If you've already used all 3 activations, deactivate one of the other Macs first.
  • Still stuck? Email hi@monogramcreative.co with your order number.