Privacy policy (Google Play edition)
The formal policy for the Google Play and GitHub builds: what WM Keyboard collects (nothing, beyond a name a tipper asks to have listed), what stays on your device, what optional tools send where, and what Google's own libraries report.
Effective 20 October 2026. This policy covers the WM Keyboard Android app
(com.wasimaster.wmkeyboard) and this documentation site. WM Keyboard is
written and published by Wasi Master, an individual developer.
The rest of this section explains the same subject in more depth and with screenshots. This page is the short, formal version, the one the Play listing links to.
The summary
Section titled “The summary”WM Keyboard collects nothing. There is no account, no advertising, no tracking, and no analytics or crash reporting that this project receives. What you type is processed on your device and stays there. The one thing the app ever sends to a server of this project is a name you typed yourself, after you chose to tip and asked to be listed, with a message if you wrote one; see Tips.
One caveat: some features are built on Google’s ML Kit and on Google Play services, and those libraries send their own diagnostics to Google when you use the features they power. That is Google’s collection, not this project’s, and it is spelled out in full under Google components inside the app.
The app does not sell, rent or share personal information. Apart from a tipper’s chosen name, it does not receive any in the first place.
What stays on your device
Section titled “What stays on your device”The keyboard writes several things to its own private app storage. None of it is transmitted anywhere by the app.
- Learned words and word pairs. Words you use that were not already in a dictionary, plus the bigrams, trigrams and skip-grams (the word two or three back paired with the one that followed) used to predict and rank the next word.
- Clipboard history, if you have the clipboard tool enabled, along with anything you pinned.
- Typing statistics, such as counts of keystrokes and words, if you have statistics enabled.
- Your settings, themes, layouts, snippets and personal dictionary entries.
- Downloaded data, such as dictionaries, emoji keyword packs and voice models.
You can delete all of it. Learned data is one confirmed tap on the app’s Privacy screen, and clipboard history and typing statistics each have a clear action of their own on the storage screen under About. Uninstalling removes everything the app ever wrote.
Password fields, and any field an app marks as sensitive, are excluded from learning, suggestions and clipboard capture automatically. Incognito mode pauses learning and clipboard history everywhere for as long as it is on. Suggestions keep working, because they are read out of data that is already there rather than written to it.
What leaves your device, and only when you ask
Section titled “What leaves your device, and only when you ask”Typing itself never uses the network. A set of optional tools do, each one only while you are actively using it:
| Tool | What it sends | To |
|---|---|---|
| Translate | the text in the panel. Nothing, when the engine is set to On device | Google Cloud Translation |
| Web and image search | your query | Brave Search, or Tavily if you add a Tavily key |
| GIF and sticker search | your query | KLIPY, GIPHY, and the Internet Archive’s GifCities if you turn it on |
| Dictionary | one word | kaikki.org, en.wiktionary.org, api.dictionaryapi.dev, api.urbandictionary.com if you turn it on, in the order you set |
| Synonyms, from the word menu | one word | api.datamuse.com, kaikki.org, api.dictionaryapi.dev, in the order you set |
| Encyclopedia | your query | Wikipedia |
| Weather | a location you entered | Open-Meteo |
| Currency and crypto rates | nothing identifying | open.er-api.com, api.coinbase.com and their fallbacks |
| Photo backgrounds | your search terms | Unsplash, Pexels |
| AI writing tools | the text you ran an action on | the provider you chose, using your own API key |
| AI chat’s Deep research and Summarize | the search queries the model planned, and an ordinary request for each page read; the pages’ text then goes to your AI provider with your question | your web search provider, and the websites of the pages read |
| Grammar check, with LanguageTool switched on | the text in the field, its language, and your LanguageTool username and key if you set them. Never a password field or text typed in incognito. Nothing at all with Harper, the default | api.languagetool.org (LanguageTool’s public server), api.languagetoolplus.com with a Premium account, or a LanguageTool server you run yourself |
| Sticker generator, with an online engine switched on | your prompt in English with the style’s words, the seed, the picture size and count, and your key for that service. Nothing at all with On this phone, the default | the engine you picked: image.pollinations.ai or gen.pollinations.ai, aihorde.net, api.openai.com, generativelanguage.googleapis.com, api.x.ai, api.stability.ai, api.bfl.ai, external.api.recraft.ai, api.replicate.com, fal.run, api.together.ai, router.huggingface.co, api.cloudflare.com, or a Stable Diffusion, ComfyUI or OpenAI-compatible server you entered; the pictures are fetched back from that service’s storage |
| Voice typing | your speech audio | Android’s own speech service, unless you use the offline Whisper option |
| Language and model downloads | nothing about you, except that a gated on-device AI model (the two Gemma 3 builds) is fetched with the Hugging Face token you entered for it | GitHub, Hugging Face, and Mozilla for the Firefox Translations models |
Four of these can fire without you opening a tool under default settings. They are the weather smart chip, the currency smart chip, automatic language data downloads, and the dictionary tool’s look-up-at-cursor. Each has its own switch. Network policy documents every one of these in full, including what is cached and for how long, and Permissions covers what each Android permission is for.
When you use one of these tools, your data is handled by that service under its own privacy policy, not this one. The app ships no key for the AI providers: those only work if you supply your own.
The Google Play build can take a tip through Google Play billing, under About › Supporters. Google Play handles the payment, under Google’s privacy policy. This project never sees your card, your Google account or your email address.
If you type a name to be listed, then once Google Play confirms the payment
the app sends that name, the message you typed (if any) and the purchase
receipt (the product and Google Play’s purchase token) to
wmkeyboard.pages.dev/api/play-tip. The site asks Google whether the receipt
is a real, paid order and, if it is, adds the name, the message, the word
“Tip”, the tier’s list price in US dollars and the date to the public
Supporters page. The app’s own list shows the name only.
With Stay anonymous on, or the name left empty, nothing is sent.
Until the site has answered, the app keeps the name and receipt on your device
and tries again when you next open Supporters, for up to 30 days. To have a
name removed, email the address under Contact.
Backups
Section titled “Backups”Backups are optional and written to the destination you choose. That can be local storage, a cloud drive you connect, a WebDAV server, an S3-compatible bucket, an SFTP, SMB or FTP server you run, a Git repository you own, or a folder in your own mail account. By default the file is plain JSON. Turn on a backup passphrase and it is encrypted with AES-GCM under a PBKDF2-HMAC-SHA512 key. Nothing is uploaded anywhere by default and no copy is sent to the developer. See Backup and restore.
Children
Section titled “Children”WM Keyboard is not directed at children and collects no data from anyone, including children. The only thing ever received is the name and message a tipper chose to have listed, described under Tips, and both are removed on request.
Google components inside the app
Section titled “Google components inside the app”Three Google components the app uses report to Google on their own, without going through any code here. They cannot see what you type, and this project receives nothing from them. None of them can be switched off from inside the app either, so your only choice is whether to use the feature.
- ML Kit powers handwriting input, OCR, QR and barcode scanning, the document scanner, sticker background removal and on-device translation, in every build but F-Droid’s. Google states that its SDK sends device information (make, model, OS build, available ML accelerators), this app’s package name and version, a per-installation identifier, timing and error information, and the size and settings of what was processed. That happens whenever you use one of those features. Google describes it as diagnostics and usage analytics, encrypted in transit and not passed to third parties. The content of the image, ink or document is not part of it.
- Downloadable fonts. Some scripts’ default keyboard font, and every Google font in the theme editor, are fetched by Google Play services’ font provider. It receives the font name and this app’s package name.
- Google Play libraries in the Play Store build check for app updates, fetch the on-device AI runtime when you first use it, and take a tip through Google Play billing if you choose to leave one.
Connecting Google Drive as a backup destination adds a Google sign-in and ordinary Drive API calls, and only if you connect it.
The first and the third are specific to this edition: the F-Droid build has no ML Kit, no Play libraries and no Google sign-in compiled into it at all. Downloadable fonts are the exception, since that request goes to a system provider rather than to code the app bundles, so the F-Droid build makes it too. See Privacy policy (F-Droid edition).
Other third-party components
Section titled “Other third-party components”The app bundles open-source libraries and data (dictionaries, emoji annotations, fonts). None of them phone home. The full list, with licences, is in the app under About, Licences and attributions.
Changes
Section titled “Changes”If this policy changes, the effective date at the top changes with it, and the history of every edit is public in the repository.
Contact
Section titled “Contact”Questions about this policy: arianmollik323@gmail.com, or open an issue at
github.com/wasi-master/wmkeyboard/issues.
