Keeboard
Utilities
Free · Designed for iPad. Not verified for macOS.
Keeboard is a multilingual iOS keyboard with 9+ input methods for English, Chinese, Japanese, and Cantonese — built to keep every keystroke entirely on your device.
No servers. No accounts. No data collection. Just fast, private, multilingual typing.
• English QWERTY with autocorrect
• Chinese Simplified: Pinyin (拼音) · Shuangpin Xiaohe (双拼)
• Chinese Traditional: Pinyin (拼音) · Zhuyin (注音)
• Cantonese Jyutping (粵語) — Simplified & Traditional
• Japanese: Romaji · Flick (フリック)
Switch between languages instantly with the globe button — no trip to Settings required.
Smart Predictions
On-device word predictions powered by n-gram language models. Gets the right character faster.
Voice Typing
Speak instead of type. Uses Apple's on-device speech recognition across all supported languages.
Text Snippets
Type a short trigger and press space — Keeboard expands it to the full phrase automatically.
Autocorrect & Auto-Capitalize
Corrects as you type with one-tap revert. Capitalizes automatically after sentences, question marks, and exclamation points.
Emoji Picker
Searchable emoji panel with recent favorites. No need to switch keyboards.
more • fix(swipe): open the accent popup when the hold completes, not at touch-down
1.4.8 Sep 15
• test(swipe): sweep the alternate-selection reinforcement boost (#339)
• fix(swipe): a resting finger no longer disables glide typing (Y/U/I/O/K device report)
• test(swipe): pin English in CJKSwipeInfraTests' per-engine gate (#503)
• fix(swipe): discard orphaned touch-down presses at glide end (#504)
1.4.7 Sep 14
• ci(distribute): add refresh_certs input to regenerate match profiles
• fix(swipe): stop feeding the neural encoder 150 frames of zeros
• perf(bundle): retrain the Chinese word LMs and drop the dead triStart index
• fix(keyboard): close the field-context staleness hole from #341
• fix(ime): wire pinyin apostrophe separator, ja/zh association, zhuyin normalizer
• fix: release the mixed-mode sidecar under memory pressure + loud App Group diagnostics
• fix: container-app gaps — dead iCloud toggle, foreground sync, onboarding languages, hidden settings
• fix(autocorrect): stop overcorrecting real words, block offensive replacements
• fix(keyboard): theme-thread emoji/clipboard/language popups, distinct iPad landscape height
• test(perf): print the resident-delta and topNext guardrail values on every run
• fix(swipe): stop the accent popup from stealing a starting glide
1.4.6 Sep 2
• fix(ci): move the tap-offset ratio gate out of the isolated perf phase
• perf: drop the String allocation from the tap-offset bias hot path (#349)
• perf: memoize the tap-offset bias lookup and gate it on latency (#349)
• build: land #454 gate 3 — SWIFT_TREAT_WARNINGS_AS_ERRORS
• test(ui): surface gesture findings in the log and pin the cancel outcome
• Apply learned tap-offset bias to autocorrect substitution cost (#349 stage 3)
• Add strict concurrency + SwiftLint baseline (issue #454)
• fix: cancel the accent popup from where the drag is headed, not just where it was sampled
• fix: sliding away from the accent popup must not select an accent
• zh word-bigrams: migrate to mmap kblm trie (issue #459, partial)
• tests: enable CI coverage reporting; add view-layer logic tests (#456)
• Gzip the swipe vocab data files (~4.8MB saved)
• Extract SwipeGestureCoordinator from KeyboardViewController (#457)
• Consolidate pinyin_zh-Hans/pinyin_zh-Hant into one pinyin_zh.sqlite (#448)
• Unify SimplifiedDictionary as a conversion wrapper over TraditionalDictionary (#450)
• Add VoiceOver accessibility annotations to KeeboardFeature UI
• Add Settings UI for smart punctuation and traditional Chinese region
• web: move Korean to shipped languages, add sitemap + robots.txt
• Strip redundant UNIQUE autoindexes from bundled SQLite dictionaries
• Show uncommitted composition inline as marked text
1.4.5 Aug 27
• Stop the accent popup from stealing CJK glides
1.4.4 Aug 16
• Give the user a way to clear on-device learned typing data (#416)
• Add expand-to-grid affordance for long candidate lists
• Measure why woaini capture 2 cannot decode (#328)
• Memoize NeuralSwipeScorer.blend so swipe commit reuses the preview's neural score
• Sweep the neural blend weight (#351)
• Honor Reduce Motion; clamp the onboarding language badge for Dynamic Type
• Add optional Full Access prompt to onboarding
• Add the missing interactive demo page to onboarding
• Enable PRAGMA mmap_size on read-only bundled SQLite dictionaries
• Release swipe word lists and the neural scorer under memory pressure
• Cache UserHistorySource reads and enable WAL to fix per-keystroke SQLite hot path
• Stop the key grid re-rendering on every keystroke (#426)
• Decline a Pinyin glide with no turns instead of guessing (#419)
• Keep a CJK glide's runner-ups after it auto-commits (#417)
• Make accent hold-and-slide actually work (#352)
• Raw tap position reaches the offset model (#349, stages 1-2)
• Let the jyutping segmenter backtrack (#368)
1.4.3 Aug 12
• Merge filtered predictions with the IME candidate list while composing
• Turn on the autocorrect margin, from evidence
• Take the neural latency from the best of three windows
• Give Cantonese single-character coverage for 699 syllables
• Measure the perf guardrails in Release
• Cover every syllable the Cantonese dictionary is keyed by
• Make the whole-bundle Release test run work
• Keep the accent popup on screen and in front
1.4.2 Aug 6
• Backspace no longer drops out of emoji search
• Set the decode budget for the machine CI runs on
• Record what actually isolates the perf phase
• Break proximity ties deterministically
• Take perf guardrails from the fastest batch, not a single sample
• Keep the measured keyboard surface out of what we draw
• Cap the suggestion tier at the stock bar's three slots
• Candidate bar and keyboard surface: native parity
• Swipe commits respect shift, auto-cap, and caps lock
• Native parity: return key, per-field keyplanes, key preview, accent slide
• Run the real-keyboard UI tests unattended
1.4.1 Jul 31
• Cache fuzzy pinyin lookups; the composing path was 2-4 frames
• Measure the composing-engine keystroke path
• Speed up the fuzzy-completion scan; correct the measurement
• Character keys insert on touch-down
• Assert Korean lookup latency on the median, not the mean
• Record measured fuzzy-completion attribution
• Measure the flagged-word boundary in the shipping configuration
• Record Release perf figures and document how to measure them
• Korean candidates and next-word prediction
• Play key feedback on touch-down, not touch-up
• Measure end-to-end keystroke latency and KSPC
• Wire whole-sentence Viterbi into Cantonese with a yue char bigram
• Add a Cantonese conversion benchmark
• Add a Japanese word-bigram model to kana-kanji conversion
• Resolve Pinyin initials against the bundled dictionary
• Japanese full-width punctuation, and gate CJK punctuation by field
• Wire Viterbi sentence decoding into Shuangpin and Zhuyin
• Add a confidence margin before force-replacing, landed inert
• Back off autocorrect, punctuation and learning by field type
• Reinforce the glide alternate the user picks
• Teach UITextChecker words the user has demonstrated are real
• Remember rejected autocorrections and unlearn them
• Stop autocorrecting words the user demonstrably types
1.4.0 Jul 28
• Play sound feedback on swipe/glide key crossings, matching taps
• CJK composing-swipe auto-commits top candidate, matching English
• fix: anchor generated release notes on live App Store version, not last git tag
1.3.11 Jul 24
Bug fixes and performance improvements.
1.3.10 Jul 22
Glide typing comes to Chinese:
• Swipe to type in Pinyin — glide across the letters and Keeboard composes the pinyin and offers character suggestions, just like English glide typing.
• Smarter Pinyin candidates: suggestions now consider what you just typed, and a mistyped letter inside a syllable is corrected automatically.
• Emoji search is now front and centre in the emoji panel, and search results insert reliably.
• Language pack downloads show clear progress and status.
• Fixed a rare crash when the keyboard and app accessed your personal dictionary at the same time.
1.3.9 Jul 21
Glide typing comes to Chinese:
• Swipe to type in Pinyin — glide across the letters and Keeboard composes the pinyin and offers character suggestions, just like English glide typing.
• Smarter Pinyin candidates: suggestions now consider what you just typed, and a mistyped letter inside a syllable is corrected automatically.
• Emoji search is now front and centre in the emoji panel, and search results insert reliably.
• Language pack downloads show clear progress and status.
• Fixed a rare crash when the keyboard and app accessed your personal dictionary at the same time.
1.3.8 Jul 19
Smarter capitalization across the board:
• Auto-capitalization now respects each text field: no more unwanted capitals in email and username fields, and fields that ask for word or all-caps input get exactly that.
• Shift now tracks your cursor — tap into the middle of a sentence and it turns off; tap after a period and it's ready to go. Sentence starts are detected through quotes, brackets, ellipses, and double spaces too.
• Names capitalize themselves: type "john" and Keeboard fixes it to "John" using your contacts and personal dictionary — all on-device, no Full Access needed.
• Ambiguous words like "mark" are never force-capitalized; the name simply appears as a tappable suggestion.
• Words you add to your Personal Dictionary now keep their exact capitalization.
1.3.7 Jul 14
A big glide-typing upgrade, plus long-requested keyboard essentials:
• All-new glide trail: a smooth comet that follows your finger and fades as you go, tinted to match your theme.
• See the word before you commit: a live preview floats above your finger while you glide, and lifting commits instantly.
• Neural glide scoring: an on-device model double-checks every glide for noticeably better accuracy on fast, sloppy swipes.
• The keyboard now adapts to your touch — it learns where you actually tap each key and quietly corrects for it.
• New in Beta: glide typing on Chinese (Pinyin) and Japanese (romaji) — enable it in Settings.
• Japanese: dramatically better kana-to-kanji conversion, and flick typing gains one-stroke dakuten — bend a flick to add ゛ ゜ or small kana.
• Double-tap shift for CAPS LOCK, and backspace right after an autocorrect to restore what you typed.
• Emoji search, a clipboard button on every layout, the full #+= symbols page, and a Key Size setting that now actually resizes your keys.
1.3.6 Jul 7
Sharper, more native-feeling typing across English and Chinese:
• English autocorrect now always capitalizes "I", adds the apostrophe to contractions like don't, I'm and can't, and no longer mis-corrects everyday words like its and were.
• Smart punctuation: straight quotes become curly " " ' ' and -- becomes an em dash, just like the system keyboard.
• Smarter next-word suggestions.
• Glide typing now uses sentence context to pick the right word and types contractions correctly.
• Traditional Chinese now uses standard Taiwan characters (Hong Kong selectable), full-width punctuation in Chinese mode, and noticeably better whole-sentence Pinyin conversion for both Simplified and Traditional.
1.3.5 Jun 23
Typing just got a lot smarter.
• Smarter English — more accurate autocorrect and next-word suggestions that understand the whole sentence, not just the last word.
• Hold to delete — press and hold the delete key to erase word by word, just like the built-in keyboard.
• Better Pinyin — type a full sentence and watch it convert correctly, with fuzzy spelling (zh/z, in/ing, n/l…) so small slips still land the right characters. Simplified and Traditional.
1.3.4 Jun 18
Swipe typing is here for English! Glide your finger across the keys to type whole words — powered by a new path-recognition engine that reads the shape of your swipe for fast, accurate text entry.
• New: English swipe-to-type (glide typing)
• Smarter word recognition that follows the actual path of your gesture
• Improved accuracy and reliability for swipe input
1.3.3 Jun 13
This update refines the keyboard to look and feel more like the native iOS keyboard:
• Redesigned keys to match the native iOS keyboard — corrected key and background colors, corner radius, and font sizing for a more familiar, polished feel.
• The Font Size setting now properly adjusts the on-screen keys.
• Fixed a visual seam above the suggestion bar so the keyboard now appears as one seamless surface.
1.3.2 Jun 12
This update makes Keeboard faster and smoother:
• Faster keyboard launch and more responsive typing
• Larger, easier-to-tap keys
• Themes now update instantly, with consistent candidate-bar colors
• More reliable clipboard panel
• Clearer setup guidance when enabling the keyboard
• Improved voice typing stability
1.3.1 Jun 12
This release is all about speed, stability, and polish:
• Faster keyboard launch and snappier Chinese typing (Pinyin, Shuangpin, Zhuyin, Jyutping)
• Larger, easier-to-tap keys
• The candidate bar now matches your theme, and theme changes apply instantly
• Clipboard panel updates correctly when you pin, delete, or copy
• More reliable voice typing
• Smoother Japanese flick input and lower memory use
• Word & phrase predictions keep improving as you type — all on-device
As always: no servers, no accounts, no data collection.
1.3 Jun 11
Smarter Chinese input. Type whole words in Pinyin, Shuangpin, or Zhuyin and pick the full phrase in one tap — and Keeboard now learns the words and phrases you use most, all on-device. Plus a refreshed candidate bar with clearer top suggestions.
1.2 Jun 3
Version 1.1
Bug fixes and improvements:
- Fixed an issue where turning off Sound Feedback in Settings also disabled Haptic Feedback. Haptic and sound can now be controlled independently.
1.1 Apr 29
• fix(swipe): open the accent popup when the hold completes, not at touch-down
more Version 1.4.8 Sep 15
Data Not Collected The developer does not collect any data from this app.