Best Writing Tools for Developers on Mac

Developers write more prose than most people realise. Commit messages, pull request descriptions, inline documentation, Slack messages, GitHub comments, and Confluence pages add up fast. Research shows developers spend roughly 35% of their work time writing non-code text - and the frustrating reality is that nearly every standard writing tool fails in the apps developers actually use.

Why do writing tools fail in VS Code, Terminal, and GitHub?

The core problem is architecture. macOS's built-in spelling and grammar system - NSSpellChecker - is a framework that native Mac apps integrate with directly. When you type in Apple Mail or Safari, NSSpellChecker is running underneath, catching mistakes quietly.

Electron apps break this entirely. VS Code, Slack, Discord, and Notion are all built on Electron, which runs its own Chromium-based text rendering engine. That engine does not call NSSpellChecker. macOS autocorrect sees nothing. macOS spell check sees nothing. Grammarly's browser extension sees nothing. For all practical purposes, you are writing without a net.

VS Code has roughly 73% market share among professional developers. That means the majority of developers are writing code comments, docstrings, README files, and commit messages inside an app where the entire macOS text correction stack is invisible. Every "teh" in a commit message, every subject-verb disagreement in a PR description, every typo in a Slack thread makes it through unchallenged.

Terminal compounds the issue differently. Most terminal emulators treat every text field as code input and disable or ignore system-level correction by design - a sensible default for shell commands, but unhelpful when you're typing a long Slack message in a terminal-based IRC client or editing a markdown file in Vim.

What writing tools actually work for developers?

There are really three categories worth knowing about.

Code Spell Checker (VS Code extension) is the right tool for catching typos inside source code: variable names, string literals, identifiers. It understands camelCase and snake_case splitting. If you type getUserNme instead of getUserName, Code Spell Checker catches it. This is not a prose tool - it is a code-aware spell checker, and it does its job well. Every developer should have it installed.

Grammarly is excellent inside browser tabs. If you write PR descriptions in the GitHub web interface or fill out Jira tickets in Chrome, Grammarly's browser extension covers that surface. But it stops exactly at the browser boundary. Open VS Code and Grammarly is gone. Open Slack desktop and it disappears. It is a partial solution at best for a developer's real workflow.

Charm uses a different approach entirely. Instead of integrating with NSSpellChecker, Charm uses macOS's Accessibility API to read and correct text across every application on the system - including Electron apps. It works in VS Code, Slack, Discord, Notion, and Linear. For a developer whose work is split across these tools, this is the gap that nothing else fills.

How does Charm integrate with a developer's workflow?

Charm runs silently in the menu bar. It has three features that work independently and can be toggled per application:

Spells (cyan glow) corrects spelling in real time, the way autocorrect works on iOS. It replaces misspelled words as you type. Polish (blue glow) applies grammar correction at sentence boundaries - it fires when you finish a sentence, not mid-keystroke, so it does not interrupt your flow. Oracle (purple glow) predicts the next word and lets you accept it with Tab.

The part that matters most for developers is per-app configuration. You do not want Spells running inside VS Code correcting variable names and function identifiers. useState should not become use State. className should not be flagged as a misspelling. Charm handles this by letting you configure each application separately: click the Charm menu bar icon while VS Code is your frontmost app, and you get VS Code-specific toggles. Turn off Spells for VS Code, leave it on for Slack and Mail, and Charm remembers your preferences per app indefinitely.

This separation means you get the full benefit of real-time correction in communication contexts - where it matters most for professionalism - without any risk of interference in your actual code.

What's the right configuration for a developer?

Here is the setup most developers land on after a few days of use:

App Spells Polish Oracle Notes
VS Code Off On Off Grammar help for comments and docs, no interference with code
Slack On On On Full correction for team communication
Mail / Mimestream On On On Full correction for external email
Terminal Off Off Off No correction needed for shell input
Notion / Linear On On On Documentation and tickets benefit from full correction
Discord On Off Off Spelling only for casual channels

The per-app settings panel is accessible from the Charm menu bar icon in two clicks. Switch to the target app, click the Charm icon, adjust the toggles. There is no preferences window to navigate, no configuration file to edit.

The right pairing: Use Code Spell Checker (VS Code extension) for typos inside your source code. Use Charm everywhere else - Slack messages, PR descriptions, documentation, email. They solve different problems and work best together.

Charm costs $9.99 as a one-time purchase. There is no subscription, no account requirement, and no text is sent to any server. Everything runs on-device using Apple's native frameworks. For developers who handle proprietary code or client data, that privacy guarantee matters.

Frequently asked questions

Does Charm work in VS Code?

Yes. Charm uses the macOS Accessibility API to reach text in Electron apps like VS Code that block NSSpellChecker. It works in comments, docstrings, README files, and prose text fields. You can disable Spells per-app to avoid autocorrecting variable names and code identifiers.

How do I stop autocorrect from changing code?

Click the Charm menu bar icon while VS Code is your frontmost app. A per-app settings panel appears. Turn off Spells to disable spelling autocorrect for that app. Charm remembers your settings per application, so code files are never touched while Slack and email still get full correction.

What writing tools work in Electron apps on Mac?

Most writing tools do not work in Electron apps like VS Code, Slack, Discord, or Notion because Electron blocks macOS's NSSpellChecker. Charm is one of the few tools that works around this by using the macOS Accessibility API instead, giving it reach into all Electron apps on your system.

Does Charm work in Terminal?

Charm works in most Terminal emulators for standard text fields, but most developers turn it off in Terminal entirely to avoid any interference with shell commands. That takes two clicks via the menu bar icon - switch to Terminal, click Charm, toggle everything off. Done.

How do I set different Charm settings per app?

Click the Charm icon in the menu bar while the target app is in focus. Charm detects which application is frontmost and shows per-app toggles for Spells, Polish, and Oracle. Changes apply immediately and are remembered. You can have VS Code run Polish only while Slack runs all three features.

Write better prose everywhere you code.

Spelling and grammar correction in VS Code, Slack, GitHub, and every other app you use. $9.99, yours forever.

Learn more about Charm Get Charm for Mac $9.99