Privacy at a glance
Offline by default, no telemetry, network per-tool and opt-in. The receipts are in this section.
Typing itself (composing, prediction, autocorrect, gesture typing, spell check, learning) never touches the network on this keyboard, on any language or layout. A specific, nameable list of optional tools does reach the network, each one documented on this page with what triggers it and how to turn it off.

The short version
Section titled “The short version”Everything the keyboard needs to type, predict, autocorrect and learn from you runs locally: bundled and downloaded dictionaries, Bengali and other transliteration, gesture typing, emoji search, and on-device learning are all local computation reading and writing files under the app’s own storage. None of it requires or uses a network connection. What that learning stores and where is covered in full on Your data on device; this page is about what leaves the device, not what stays on it.
No analytics, crash-reporting, or telemetry SDK is built into the app: there’s no Firebase, Crashlytics, Mixpanel, Sentry, Bugsnag, or Amplitude anywhere in the source tree, and no first-party WM Keyboard server that the app phones home to for any reason. There’s no update check, either. Updates come from wherever you installed the app, the same as any other app. Every network call the app makes is a request you can trace to one specific, named tool.
A fresh install asks for no permissions at all. Each one belongs to a single optional feature (microphone to voice input, camera to the camera tool, and so on), gets requested the first time you use that feature, and gets an explanation of its own before Android’s prompt appears. The app also keeps an inventory of the lot at WM KeyboardPrivacyPermissions, where you can see what’s granted and hand something back. The full list, along with what refusing does, is on Permissions.
The only things that touch the network
Section titled “The only things that touch the network”Every one of these is a distinct, optional tool. Most only fetch while you have that tool open; three fetch automatically under default settings, called out below.
| Feature | Reaches | Key required |
|---|---|---|
| Weather | Open-Meteo | No |
| Translate | Google Cloud Translation (or the free translate.googleapis.com endpoint) | Optional |
| Dictionary | api.dictionaryapi.dev | No |
| Encyclopedia | Wikipedia | No |
| Currency converter | open.er-api.com, falling back to api.frankfurter.app | No |
| Cryptocurrency prices | api.coinbase.com, falling back to cdn.jsdelivr.net | No |
| GIF & sticker search | KLIPY and/or GIPHY | Yes |
| Web & image search | Brave Search | Yes |
| Photo backgrounds | Unsplash and/or Pexels | Yes |
| AI writing tools | Anthropic, OpenAI, Gemini, Grok (xAI), DeepSeek, any other OpenAI-compatible service you name, or a self-hosted Ollama/LM Studio server on your own network | Yes (bring your own key) |
Every one of those is off until you open that specific tool, with one qualification for photo backgrounds: searching only happens while you have the picker open, but a rotating background keeps a small set of photos topped up in the background once you turn it on. See Online photos and rotation for exactly when that fetch runs and the four conditions that stop it. The AI tools go further: each provider field starts blank, so the feature is inert on a fresh install even once you open the panel: nothing sends until you supply your own key (or point it at a server you run). Self-hosted Ollama/LM Studio is also the one tool that talks plain HTTP rather than HTTPS, since it’s a server on your own local network rather than the public internet. The app allows cleartext traffic app-wide to make that possible, though every other service in the table above is still contacted over HTTPS regardless.
The exceptions: what fires without you opening a tool
Section titled “The exceptions: what fires without you opening a tool”Three features reach the network automatically, under their default settings, without you opening anything you’d think of as a “network tool”:
- The currency smart chip. Typing something that reads as a currency amount (say, “150 usd”) on the suggestion strip fetches exchange rates automatically, with no tool open and no tap. It’s gated by WM KeyboardTypingSmart chips, where the master switch and its Convert currencies toggle are both on by default, and results are cached for hours rather than fetched per keystroke. See Smart chips for the exact cache window and the rest of the chip family. The calculator and unit-converter chips alongside it are fully local; only currency reaches the network. The in-app disclosure for this one is honest and worth repeating: everything is recognized on-device, and only exchange rates are fetched, only once you type an amount.
- Language data downloads. Turning a language on fetches its emoji-keyword pack and its word-pair (n-gram) data in the background, both small downloads from the project’s data repository on GitHub. Gated by WM KeyboardLanguagesLanguage dataDownload data automatically, on by default, with a narrower WM KeyboardEmojiEmoji panelEmoji keywords Download automatically over the emoji half. Turning the first one off stops both, and adding a language asks before it downloads anything either way. Word lists are never fetched automatically.
- Dictionary auto-lookup. Opening the Dictionary tool looks up the word at your cursor immediately, without a separate search tap. Gated by WM KeyboardToolsDictionary‘s Look up the word at the cursor, on by default, but it still only fires once you open that tool, unlike the two above.
Two more fetch automatically but are off by default, so they don’t belong on that list until you turn them on: WM KeyboardToolsClipboard‘s Link previews, and QR-scan link previews, each of which fetches a page’s preview metadata the moment you copy or scan a matching link.
Power saving mode is the one-tap way to shut off the background half of that list: turning it on drops clipboard link previews, QR-scan link previews, and dictionary auto-lookup back to off for as long as it’s active. See that page for the rest of what it changes.

See Network policy for the complete tool-by-tool breakdown: exact endpoints, what payload each one sends, and how downloads (wordlists, CJK dictionaries, speech and AI models, addons) are fetched and verified.
Open source: verify, don’t trust
Section titled “Open source: verify, don’t trust”WM Keyboard is MIT-licensed, and the source is public on GitHub. That’s not a claim you have to take on faith from this page: anyone can read the code that makes every claim above true, including the exact list of domains each tool calls.
There’s no packaged release yet (see Installation), so verifying any of this today means building the APK yourself from that same public source with Gradle, not checking a store listing. The app’s About screen already carries ready-made links to share it via Play Store, F-Droid and GitHub for whenever a build does land there; F-Droid in particular requires building from the published source and rejects proprietary tracking outright, which will make it a second, independent check on the “no telemetry” claim above once that listing exists.
The two other repositories the app talks to for downloads (word lists, CJK dictionaries and emoji-keyword packs, and the sample addon repository seeded on first launch) are public too, so what a download actually contains is inspectable before, or instead of, installing it. Full attribution for every bundled component, data pack and third-party service lives in the app itself; see About & diagnostics.
Options
Section titled “Options”The Privacy screen has four groups, each documented in full on its own page:
- Permissions (an unnamed group at the top, holding one row) opens the inventory of everything the keyboard can reach, and what it currently holds. See Permissions and, field by field, Permissions settings.
- On-device learning covers what gets learned, incognito mode, and private-browsing detection. See Your data on device and Incognito & secure fields.
- Android backup folds the keyboard into Android’s own backup system, off by default. See Backup & restore.
- Your data is the one-tap Clear learned words button. See Your data on device.
Every per-tool network toggle mentioned above lives on that tool’s own settings screen rather than on Privacy. See Network policy for the full list, or the tool settings reference for a screen-by-screen field list.
Details & edge cases
Section titled “Details & edge cases”- Voice dictation can leave the device without appearing on the table above. The default voice engine is Android’s own
SpeechRecognizer, which prefers on-device recognition but transparently falls back to a network recognizer for a language it can’t handle locally. That’s Android mediating the request, not a call this app makes directly, and nothing about it is saved by WM Keyboard. Downloading an offline Whisper model Full edition only replaces the fallback with fully local recognition. - Not every network request in the app goes through the same client. First-party API calls (everything in the table above) go through one shared HTTP client; remote thumbnail and preview images (GIF/sticker search results, addon repository preview art) load through a separate image-loading library. Same rule applies either way: it only loads inside the panel you’re already using, gated the same way.
- ML Kit’s on-device models Full edition only (OCR, barcode/QR scanning, handwriting recognition, document scanning) run recognition locally once their model is present. Handwriting models are an explicit, visible download you trigger yourself; the OCR, barcode and document-scanner models can be fetched by Google Play services infrastructure the first time you use that feature, which is Google’s own delivery path rather than a request this app makes.
- Opening Settings → Addons re-checks every repository you’ve added, once per visit, and the very first time you ever open that screen it also silently adds and fetches one sample addon repository so the screen isn’t empty. Removing that starter repository is permanent; it isn’t re-added on a later visit.
- Only the two heaviest downloads confirm before using mobile data. Offline Whisper speech models and on-device AI models ask first on a metered connection (around 150 MB and 500 MB respectively). Wordlists, CJK dictionaries, emoji keyword packs, and addon payloads don’t. See Network policy for the full download-by-download table, including which of these get a checksum verified.
See Network policy for the complete tool-by-tool table, Your data on device for what’s stored locally, Permissions for which feature asks for what and what happens if you refuse, Incognito & secure fields for pausing learning and clipboard capture, and Backup & restore for what leaves the device only when you choose to export or sync it.
