If you are searching for an AI text expander on a Mac, here is the verdict before anything else:
If you type the exact same words every day, like your address, a sign-off, or a standard reply, you want a text expander. macOS already has one built in for free called Text Replacements. Third-party tools like Espanso and TextExpander go further.
Yet, if the words depend on what is in front of you, like the email you are answering in Gmail or a thread in Slack, a snippet cannot write them. That is where you ask an AI. I make AtAt, an AI assistant for Mac that lets you ask an AI by typing @@ right where you are typing, and the answer lands at your cursor.
AtAt is not a text expander. It does not watch for abbreviations and expand them. I want to say this plainly up front, because many people will want both kinds of tool on their Mac.
I read every vendor detail on that vendor's own page on 2026-11-01, and each one links to its source.
What an AI text expander actually does
A classic text expander is simple: you type a short abbreviation, and it replaces it with fixed text. You type :email or addr, the expander catches those keystrokes, deletes them, and pastes your full email address or street address. It is predictable, runs locally, and produces the exact same characters every time.
Lately, the phrase "AI text expander" gets used for two different things.
The first meaning is snippet tools adding AI on top. On TextExpander's blog, TextExpander describes an AI that reads the text around your cursor to suggest a matching Snippet from your library, and drafts new text when no Snippet exists. TextExpander says you review the draft before using or saving it, and that the preview starts as a Chrome extension with desktop app support to follow, in English only at first.
The second meaning refers to web tools that make a sentence longer ("sentence expander"). If you paste five words into a box and an AI spits out three paragraphs of filler, that is just sentence lengthening, and it is not what you need when you want to type faster on a Mac.
macOS already has a free text expander
Before installing anything new, check what macOS already includes for free.
Apple builds Text Replacements into macOS. Go to Apple menu -> System Settings -> Keyboard -> Text Replacements, then click Add. Type the shortcut you want to use and the replacement phrase you want to see. You can also open it inside many apps through Edit -> Substitutions -> Show Substitutions -> Text Settings.
It works fine for quick phrases like turning omw into On my way!, but Apple's guide notes two limits: replacements are not available in every app, and with Chinese or Japanese input sources, they are stored in your user dictionary instead.
If you want a free open-source step up, look at Espanso. Espanso runs on macOS, Windows, and Linux, watching for keywords you type and replacing them. Each replacement is a match in a YAML file pairing a trigger like :br with a replace string like "Best Regards". It costs nothing and stays out of your way.
Text expander vs. asking your AI, side by side
Here is how classic expanders, AI-augmented snippet tools, and AtAt compare:
| Tool | What you type | What comes out | Knows what's on screen? | Cost to start |
|---|---|---|---|---|
| macOS Text Replacements | A shortcut (e.g. omw) | Fixed text (On my way!) | No | Free, built in |
| Espanso | A trigger (e.g. :br) | Fixed text | No | Free, open source |
| TextExpander (with its AI) | An abbreviation or cursor trigger | A library snippet or drafted snippet | Reads text around your cursor to pick a Snippet | See its pricing page |
AtAt (@@) | @@ plus your prompt | Generated text at your cursor | Yes: the field, and a window snapshot if you allow it | 14-day preview, then a plan for @@ |
When the words depend on the screen, type @@
A snippet works when the words are the same every time. But, when the words depend on what is right in front of you, a canned snippet cannot help.
Take replying in Gmail. You open an email from someone asking three different things: can we do Thursday at 2 PM, where is the revised budget, and who is taking notes? A snippet can paste your standard greeting, but it cannot answer the email because it has never seen it.
Instead, click into the reply box and type @@. The moment you type those two characters, AtAt's input opens right next to your cursor, and the @@ you just typed is taken back out. If you have Screen Context turned on and your AI provider reads images, AtAt also takes a snapshot of the window as the input opens, showing it as a tile you can keep or remove. You type what you actually want to say—something like "reply yes to Thursday, ask about the budget"—and press Return.
The draft does not get dumped straight into your email. It lands in a preview card first, so you can read what the model wrote before anything touches your message. If it looks right, press Tab, and AtAt inserts it at your cursor. If it is close but too wordy, you do not have to rewrite it yourself; press Return or click the card, say "shorter", and Tab takes the revised version. If you do not want it at all, Esc drops it.
The other moment is rough notes. Say you are in Slack or Apple Notes, and you have jotted down a messy cluster of bullet points during a call that you want to turn into a clean update. Select the text with your mouse, and a small bar appears next to it. Click Ask @@, which attaches your notes to the input, ask it to turn them into a proper message, and hit Return. Once you see the draft in the preview card, clicking Insert replaces your rough notes with the clean message. (There is also a built-in Fix Grammar button on that same bar if all you want is to clean up spelling and grammar without rewording anything.)
Under the hood, AtAt runs the AI you already have: command-line agents like Claude Code (claude) and Codex (codex), your own API key, or a local Ollama model running directly on your Mac. The prompts never pass through AtAt's servers. If you just want a quick continuation while typing, TabTab lets you press ⌥⇥ to write your next few words inline, and Tab keeps them.
Keeping fixed text in AtAt anyway
AtAt does not have abbreviations, but it does have Favorites for text you find yourself reusing.
When you type something into AtAt's input that you know you will need again, pressing ⌥Return saves it as a note directly in Favorites without running an AI agent. Later on, press ⌘⇧V to open the shelf of your recent copies (up to 200), switch to Favorites, and the first one is already selected. Pick the one you want, press Return, and it pastes into your document. You can also add or search favorites right from that shelf.
To be clear, this is pick-and-paste, not an expander. You are pulling up a shelf and selecting a note, rather than typing :sig and watching it expand in place. Clipboard History and Favorites keep working without a plan.
Where a text expander is still the better pick
I make AtAt, but a traditional text expander is still the better pick in several clear situations.
First, speed and certainty. A text expander triggers instantly and runs offline, completely free of AI. If you need your phone number, a Calendly link, an IBAN, or your mailing address, an abbreviation is faster than any prompt. It gives you the exact same output every single time, with no model in the loop.
Second, team consistency. On their blog, TextExpander talks about teams sharing approved snippets. If you work on a team that needs everyone using the exact same legal disclaimers or standard support phrasing, a shared snippet library makes sense where an AI model might reword things.
There are also platform requirements: AtAt needs Apple silicon and macOS 15+, and typing @@ to ask an AI needs a plan after the 14-day preview. macOS Text Replacements and Espanso are free.
How to choose
Here is how to decide between them:
- If you type the same text daily: use macOS Text Replacements. It is built in, free, and handles everyday shortcuts without installing anything.
- If you have lots of snippets or share a team library: pick a dedicated expander like Espanso or TextExpander.
- If your replies depend on the message in front of you: AtAt is built for that, letting you ask an AI right at your cursor.
- If you write all day on a Mac: you will probably want both. Use a classic expander for fixed text, and use AtAt when you need an AI that knows what is on your screen. You can read more about how it works on our FAQ.
Frequently asked questions
What is an AI text expander?
An AI text expander turns short triggers into text using a language model, or drafts longer text from rough notes. Classic text expanders swap abbreviations for fixed text, while AI expanders generate or suggest words based on context.
Does macOS have a built-in text expander?
Yes, macOS includes Text Replacements in System Settings under Keyboard. It swaps preset shortcuts for fixed phrases across many Mac apps, but it does not use AI or adapt to what is on your screen.
Is AtAt a text expander?
No, AtAt is not a text expander. It does not watch for abbreviations to replace them with fixed snippets; instead, you trigger an input to ask an AI directly inside any text field, and the answer lands at your cursor.
Is there a free AI text expander for Mac?
macOS Text Replacements and Espanso are free text expanders, but neither uses AI. AtAt offers a 14-day preview with no account or card required, after which asking the AI needs a plan, though Clipboard History and Favorites remain completely free.
Can I use my own ChatGPT, Claude or local model?
Yes, AtAt lets you bring your own AI tools. You can run command-line agents like Claude Code or Codex, enter your own API key for supported providers, or connect a local Ollama model, and your prompts never pass through AtAt servers.
Can I use a text expander and AtAt together?
Yes, they do different jobs and work well side by side. Use a classic expander for fixed text like your email or address, and use AtAt when you need an AI to write a reply based on what is currently on your screen.