AI summary
Privacy-first Android keyboard with glide typing, autocorrect, next-word prediction and 22 bundled languages. Online build downloads extra dictionaries; offline build has no network access at all. Notable features include post-correction, comma insertion for specific languages, inline calculator, clipboard history, and granular privacy controls with incognito mode.
Generated by AI. May contain inaccuracies.
About this app
Features Typing
Glide typing: slide across letters to type a word, with a swipe trail and tap-to-replace alternatives in the strip (works in all bundled languages) GBoard-like key layout, sizes and spacing; adjustable key height; optional number row (digit hints on the top row when it's off) Auto-capitalization (sentence-aware), double-tap Shift for caps lock Remembers your capitals. Every bundled word list is entirely lower case — 0 of English's 298,946 entries carries one — so a name the keyboard had learned came back off the strip without its capital, and a next-word chip, offered before a single letter is typed, could never have one at all. It now watches how you write a word mid-sentence, by majority vote, and offers it that way on the strip, on the next-word chips, on a swipe and in a correction. It only ever adds a capital, never removes one; sentence openers and anything typed with caps lock on are ignored, because those say something about the position or the tone rather than about the word. Settings → Corrections. Autocorrect (edit distance ≤ 2 against a frequency dictionary) with a one-tap "↩ original" revert chip that also teaches the keyboard your word Post-correction — a typo the space bar was not confident enough to fix gets one more look the moment the next word arrives, because the word after it is evidence that did not exist when the space bar had to decide. Measured over the typos autocorrect declines: 81% of English and 80% of Turkish are repaired, against 0.6% and 0.1% of correctly-typed words the dictionary does not hold being rewritten. It applies nothing autocorrect's own confidence bar would have refused — all the following word changes is which of the candidates gets picked — and the same "↩ original" chip undoes it. Settings → Corrections. Missing commas, in the languages that have rules about them. In Czech, German, Hungarian, Polish, Russian, Slovak and Ukrainian a short list of words is preceded by a comma almost every time — cs že 99%, de dass 98%, ru чтобы 95% — and typing one of them puts the comma in. Counted from the corpus rather than guessed at, and gated on the number that matters: a language ships a list only if a model built from nine tenths of its corpus gets 95% of that language's commas right on the tenth it has never seen. Seven of the twenty-two clear it — Italian reaches 97.4% and still doesn't ship, because it would fire once in 547 sentences; English has four such words and Turkish none at all. 733 bytes for all seven. One silent change per commit, so it stands down whenever autocorrect or post-correction already acted, and the same "↩" chip undoes it. Settings → Corrections. Suggestion strip: up to five chips — what you typed, the best match and the alternatives — with the word that will be auto-committed shown in bold/accent; a narrow row drops chips from the right rather than squeezing them Swipe up on the strip for the rest of the list. Five chips is the tightest constraint in the keyboard — taking the target from the top N of the engine's own ranking is worth 41.8% of English keystrokes at three chips, 53.4% at six and 60.0% at twelve — and the strip has room for five. The gesture opens the same ranking with more of it showing: twelve or thirteen words against five, measured, and the same in English, German and Turkish, because the ceiling is how deep the dictionary is asked rather than the language. Not a second ranking and not a deeper search, so the first word in the panel is always the first word the strip was already showing. Tapping a chip still commits it and holding one still blocks it; only a vertical drag past the touch slop is claimed. Settings → Corrections. 200,000 words per language built in, 298,946 for English, and a deeper list per language you can add later — downloaded on the online build, imported from a file you fetched yourself on the offline one, checksum-checked either way Next-word predictions from a bundled corpus model (567,009 one- and two-word contexts across 22 languages) merged with what you have typed yourself, which is weighed as trigrams Double-space inserts ". ", hold-and-slide the spacebar to move the cursor Optional smart dash: two hyphens become an em dash. Off by default, because -- is a command-line flag at least as often as it is punctuation and the field cannot tell the keyboard which one you meant Long-press popups for accents, digits and symbols; key preview bubbles Two symbol pages, a phone/number pad for numeric fields, 1,500+ emoji with categories and recents (anything your Android version can't render is hidden) Long-press Enter inserts a newline in chat apps where Enter sends Multi-touch typing (rollover), repeating backspace Inline calculator — type 12*34 for a "= 408" chip. Handles parentheses, percentages the way a pocket calculator does (150+18% → 177, 200-10% → 180) and metric/imperial conversion (5km= → 3.1069 mi) Tools
Tool drawer — the chevron at the left of the suggestion bar is the only fixed control on it; tapping it slides your pinned tools into view, and tapping one runs it and closes the drawer. Settings, clipboard and the rest are pinned, reordered or removed like any other tool rather than being fixed in place. All tools — a full-height panel listing every action, with a tray at the top for what is currently on the suggestion bar. Tap + on any tool to pin it, or hold and drag it between the two sections. It is itself a pinnable tool, and long-pressing the chevron always opens it. Long-press the comma key for a quick 😊 shortcut. ◨ One-handed mode — shrink the keyboard to either side (drawer → ◨); a rail switches sides or expands back. Auto-off in landscape. 📋 Clipboard history — last 10 copied items (drawer → 📋, or long-press the paste chip). The history is RAM-only: cleared when the keyboard process ends, disabled in incognito, 🗑 wipes it instantly. The one thing that persists is a clip you explicitly 📌 pin — that item is saved to the app's device-protected storage so it survives a restart, and stays only until you unpin it. Languages
22 languages out of the box (see the list at the top) — pick any set in Settings; 🌐 cycles them, long-press for the system picker; locale-correct casing (Turkish i → İ, Cyrillic, etc.) Add more languages by dropping a dictionary file and a layout (see below) Privacy
VIBRATE in every build. Key haptics drive the vibrator directly, because several OEM builds ignore view-level haptics once the system touch feedback toggle is off. It grants no access to any data.
READ_CONTACTS, off by default and behind two gates. It exists so the keyboard and the spell checker stop treating the people you write to as misspellings. Nothing is read until you switch on Names from contacts and grant the permission; what is kept is a set of lowercase name parts in memory, never written to disk, dropped when the setting goes off or memory runs short. No numbers, no addresses, no contact identity.
READ_USER_DICTIONARY, off by default. The list at Settings — Languages — Personal dictionary is shared by every app and is where a user writes a word down by hand to say "this is a word". Reading it means a word you added there, or taught another keyboard, or brought from an old phone, stops being underlined here and is offered on the strip, with the capitals you gave it — the same thing RimBoard's own personal-dictionary screen has always done, which is the point: they are the same act. What is kept is those words, in memory, never written to disk, dropped when the setting goes off or memory runs short. Read only: WRITE_USER_DICTIONARY is deliberately not requested, so this never adds to your list.
Worth knowing that this one is unusual. The permission is not in the public SDK any more — android.Manifest no longer carries a constant for it, though the provider it guards is still public and documented. So there is no runtime prompt to show you: the setting is the gate, the read is attempted, and a refusal from the system is treated as an empty list. On a build that declines, the switch simply has no effect.
No microphone, no storage, no location — in either build.
No INTERNET in the offline build, which is what makes its guarantee a guarantee rather than a promise. The online build declares INTERNET and ACCESS_NETWORK_STATE. Don't take either on trust; see Proving it below.
A first-run dialog asks which mode you want, with the trade-offs spelled out, before you have enabled the keyboard for anything. The answer is not carried over by Export/Import — restoring a backup is not the same act as consenting to network access, so a fresh install asks again.
All network access goes through one function, Net.fetch in net/Net.kt, which refuses a request unless the build holds the permission, the user has switched online features on, the target host is on a short allowlist in that same file, and — for anything carrying text you typed — you are not in incognito. A unit test fails the build if any other file in the app so much as names a networking API, so reading that one file tells you everywhere the keyboard can talk to.
Nothing is sent in the background, ever. There is no telemetry, no update check, and no sync. On the online build a request happens only in the moment you tap a GIF search or a translate action, and Settings → Network shows you the running count and what it was for.
Incognito mode (🕶): open the drawer → 🕶, or enable "Always incognito" in settings. While active the keyboard learns nothing, suggests nothing personal, and records no emoji history.
Incognito also turns itself on automatically in password fields and in any field that requests no personalized learning (e.g. browsers' private tabs).
Learned words and the next-word model are plain-text files in the app's private device-protected storage (learned.txt, bigrams.txt, trigrams.txt). You can wipe them anytime from Settings → "Delete learned data".
Nothing is uploaded to device backups or copied during a phone-to-phone transfer. allowBackup=false covers Android 11 and below; from Android 12 that attribute is deprecated, so res/xml/data_extraction_rules.xml states the same thing in the form those releases actually read. It excludes the device_* domains too, which is where the learned words really are — the keyboard keeps them in device-protected storage so it works on the lock screen, and a rule set covering only the ordinary domains would miss them.
Built-in Export / Import backup (Settings → Backup): everything — settings, learned words, predictions — goes into one JSON file you control, written through the system file picker. Move it between devices yourself; nothing ever leaves the phone otherwise.
Export / Import theme preset (Settings → Backup): the look and nothing else, for handing to someone who liked your keyboard rather than to your next phone. Twelve settings, 849 bytes — small enough to paste into a message — with no learned words, no languages, no contacts, no network mode and no pinned tools; the custom font and background photo are left out too, because a preset worth pasting is worth more than one carrying a megabyte of wallpaper. Importing one writes only those look settings and removes nothing, so unlike a restore it asks for no confirmation, and a preset offered to the restore path is refused by name so it cannot take your languages and dictionaries with it.
About this version
- Version
- 2.9.1-online (25)
- Size
- 32.97 MB
- Requires Android
- 8.0
- Target SDK
- 26
- Architecture
- universal
- Downloads
- 4
- Updated
- Sep 25, 2026
- Package
- com.rimboard.keyboard.online
Similar apps
Ratings & reviews
- 50
- 40
- 30
- 20
- 10