A small menu bar app that brings the Japanese IME's conversion to English typing on macOS.
Type a word, tap right Shift, and a candidate window appears; tap again to walk through the candidates, press
Return to confirm. The candidates come from NSSpellChecker — the same engine that fed the Touch Bar's typing
suggestions — so they are the ones macOS already knows, shown on a Mac that has no Touch Bar.
Because SpellBar reads the keyboard through an event tap, it works in apps that do not use AppKit's text views, where the system's own inline prediction and autocorrect never appear: VS Code, Chrome, Electron apps, terminals.
- Conversion on a key. Right Shift converts the word behind the caret. Nothing is replaced until you confirm.
- Candidates while you type, from the first letters, if you prefer them always visible (on by default).
- Reconversion. The word stays reachable after a space, after Backspace, and after you move the caret back to it — by clicking into it, selecting it, or landing in the middle of it.
- It learns. The correction you pick for a misspelling is offered first the next time you make it. No list to maintain by hand.
- Meanings. The selected candidate's dictionary definition appears under the candidates, so you can tell
affectfromeffect.⌘Dopens the full entry in Dictionary.app. The text comes from the dictionaries you have enabled in Dictionary.app, in the order you set there: an English–Japanese dictionary on top gives Japanese glosses, an English dictionary on top gives English definitions. - Programming words.
async,kwargs,kubernetesand friends are known, alongside the English dictionary. - It stays out of the way. The window follows the caret like an IME's, keeps its height and left edge steady, and disappears while the Japanese input method is composing kana or while macOS reports secure input.
| Key | Action |
|---|---|
| Right Shift (tapped alone) | Convert the word behind the caret, or move to the next candidate |
return |
Confirm |
space |
Confirm and type a space |
esc |
Put the original spelling back |
↓ / tab, ↑ |
Next, previous candidate |
⌘1–⌘5 |
Confirm that candidate directly |
⌘D |
Open the word in Dictionary.app |
Right Shift counts as the conversion key only when it is pressed and released with no other key in between, so
Shift+letter is unaffected and the key still reaches the app.
Apple silicon only: the app is built for arm64, with no Intel build. It is built for macOS 13 or later, but it has been tested only on macOS 26.
The menu and alerts are in English and Japanese. SpellBar follows your Mac's language order; to use the other one for this app alone, open System Settings → General → Language & Region → Applications, add SpellBar, and pick a language. Restart SpellBar afterwards.
Download SpellBar-1.2.0.dmg and SpellBar-1.2.0.dmg.sha256 from Releases into the same
folder. To check the download, run this there; it must print SpellBar-1.2.0.dmg: OK:
shasum -a 256 -c SpellBar-1.2.0.dmg.sha256Then open the disk image and drag SpellBar onto the Applications folder in the same window.
The app is signed but not notarized, so the first launch is blocked. Open it once, then go to System Settings → Privacy & Security, find the message about SpellBar near the bottom, and choose Open Anyway.
Then grant two permissions in System Settings → Privacy & Security and restart the app:
- Accessibility
- Input Monitoring
Both are explained in PRIVACY.md. If SpellBar's icon shows a warning triangle, one of them is missing.
The bundle identifier changed in 1.1.0, so macOS treats the app as new: grant the two permissions again, and remove
the old SpellBar entries in Accessibility and Input Monitoring with the − button. Your learned words and menu
settings are carried over automatically, but Start at login is not: switch it on again from the menu. If an old
SpellBar login item lingers in System Settings → General → Login Items, remove it there.
Open the SpellBar menu: its first line says why it is not reacting right now — turned off, missing a permission, the Japanese input is typing kana, or macOS has secure input on (and which app switched it on).
Secure input deserves a word. While any app has it on, macOS hides every keystroke from every other app, SpellBar included. Password fields switch it on; some apps forget to switch it off again. Nothing SpellBar can do gets around it, but the menu names the app, and quitting that app or leaving its password field clears it.
SpellBar sees every key you type, but it can only place its window and read the text around the caret where an app answers accessibility questions.
- Remote desktop, virtual machines and editors that draw their own text report no caret position. The window stays at the bottom of the screen (or the top, if you chose that) instead of following the caret, and reconverting a word after moving the caret does not work.
- Web pages. Chromium-based browsers and Electron apps may not expose a page's text fields to accessibility unless they are told an assistive tool is running; where they do not, the window stays at the bottom. Editors that draw their own text, Google Docs among them, may also not accept the keys SpellBar types to replace a word. That has not been verified.
- Secure input, as above.
Everything is in the menu bar item: enable or disable, always-on candidates, start at login, and where the candidate window goes (follow the caret, always at the bottom, always at the top). The position submenu also has a debug readout that shows how the caret position was obtained, for apps where following it fails.
Add your own words — project names, APIs, anything the dictionary lacks — one per line:
mkdir -p ~/.config/spellbar
echo "kubectl" >> ~/.config/spellbar/terms.txtWhat SpellBar has learned lives in ~/.config/spellbar/learned.json. Delete the file to forget it.
No Xcode project and no dependencies: one script compiles the sources with swiftc and assembles the bundle.
Xcode has to be installed, because its xcstringstool compiles the String Catalog of the interface texts.
./build.shThe self-test runs the candidate engine, the word tracking and the reconversion rules without needing any permission:
./SpellBar.app/Contents/MacOS/SpellBar --selftestbuild.sh signs with a self-signed certificate when it is in the keychain and falls back to ad-hoc signing with a
warning. docs/code-signing.md explains why that matters: with ad-hoc signing macOS forgets
the two permissions on every rebuild.
SpellBar has no network code at all, and nothing you type is sent anywhere. It reads the keyboard, which is a serious permission to hand out — which is why the source is here to read. See PRIVACY.md.
MIT, Copyright (c) 2026 Kosuke Satake. See LICENSE and THIRD_PARTY.md; SpellBar bundles no third-party code.
Issues are welcome. Code contributions are not accepted at the moment, to keep the copyright with one holder.
This app was built with the help of Claude (Anthropic) through Claude Code; design, review and testing are by Kosuke Satake. Anthropic does not endorse this app.