Select text. Press a hotkey. Grammar fixed.
AI-powered text transformations for macOS — fix grammar, translate, rewrite, format — without leaving your app.
Free and open-source.
ClipSlop is a free, open-source AI writing tool for macOS that works in any app. Fix grammar, translate text, rewrite in different tones, format as email or Markdown — all with a keyboard shortcut. Use it as a simple AI grammar checker with a single hotkey, or chain multiple AI prompts into a full text transformation pipeline. Supports ChatGPT (free sign-in), OpenAI API, Anthropic Claude, Ollama (local models), and any OpenAI-compatible provider.
- Why ClipSlop?
- Demos
- How it works
- Built-in prompts
- Keyboard shortcuts
- Features
- Comparison with other AI writing tools
- Install
- Requirements
- Contributing
- Acknowledgements
- License
- Support
Most AI writing tools make you copy text, switch to a browser, paste, wait, copy the result, switch back, paste. ClipSlop does it with a hotkey — right where you're already typing.
Fix grammar without thinking about it:
select text → ⌃⌘G → grammar is fixed in place. Done.
That's Inline Run — assign any prompt to a global hotkey, and it runs inline: captures the selected text, transforms it, pastes the result back. You never leave your app.
Need more than one step? Chain transformations into a pipeline:
⌃⌘C → RB → TE → FE → done.
Each key picks a prompt from a navigable tree — RB Rewrite → Business, TE Translate → English, FE Format → Email. Every step is saved, arrow keys to go back, branch from any point. No browser, no copy-paste, no tab switching.
Free, open-source, works with any AI provider — ChatGPT, Claude, Ollama, or your own API.
Unedited screen recordings of the released app.
Three lines, three global shortcuts. Select the first line — Fix Grammar. Select the second — Translate → English. Select the third (prefixed with //) — Run Custom Prompt with the instruction typed inline after //. Every result pastes back where the cursor is.
Inline.Run.Demo.mp4
More on this mode in the docs: Inline Run.
A rough draft typed straight into Gmail: trigger ClipSlop, rewrite for business tone, translate to Finnish, paste back into the same message. Every step is saved as a history node — branch off if you want a different turn.
Prompt.Chaining.mp4
More on this mode in the docs: The full pipeline.
Open a Finnish news article, highlight a paragraph, translate to English with Run in Editor, then condense it into a short summary with Analyze → Summary. The full pipeline goes anywhere you can highlight text.
Analyze.any.text.mp4
More on this mode in the docs: Run in Editor.
Capture a region of the screen. Apple Vision recognises the text on-device, drops it into the panel, and you can keep chaining — translate, then summarise, then copy. Useful when the source is an image, a PDF, or an app that won't let you ⌘C its text.
OCR.mp4
More on this mode in the docs: Screen OCR.
Select text → ⌃⌘G → grammar fixed in place
Assign any prompt to a global hotkey. ClipSlop captures the text, runs the prompt, pastes the result — all in the background.
Select text → ⌃⌘C → Navigate prompts with keys → Chain transformations → Copy result
- Trigger — Select text anywhere, press
⌃⌘C. Text appears in a floating panel. - Navigate — Prompt tree with single-key mnemonics:
T→ Translate,R→ Rewrite,F→ Format. Drill into folders, pick a prompt — one keypress each. - Chain — Result becomes input for the next prompt. Translate → Elaborate → Format as Email. Each step saved.
- History — Arrow keys navigate the full transformation chain. Jump to any step, branch off.
- Use — Copy (
⌘C), edit (⌘E), save (⌘S), or keep chaining.
- Inline Run — Assign a global hotkey to any prompt. Captures selected text, runs the prompt, pastes the result inline — you never leave your app
- Run in Editor — Like Inline Run, but opens ClipSlop and auto-runs the prompt so you can review, edit, or keep chaining
- Prompt shortcuts — Configure per-prompt in Settings → Prompts; shortcuts appear in the menu bar organized by folder
- Keyboard-first — Single-key mnemonics for prompt navigation, all actions have shortcuts
- Full pipeline — Chain unlimited transformations, navigate history with arrow keys, branch from any step
- Multi-provider — OpenAI (sign in with ChatGPT or API key), Anthropic, Ollama, CLI tools, any OpenAI-compatible API
- Nested prompt tree — Organize prompts in folders, each with a mnemonic key
- Built-in prompts — Translate (18 languages), Rewrite (7 tones), Format (7 tools), Dev (6 tools), Analyze (4), Convert
- Manual editing — Edit any result inline (
⌘E), saved as a history step - Find in text —
⌘Fsearch with highlighting across all display modes - Screen OCR — Capture and recognize text from any screen region with OCR (
⇧⌘2) - Blank editor — Open an empty editor (
⌃⌘N), write text, run prompts on it - Generate prompts with AI — Describe what you want, AI writes the system prompt
- Per-prompt settings — Override provider, display mode per prompt
- Import/Export — Share prompt configurations as JSON
- iCloud Sync — Prompts sync across Macs
- Temperature & reasoning — Per-provider temperature control, reasoning effort for ChatGPT models
- Multiple display modes — Plain text, Markdown (native or HTML renderer), HTML
- Adjustable UI — Opacity, size, theme, launch at login
[⌘/] // Your prompt — type // followed by your instruction to run a one-off custom prompt
[T] Translate → English, Finnish, Russian, Spanish, French, German, + 12 more
[R] Rewrite → Elaborate, Neutral, Professional, Warm, Business, Playful, Biblical
[F] Format → Fix Grammar, Clean Up, Beautify Code, Reformat, Email, Markdownify, HTMLify
[D] Dev → Add Comments, Beautify Code, Clean Logs, Explain Code, Explain Stack Trace, Naming
[A] Analyze → Summary, Explain Simply, TL;DR, Condense 20%
[C] Convert → HTML, Markdown
Some prompts ship with default global keyboard shortcuts (Inline Run pastes the result inline, Run in Editor opens ClipSlop):
| Shortcut | Prompt | Mode |
|---|---|---|
⌃⌘/ |
// Your prompt | Inline Run |
⌃⌘⌥/ |
// Your prompt | Run in Editor |
⌃⌘G |
Fix Grammar | Inline Run |
⌃⌘F |
Reformat | Inline Run |
⌃⌘T |
Translate → English | Inline Run |
⌃⌘⌥T |
Translate → English | Run in Editor |
⌃⌘⌥A |
Explain Simply | Run in Editor |
Fully customizable — add your own prompts, folders, mnemonics, and global shortcuts in Settings → Prompts.
| Shortcut | Action |
|---|---|
⌃⌘C |
Trigger ClipSlop (selected text) |
⌃⌘V |
Process from clipboard |
⌃⌘N |
Blank editor |
⇧⌘2 |
Screen capture (OCR) |
⌘E |
Edit mode |
⌘F |
Find in text |
⌘S |
Save to file |
⌘O |
Open in TextEdit |
⌘D |
Cycle display mode |
⌘, |
Settings |
↑↓ |
Navigate history (↑ newer step, ↓ older step) |
Space |
Page down |
⇧Space |
Page up |
Esc |
Close / Back |
| ClipSlop | RewriteBar | WritingTools | Cai | ClipboardAI | WritersBrew | Elephas | Fixkey | ShortcutAI | Raycast AI | PopClip | ChatGPT (web) | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Prompt chaining | ✅ Unlimited chaining, full history | ❌ One action | ❌ One action | ❌ One action | ❌ One action | ❌ One action | ❌ One action | ❌ One action | ❌ One action | ❌ Manual workflow | ||
| Keyboard-first | ✅ Single-key mnemonics, full pipeline navigation, global shortcuts for text fields (Inline Run, Run in Editor) and on-screen text (OCR) | // text commands |
❌ Mouse-driven | ❌ Browser UI | ||||||||
| Prompt organization | ✅ Nested folders with mnemonics | ❌ Chat history | ||||||||||
| Step history | ✅ Navigate back/forward, branch from any step | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No | |
| Branching history | ✅ Branch from any intermediate step | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No |
| Provider freedom | ✅ ChatGPT sign-in (free), API keys, Ollama (local), CLI tools | ✅ 37+ providers, local models, Apple Intelligence | ✅ Gemini (free), OpenAI, Anthropic, Ollama, MLX local | ✅ Built-in local, Ollama, LM Studio, Apple Intelligence, cloud APIs | ❌ Built-in only (provider unclear) | ❌ Managed API only (no BYO keys) | ❌ OpenAI only | |||||
| Screen OCR | ✅ Capture any screen region (⇧⌘2) |
❌ No | ✅ Screenshot text extraction | ❌ No | ✅ OCR to Text AI | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No | ||
| Platform | ✅ macOS + Windows + Linux | ✅ macOS + Windows (native, works in any app) | ❌ Chrome extension only (browser text fields) | ✅ Web (any platform) | ||||||||
| Price | ✅ Free, open-source | ✅ Free, open-source | ✅ Free, open-source | ❌ $9.99–$39.99/mo | ❌ $48/year | ❌ $20/mo |
brew tap mekedron/tap
brew install --cask clipslopGrab the latest .dmg from Releases. Drag to Applications.
ClipSlop is not signed with an Apple Developer certificate, so macOS will block it on first launch. This is expected — I simply don't want to pay Apple $99/year for a developer account.
The app is safe. The source code is fully open, and all release builds are produced automatically by GitHub Actions — nothing is added to the binary that isn't in this repository.
To open ClipSlop:
- Drag
ClipSlop.appto your Applications folder - Double-click to open — macOS will show a warning and refuse
- Open System Settings → Privacy & Security
- Scroll down — you'll see "ClipSlop was blocked from use because it is not from an identified developer"
- Click Open Anyway, then confirm
You only need to do this once. After that, the app opens normally.
Because the app is unsigned, macOS may change its internal bundle identifier between versions. When this happens, previously granted permissions (Accessibility, Screen Recording) stop working. To fix this:
- Open System Settings → Privacy & Security → Accessibility
- Find ClipSlop in the list and remove it (select → click "−")
- Click "+" and re-add
ClipSlop.appfrom your Applications folder - Do the same for Screen Recording if you use the OCR feature
This is an unfortunate side effect of not having a signed app. Your prompts, providers, and settings are not affected.
git clone https://github.com/mekedron/ClipSlop.git
cd ClipSlop
swift build
# Or open Package.swift in Xcode → RunRequires macOS 14+ and Xcode with Swift 6.0+.
- macOS 14.0+
- An AI provider: sign in with ChatGPT (free), API key (Anthropic, OpenAI), local Ollama, or CLI tools
ClipSlop ships with a pre-commit hook that blocks commits when any localization key is missing in any of the 16 translated languages. Install it once after cloning — .git/hooks/ is not versioned, so the hook is not active out of the box:
./Scripts/install-hooks.shWhat the hook does:
- Runs only when a
*.lproj/Localizable.stringsfile is in the commit. - Compares every key in
en.lproj/Localizable.stringsagainst the other 16 languages. - Blocks the commit if any translation is missing, and prints the offending keys per language.
To check translations manually at any time:
./Scripts/check-localizations.shRe-run ./Scripts/install-hooks.sh whenever the contents of Scripts/hooks/ change. Bypassing the hook with --no-verify is strongly discouraged — missing translations break the UI for users of those languages.
ClipSlop is built with these open-source libraries:
- KeyboardShortcuts by Sindre Sorhus — customizable global keyboard shortcuts
- LaunchAtLogin by Sindre Sorhus — launch at login support
- Sparkle — software update framework for macOS
- swift-markdown by Apple / Swift Project — Markdown parsing and rendering
- Textual by Guillermo Gonzalez — native SwiftUI Markdown rendering
- swift-rich-html-editor by Infomaniak — WYSIWYG rich HTML editor
- Lobe Icons by LobeHub — provider icons for OpenAI, Anthropic, Ollama, Claude, Codex
MIT License — see LICENSE.
If ClipSlop saves you time, consider buying me a coffee ☕
