-
Notifications
You must be signed in to change notification settings - Fork 4
System spell checker
WM Keyboard can also stand in as Android's own spell-check service, the one that draws the red underline in any app's text field, no matter which on-screen keyboard is active at the time. It's built on Harper, the same offline grammar engine behind the in-keyboard Grammar check tool. Turn it on and the same fixes reach every app, not only WM Keyboard's own suggestion strip.
Installing WM Keyboard doesn't make it your spell checker. That's a separate, OS-level choice, the same way you'd pick a default browser. The quickest route starts inside the app:
-
Open the Grammar check tool's settings.
-
Tap Use Harper everywhere, under the System-wide group. Android's own Spell checker screen opens. On OEM builds that hide that screen, the input-method settings screen opens instead.
-
Select WM Keyboard (Harper).
WM Keyboard offers one subtype here, English, whatever other languages you type in day to day. Harper itself only checks English. Dialect (American, British, Canadian, Australian) isn't a separate subtype on that screen. It follows the same English dialect setting the in-keyboard Grammar tool uses, so the underlines you see in other apps match what the panel would have flagged.
The whole feature is full-edition only: the settings entry, the service, and the picker listing. Lite builds ship neither Harper's native library nor the manifest entry that advertises the service, so there's nothing to turn on.
The system spell checker and WM Keyboard's own suggestion strip are separate mechanisms that happen to share the same Harper engine underneath. They don't always agree, and one can be available when the other isn't:
- Where it runs. The spell checker is a service of its own inside the WM Keyboard app, wired to Android's text-service framework rather than to the keyboard. It works in any app, with any input method, and keeps working when WM Keyboard isn't your current keyboard at all. In-keyboard autocorrect and suggestions only run while WM Keyboard itself is the active keyboard.
- Language coverage. The spell checker is English-only, because Harper is English-only. Typing suggestions and autocorrect work in every language you've enabled, each with its own dictionary.
- Editions. The spell checker is full-edition only. Typing suggestions and autocorrect ship in both full and lite. Dropping Harper on lite doesn't touch ordinary typing prediction.
- Reactive vs. proactive. The spell checker only answers when the host app's text-service framework asks it to, underlining and offering fixes on request. Autocorrect works the other way round. It fixes typos the moment you press space and offers next-word predictions as you type, gated by its own confidence threshold.
- What triggers an underline. Harper's lints carry a span, an offset and a length, and the spell checker only reports one whose span actually covers text. A pure insertion, like a missing comma, has zero length and gets silently dropped here, even though the same lint would show up as a fixable chip in the in-keyboard Grammar tool.
Turn on Suggest contact names under Typing settings and the spell checker loads the same contact index the in-keyboard suggestion strip uses. It then treats that index specially in two ways:
- A word that matches a contact's name or a contact's email address is never flagged as a typo. No underline appears under a name it recognizes, in any app.
- A mistyped word close to a contact's name (a one-letter typo, or a prefix of one) is offered first in the correction menu, ahead of Harper's own grammar-based suggestions. Addresses are only used to suppress the underline. A mistyped address is never corrected toward the right one.
One toggle covers both: Suggest contact names loads names and email addresses for the spell checker. The separate Suggest contact emails toggle, also under Typing, only affects the in-keyboard suggestion strip. It has no effect here, which is easy to miss when the two settings sound like they'd overlap. See Contact-aware typing for both toggles in full, including what gets read and how.
Tools / Grammar check
| Setting | Default | Notes |
|---|---|---|
| Use Harper everywhere | Action row | Opens Android's Spell checker picker; only shown on full builds |
| English dialect | American | Shared with the in-keyboard Grammar tool; changing it here changes both |
| Underline only, no fix popup | Off | Android 12 (API 31) and up only |
Underline only, no fix popup keeps the red underline but tells Android's text framework to skip the correction popup. Use it when you want a heads-up that something looks off without a list of replacements getting in the way. The row itself is hidden below Android 12 rather than shown-but-inert, since the underlying flag doesn't exist on older versions.
- Re-check delay doesn't apply here. The Grammar check screen also has a Re-check delay slider (100–1500 ms, default 350 ms). That only paces how often the in-panel Grammar tool re-lints while you're actively writing. The system spell checker has no debounce. It answers synchronously whenever the host app's framework calls in.
- Runs even when WM Keyboard isn't your keyboard. The checker loads Harper (and, if enabled, your contacts) itself, on its own schedule, rather than borrowing anything the IME set up, so it keeps working with any other keyboard app in front. It only needs to be selected as the system spell checker. Which on-screen keyboard you're using doesn't matter.
- Runs locally, like everything else. Harper is a native library loaded on-device, and there's no network client anywhere in the spell-checker code path. Contacts are read into memory the moment the toggle is on and dropped again the moment it's off, never written to disk. See Privacy at a glance for what does and doesn't touch the network elsewhere in the app.
- All four rows are in Settings search. "English dialect," "Re-check delay," "Use Harper everywhere," and "Underline only, no fix popup" each turn up there, and each search result lands on the Grammar check screen.
- Lite has none of this. The manifest entry, the service, and the picker listing are all absent on lite builds, genuinely not shipped rather than hidden, because lite doesn't include Harper's native library at all.
- Home
- Getting started
- Typing
- Languages
- Suggestions & correction
- Emoji & expression
-
Tools
- Clipboard manager
- Voice typing
- Offline voice (Whisper)
- Handwriting
- Scanner (OCR, QR, documents)
- Camera tool
- Translate
- Search, Wikipedia & dictionary
- Media controls
- AI chat
- AI tools
- Utility tools
- Snippets & text expansion
- Text editing & cursor tools
- Instruments
- Trackpad
- Calendar
- App launcher
- Learn from text
- Vocabulary
- Resize the keyboard
- The toolbar
- Themes & appearance
- Addons
- Plugins
- Privacy & security
- Accessibility
-
Reference
- Gesture cheat sheet
- Typing
- Hardware shortcuts
- Deep links & launcher shortcuts
- Key press
- File formats
- Dictionaries & words
- Importing from other keyboards
- Languages
- Importing from Espanso
- Appearance
- Keyboard themes
- Troubleshooting
- Glossary
- Keyboard font
- Easter eggs
- Icons
- Layout & size
- Key layouts
- Rows & bars
- Keyboard modes
- Emoji
- Phone number formats
- Tools
- Addons & plugins
- Reference - Accessibility
- Fingerprint lock
- Reference - Data saver
- Reference - Permissions
- Privacy
- Reference - Selection actions
- Servers
- Reference - Backup & restore
- About & diagnostics
- Statistics
- Settings A–Z
- Development