Skip to content
WM KeyboardWM Keyboard
Accessibility

Downloads & mobile data

What a language downloads, when it downloads, and which downloads ask before spending your mobile data.

Adding a language can pull files down. Most of them are tiny and one of them is 42 MB. This page lists exactly what gets fetched, when, and what it costs, so nothing on your bill is a surprise.

Download language data? The prompt shown as you add a language, with the rough size on it.
Download language data? The prompt shown as you add a language, with the rough size on it.
Download language data? The prompt shown as you add a language, with the rough size on it.

Two kinds of file, both small, both behind switches that ship on:

  • Emoji keyword packs, so emoji search answers in the language you’re typing rather than only in English. 131 languages have one, Banglish included. They’re gzipped JSON, mostly 70 to 100 KB, and the largest in the whole set is Banglish at 130 KB.
  • Word-pair data, the bigrams and trigrams predictions rank with, so the keyboard knows which word tends to follow which. 455 languages have a pack: English (about 1.1 MB), Bangla (about 1.8 MB) and Banglish (about 315 KB), and 49 more built from the Leipzig Corpora Collection’s web and news text: Spanish, French, German, Portuguese, Russian, Italian, Turkish, Indonesian, Vietnamese, Polish, Dutch, Ukrainian, Korean, Romanian, Greek, Czech, Hungarian, Swedish, Hebrew, Malay, Swahili, Tagalog, Nepali, Sinhala, Azerbaijani, Uzbek, Kazakh, Danish, Finnish, Norwegian Bokmål, Slovak, Bulgarian, Serbian, Croatian, Bosnian, Catalan, and every language with a phonetic layout: Hindi, Urdu, Marathi, Gujarati, Punjabi, Odia, Assamese, Tamil, Telugu, Kannada, Malayalam, Persian and Arabic. Each is 1 to 2 MB, a little less for Odia and Assamese, which the collection has least text for. Another 341 packs are built from open web text: HPLT, MADLAD-400, AI4Bharat’s Sangraha for Indian languages, Wikipedia, and Tatoeba’s sentences. That covers Sanskrit, Maithili, Bhojpuri, Sindhi, Konkani, Santali, Mizo, Chhattisgarhi, Thai, Burmese, Khmer, Lao, Amharic, Tigrinya, Pashto, Kurdish, Uyghur, Tibetan, Hausa, Yoruba, Igbo, Zulu, Xhosa, Somali, Oromo, Quechua, Guarani and hundreds more. The best-covered are 1 to 2 MB, and a language with little text online gets a few hundred kilobytes or less. A few other languages still have only a small pack from Tatoeba, and some codes share a pack with another code for the same language, such as Dari and Iranian Persian. If you already have one of the small packs a new one replaced, the keyboard swaps it for the new one by itself, unless you turned off Download data automatically or deleted the pack.

The same text gave 260 languages a longer, better-ranked word list. A word list you’ve already downloaded isn’t replaced by itself: delete and download it again to get the new one.

Both are gated on Download data automatically (WM Keyboard  Languages & layouts  Language data  Download data automatically, default on, except on F-Droid builds, where it starts off). Emoji packs have a narrower switch of their own on top of that, Download automatically under WM Keyboard  Emoji  Emoji keywords (also default on), and both have to be on for a pack to arrive by itself.

The check runs from the keyboard rather than the settings app, and it reads your enabled-language list rather than running once at install. Add Tamil today and its pack is fetched the next time you type on the keyboard. Anything already on disk is skipped. A download that fails is left alone until the keyboard’s process next starts, so a dead connection doesn’t turn into a retry loop.

Word lists join in under the same switch, but only on Wi-Fi or another unmetered connection, because they’re the big ones. Without one a language has no glide typing and no suggestions, so an enabled language whose list never arrived gets it here at the size tier the add-a-language prompt uses. A language whose list ships with the app (English, Bangla) is skipped. So is one whose list you deleted: Delete sticks until you download that list again by hand.

Downloads you ask for queue up rather than cancel each other. Adding two languages in the setup wizard fetches both word lists, one after the other.

DownloadWhereRough size
Word list, per size tierLanguages → (a language) → DictionariesNamed per size in the dialog that Download opens. The full remote files run from a few KB to about 41 MB, and a size tier stops the transfer well short of that. Downloadable dictionaries lists every one
Download language data? prompt (word list, emoji keywords, word-pair data and, for Chinese, Cantonese and Japanese, the conversion tables their layouts need, in one go)Shown as you add a languageNamed on the dialog
Download the (pack)? promptShown as you switch on a Chinese, Cantonese or Japanese layout whose table isn’t on the deviceNamed on the dialog
Download allLanguages → (a language) → Dictionaries heading, while anything is missingNamed on the button
Word list at another sizeLanguages → (a language) → Dictionaries → Word list → the arrow button on a downloaded listNamed per size in the same dialog Download opens
Pinyin tableLanguages → Chinese → Chinese optionsAbout 2.6 MB
Stroke tableLanguages → Chinese → Chinese optionsAbout 450 KB
Cangjie tableLanguages → Chinese → Chinese optionsAbout 350 KB
Traditional characters phrase tableLanguages → Chinese → Chinese options, or Cantonese → Cantonese options (one file for both)About 1 MB
Jyutping tableLanguages → Cantonese → Cantonese optionsAbout 3.4 MB
Kana to kanji tableLanguages → Japanese → Japanese optionsAbout 42 MB
Contracted braille tablesLanguages → Braille (6-key chord) → Braille (6-key chord) optionsAbout 4 MB
Niqqud modelLanguages → Hebrew → Hebrew optionsAbout 308 MB
Tashkeel modelLanguages → Arabic → Arabic optionsAbout 21 MB
Furigana readingsLanguages → Japanese → Japanese optionsAbout 24 MB
Words with ёLanguages → Russian → Russian optionsAbout 865 KB
Turkish spelling rulesLanguages → Turkish → Turkish optionsAbout 15 MB, 38 MB unpacked

The keyboard reads a Pinyin, Jyutping or kana table once and keeps a faster copy of it next to the download, so these take a little over twice their size in storage: about 90 MB for the kana table. Deleting the table deletes the copy.

Pressing the button is the consent, and nothing here starts on its own. That includes changing a downloaded list’s size: the arrow button on the Word list row opens the same dialog, names the same per-size transfer, and downloads nothing until you pick one. Some of these name a size first and some don’t. The add-language dialog and the Download all button each name the whole set they’re about to fetch, the word-list dialog names each size, and the Japanese pack’s row says “about 42 MB” because it’s the one worth warning about. The Pinyin, Stroke, Cangjie and Jyutping rows describe what the table holds rather than what it weighs, so the column above is the place to check those. The only thing that can come between is the mobile-data question below. The add-language prompt is the one with a way out: Download fetches the set, Not now adds the language with nothing, and Cancel backs out of the language too. Word-list tiers and how downloaded and imported lists combine are covered on Downloadable dictionaries. The CJK tables and what each one is for are on Chinese, Japanese & Korean. Those five are the only ones the keyboard will point you at unprompted: bring up a Chinese, Cantonese or Japanese layout whose table isn’t on the device and a chip on the strip names the pack and opens that row, before you’ve typed anything, because without it the layout converts nothing and nothing else on screen would say so. It still downloads only when you press the button. Several tables asked for at once, as adding Chinese asks for three, download one after another rather than all at the same time.

A Turkish word can take suffix after suffix, so no word list holds them all and a correct evlerimizden can look like a typo. Turkish spelling rules fixes that: with them the keyboard checks Turkish with Hunspell and hunspell-tr, leaves a correctly suffixed word alone and suggests geliyorum for gelyorum. Download the rules under Languages → Turkish → Turkish options, plus the spelling library if it isn’t on the phone yet.

Add furigana on the selection bar writes a reading in brackets after each run of kanji, since a text field can’t show ruby: 学校へ行きます becomes 学校(がっこう)へ行(い)きます. Download Furigana readings under Languages → Japanese → Japanese options first. It picks each word’s commonest reading from Mozc’s dictionary without parsing the grammar, so a word with several readings can come out wrong, and it’s worth a read before you send it to a learner.

Add niqqud on the selection bar puts the points on selected Hebrew text, replacing any it already has. It needs two downloads, both under Languages → Hebrew → Hebrew options: the Phonikud model, about 308 MB, and ONNX Runtime if a voice engine or neural readings haven’t brought it already. The model comes straight from Hugging Face, pinned to one checked version. It runs on the phone, so your text stays there.

It takes a few hundred MB of memory while it runs and lets go a minute after the last use, and a long selection can take several seconds. Phonikud was trained for speech, so a few points follow how a word sounds today rather than formal grammar: expect to check anything that has to be correct by the book.

Add tashkeel on the selection bar puts the marks on selected Arabic text, replacing any it already has. It needs two downloads, both under Languages → Arabic → Arabic options: the CATT model, about 21 MB, and ONNX Runtime if something else hasn’t brought it already. It runs on the phone. It reads Arabic only, so it stays away from a selection with پ چ ژ or گ in it, and it can get a name or a foreign word wrong.

Every download on this page can come in from a file instead. Each language’s Dictionaries group ends with a Language pack row: Get the files links that language’s pack, one zip with its word list, word pairs, emoji names and (for Chinese, Japanese and Cantonese) conversion tables, to fetch in a browser on any device, and Import installs it. It’s the way to set up a phone with no connection, or the build with no internet permission. Full detail is on Using it without internet.

The Downloads row in Data saver (WM Keyboard  Advanced  Data saver  Downloads, default Ask each time) puts a size-naming confirmation in front of Download all while data saver is on. Data saver never turns on by itself unless you pick a trigger for it, such as On mobile data or a metered network. That’s the one tap that fetches a word list, emoji keywords and word-pair data together, so it’s the one most likely to surprise you. Set the row to Allow and the button goes straight out on whatever connection is up; set it to Turn off and it says so instead of downloading. The same row covers the Whisper and on-device AI model downloads, which used to have a switch of their own.

Nothing else on this page consults it. The automatic emoji and word-pair packs start on whatever is up, and so does every individual Download button: a word list, an emoji pack, and the CJK tables, including the 42 MB Japanese one. For the automatic pair that’s a few hundred kilobytes a language, which is why it’s allowed to be quiet. For the manual ones the size is printed before you press.

If your plan is tight, three habits keep it that way:

  • Turn Download data automatically off. Nothing is fetched until you ask for it on a language’s own screen.
  • Answer Not now to the add-language prompt. Come back to Download all on the language’s screen when you’re on Wi-Fi.
  • Leave the CJK tables, the Japanese one above all, for a Wi-Fi moment. Nothing else about a language comes close to it except a word list taken at the Everything tier.

Nothing here downloads in the background when the keyboard isn’t running, and nothing resumes on a schedule. No job queue sits waiting for a better connection. See Network policy for the full accounting of what this keyboard contacts and when.

Three downloads outside the language screens treat a metered connection differently, and the line is drawn at size rather than by oversight:

DownloadWhen it asksWhat you get
Whisper voice models Not on F-DroidMetered connection and the model is 150 MB or largerA dialog naming the model, its size, and the connection, such as Download on mobile data?, with a confirm button worded for that connection and a plain Cancel
On-device AI models Not on F-DroidMetered connection and the model is 500 MB or largerThe same dialog
Rotating photo backgroundsNever asks. It’s a setting instead: Use mobile data, off by default, in a theme’s Online photos groupA rotation waits for Wi-Fi rather than prompting

Models under those thresholds go through without a word, as long as Data saver is set to allow downloads. The smallest Whisper model is about 42 MB and the smallest on-device AI model about 143 MB. One setting overrides the size line for both: the Downloads row in Data saver, which is Ask each time by default, so while data saver is on every model raises the same dialog whatever its size. Set it to Turn off and no model downloads while data saver is on. Full detail on those two is on Offline voice (Whisper) and AI writing tools.

WM Keyboard  Languages & layouts  Language data
SettingWhereDefault
Download data automaticallyLanguages → Language dataOn (off on F-Droid builds)
Downloads (on a metered connection)Data saverAsk each time
Download automatically (emoji keywords)Emoji → Emoji keywordsOn
Download allLanguages → (a language) → DictionariesA button (no stored value), shown while anything is missing
Dictionary size tierLanguages → (a language) → Dictionaries → Word list → Download, or the arrow button on a downloaded listLarge (up to 300,000 words), remembered once you change it
Use mobile data (photo backgrounds)Appearance → Keyboard themes → (edit a theme) → Board → Rotating background → Online photosOff
  • “Automatically” means the keyboard, not the app. The automatic pass lives in the keyboard service and runs when your settings change while it’s up. Sitting in the settings app after adding a language doesn’t fetch anything. Opening a text field does.
  • Nothing downloads before the first unlock. The automatic pass is skipped entirely until the phone has been unlocked once after a restart, because the files it writes live in storage that isn’t readable before then. Type on a still-locked device and the packs arrive later.
  • A failed automatic download is not retried in that session. The language is remembered as given up on for the life of the keyboard’s process, so a bad connection costs one attempt rather than a stream of them. Restarting the keyboard (or the phone) clears the mark.
  • Deleting a language’s emoji keywords tells the automatic pass to leave it alone. That’s how deleting the pack sticks instead of it quietly reappearing on your next connection.
  • Everything comes from one place. Word lists, emoji keywords, word-pair data and the CJK tables all download from the same public data repository over plain HTTPS. No analytics, no per-download reporting, nothing else contacted.
  • Sizes shown are the compressed transfer, not what lands on disk. For word lists they’re also an upper bound. The transfer stops early at words that occur only once in the source, so a finished download is often smaller than the number promised.