Handwriting
Write with your finger or stylus; on-device recognition turns ink into text.
Handwriting turns a full-width canvas into a keyboard: write a letter or word with a finger or stylus and it’s recognized on-device and dropped into your text. Full edition only: it runs on Google ML Kit’s digital ink models, which only ship in the full build.
Opening the panel
Section titled “Opening the panel”Open Handwriting from the toolbar (or the toolbox if you haven’t pinned it) to swap the keyboard for a full-width writing canvas. A fixed action rail sits on the right with four keys: Delete, Space, Enter, and a keyboard icon that closes the panel and returns you to normal typing.
Write anywhere on the canvas. Strokes render live as you draw, and dim to partial opacity while recognition is running. A single tap still counts as a stroke (enough to register a period or the dot on an “i”), so short marks aren’t lost.
If you have two or more enabled languages with a handwriting model, a small chip appears in the top-left corner showing the active one; tap it to cycle through the rest. With only one language available, no chip is shown.
Fixing a stroke
Section titled “Fixing a stroke”Two different controls undo ink, and they don’t do the same thing:
- Undo last stroke, an icon that appears in the bottom-left corner once you’ve drawn something, removes only the most recent stroke and re-runs recognition on whatever ink remains.
- The rail’s Delete key is different: while ink is still waiting to be recognized, pressing it throws away all pending strokes at once rather than deleting already-committed text. It’s the natural “no, not that” reaction mid-word. Once the strokes have already turned into text, Delete goes back to deleting committed characters normally, and it auto-repeats on a hold like it does on the main keyboard.
Handwriting without opening the panel
Section titled “Handwriting without opening the panel”There’s a second way to write by hand that doesn’t need the panel at all. With Gesture typing turned on, a Handwrite with swipes choice appears underneath it. Set it to “Handwrite” and a swipe across the letter keys draws a stroke on the keyboard itself instead of gliding a word. Recognition and insertion work exactly like the panel; a plain tap still types its key normally. This is off by default (set to “Type words”).
Two extra options only appear once handwriting-by-swipe is selected:
- Dot leeway after drawing — default 700 ms, adjustable from 0–1500 ms. Letters like i, j, and t need a second mark after the main stroke; for this long after you finish a stroke, a tap over the letters is folded into that same character (the dot or cross) instead of typing the key underneath it. Setting it to 0 turns the leeway off.
- Turning handwriting off here also removes the Glide across spacebar and Cooldown after typing options, since both only make sense for word-gliding.
If the language you’re typing in has no downloaded model yet, a one-time notice points you at the Handwriting settings screen instead of silently failing.
Downloading language models
Section titled “Downloading language models”The Recognition models section lists one row per enabled language that ML Kit can recognize, with its own status: not downloaded (with a download button), downloading, downloaded and working offline (with a delete/trash icon), or download failed. Recognition runs entirely on-device once a model is on your phone: each language needs a one-time download of about 20 MB, and after that handwriting for that language works without a network connection. See network policy for what else does and doesn’t touch the network.
The list of available models isn’t hardcoded in WM Keyboard: it’s read straight out of ML Kit’s own digital ink library, then filtered down to the languages you actually have enabled. That means enabling a new keyboard language surfaces its handwriting model automatically, with nothing WM-Keyboard-specific to configure; it does mean the underlying catalog of which languages have a model at all only grows when ML Kit itself does.
If an enabled language has no ink model, it’s called out separately: writing in that language falls back to the nearest language that does have one, rather than failing outright. And if none of your enabled languages has a model, the whole section is replaced with a prompt to add a language under Languages & layouts first.

Options
Section titled “Options”- Stylus only — off by default. When on, only a stylus (S Pen or similar) draws on the canvas; finger touches are ignored completely. Even with this off, a finger touch is briefly ignored right after a stylus stroke, so a palm resting on the screen while you write doesn’t add stray ink.
- Auto space — on by default. Inserts a space between words you write one after another, but never before punctuation.
- Recognition pause — default 700 ms, adjustable from 300–2000 ms. How long the canvas waits after your last stroke before sending the word off for recognition. Shorter feels snappier but can cut a multi-stroke letter or a Bengali conjunct in half if you pause mid-letter; longer gives you more breathing room between strokes.
Details & edge cases
Section titled “Details & edge cases”- Palm rejection happens automatically and isn’t a setting: once the canvas sees a stylus point, it ignores finger touches for 800 ms afterward.
- There’s no hover preview, no air-gesture support, and no S Pen side-button handling. The only stylus-specific behavior is palm rejection.
- Auto-capitalization at the start of a sentence only applies when you’re writing in American English with Auto-capitalize on, and never in a password or other secure field. Bengali and other languages without letter case are skipped entirely.
- The recognizer only sees the last 20 characters of text before your cursor as context (a limit set by ML Kit itself, not WM Keyboard).
- Handwriting has no direct-boot support: neither the panel nor handwriting-by-swipe works before you’ve unlocked your device once after a restart, unlike some other tools. If Power Saving mode is set to drop on-device models to save battery, handwriting-by-swipe is switched back to plain gesture typing until you turn it back on.
Why full only
Section titled “Why full only”Digital ink recognition depends on com.google.mlkit:digital-ink-recognition, which is compiled into the full build and never included in the lite build at all; it isn’t just hidden behind a toggle. The Handwriting tool itself doesn’t appear in the toolbar or toolbox on lite, and the “Handwrite with swipes” choice under Gesture typing is likewise only shown on full. See Full vs Lite if you’re deciding between builds.
