-
Notifications
You must be signed in to change notification settings - Fork 4
Downloadable dictionaries
Most languages ship with no word list at all: suggestions come only from what you type. A downloadable dictionary adds instant completions in your chosen size, and protects its own words from autocorrect, entirely offline once it's on the device. The exception is the common typos a big list contains, such as "thw", which are still corrected (see Autocorrect).
Only English and Bangla ship a built-in dictionary inside the app itself. Every other language starts empty, learning words only from what you type and from any list you import yourself (see Options below). The Word list row in the Dictionaries section on a language's own screen says which case you're in:
- Built-in list. A bigger list is available.: downloading trades the small on-device list for a larger, more complete one.
- Built-in list: no downloadable list exists for that language yet.
- For suggestions, autocorrect and glide typing, with a Download button: nothing is built in, but a list is available.
- No Word list row at all: nothing is available. The keyboard learns your words as you type, and you can still import a list.
Bangla's built-in list, its phonetic index, and the English→Bangla transliteration map it feeds load only while Bangla is one of your enabled languages. Add it and they load. Remove it and they go. Nobody typing French and Japanese carries the Bangla machinery around for nothing. English is the exception and stays loaded, because it's what fields that force plain ASCII fall back to.
A downloaded dictionary does two things at once: it adds its words as completions while you type, and it stops autocorrect from "fixing" any word that's in it. For English and Bangla, downloading replaces the built-in list outright, since the bigger file becomes the one the keyboard actually uses. Every other language has no built-in list to replace, so the download's words are combined with anything you've imported yourself. A word in either list gets completions and autocorrect protection, and downloading one doesn't clear the other. That's why French, German, or Spanish, none of which ship anything built in, can still get real completions once you fetch a list. Glide typing needs the list too, since a swipe is decoded against it, and the keyboard puts a chip on the strip pointing here when a language has none.
Download on the Word list row opens a dialog that asks how many of the most frequent words to keep. Each size says how many words it keeps and about how much it downloads:
| Tier | Words kept |
|---|---|
| Small | 50,000 |
| Medium | 150,000 |
| Large (default) | 300,000 |
| Everything | the whole list, however long it is |
The source lists are sorted by frequency and downloaded over a streaming connection, so picking a smaller tier doesn't just trim the result: it stops the transfer early. Thai's full list is 4 million words and 41 MB compressed, but downloading Large only pulls the first 300,000 of them, a fraction of the total transfer. Everything is the one tier with no cap: it reads to the end of the list, which for a language like Thai means the whole 41 MB.
Every count in the picker is an upper bound, which is why each one reads "up to". Two things can stop a download before its tier does, and both are deliberate:
- The one-timers are dropped. The transfer stops at the first word that occurs only once in the source text. Those are overwhelmingly typos, names, and OCR noise, and letting them in would tell autocorrect that every misspelling is a real word.
- Some words are skipped: anything over 48 characters, and anything containing a space.
The gap can be wide on a smaller language. Welsh's list is 123,099 lines, but only the first 50,637 occur more than once, and 47,596 of those survive the other filters. So every tier from Small upward gives Welsh the same 47,596 words, and the number you see afterward is smaller than the number the tier promised. That's the list, not a failed download.
Tiers that would all keep the same words collapse into one, and the picker disappears entirely for a language whose whole list is already smaller than Small, since there is nothing to trim.
The tier you pick is remembered, so the dialog opens on it for the next language, and Download all uses it too. It starts at Large. Changing it doesn't touch a dictionary you've already fetched: to use a different tier for one that's already down, delete it and download it again. There's no separate "update" action or size switch on a downloaded row. A finished download reports what it actually kept, as an exact word count and file size.
When the language also has word pairs (English, Bangla and Banglish do), they download together with the word list, and the dialog says how much they add.
Portuguese has two lists, not two dictionaries
Portuguese is the one language with two downloadable entries (European and Brazilian), picked in the same dialog as the size, but they share a single download slot. Fetching the Brazilian list after the European one replaces it. Only one variant can be active for Portuguese at a time, and the row for the other one goes back to showing "Download."
Tap Download on the Word list row and choose a size to start it. Progress shows as an indeterminate bar rather than a percentage. A capped download stops before the file's full size, so there's no meaningful total to count up to. To cancel, tap the close icon while the download runs. The partial file is discarded and the row goes back to "Download."
Once a dictionary is downloaded, the row has a checkbox and a delete button. Deleting removes the file for that language. English and Bangla fall back to their built-in list, and every other language falls back to learned words plus any imported custom list.
You don't need to restart the keyboard for a download to take effect. It goes live the next time you focus a text field after the download finishes.
A download can fail for a few distinct reasons, each with its own message: no network connection, not enough free storage ("Delete some files, then try again"), an empty or unreadable word list, or a server that answered with an HTTP error code, which the row prints. A failed row shows Retry in place of Download.
Emoji search ships with English and Bangla keywords built in. A separate, much smaller catalog of 126 language keyword packs lets emoji search and suggestions work in other languages too. The pipeline is the same shape (stream, unpack, use locally), but the packs are small enough that there's no size tier, and unlike word dictionaries they can download automatically as soon as you enable a language. That toggle and the rest of the keyword-pack details live on Emoji customization; this page covers word dictionaries only.
Languages & layouts / (a language) / Dictionaries
There's no global dictionary settings screen. Each language's own screen has one Dictionaries section, reached from Languages in the app. It has up to three items, and a row for the language that has nothing to offer is left out:
- Word list: the built-in or downloaded list.
- Emoji keywords: the keyword pack, downloaded or imported.
- Word pairs: the bigram and trigram data that next-word predictions read. Only English, Bangla and Banglish have it.
An item that is on the device has a checkbox and a delete button. An item that is not has a Download button. The checkbox turns the item off and keeps the file:
- Off on Word list, the keyboard forgets those words for that language and reads only lists you imported, plus what it learned from you. It's the same setting the Custom dictionaries screen shows the other way up as Use only my word lists. English and Bangla always have the checkbox, because their built-in list is on the device.
- Off on Emoji keywords, emoji search and suggestions stop answering in that language.
- Off on Word pairs, predictions stop reading the pack.
While anything is still missing, the section heading has a Download all (size) button. It fetches every item that is not on the device yet, with the word list at the size you last picked, and it goes away once everything is downloaded. Below the items, Custom dictionaries opens the screen where you import your own lists.
The dictionary bar on Rows & bars puts the word list and emoji keyword switches, and each imported list's own, on a row above the keys as chips, with a language filter at its left edge.
A few related settings live elsewhere:
- Download data automatically, at Languages & layouts / Language data / Download data automatically, is on by default, except on F-Droid builds, where it starts off so the app makes no connection nobody asked for. It's the master switch over everything the keyboard fetches by itself: emoji keyword packs and word-pair data. Word dictionaries aren't in that set, so it never downloads one.
- Emoji keywords auto-download, at Emoji / Emoji keywords / Download automatically, is on by default. It's the emoji half of the switch above, and both have to be on for a pack to arrive by itself. It governs the emoji keyword packs, not word dictionaries.
- Custom dictionaries (import your own word list), under Typing / Suggestions / Custom dictionaries. The same screen is also one tap from a language's own Dictionaries section, above.
- Personal dictionary (words the keyboard has learned from your typing), under Typing / Suggestions / Personal dictionary. This is a different, unrelated store from anything on this page.
- Downloaded and imported word lists are combined. A downloaded wordlist and anything you've imported yourself live in separate on-disk stores, but the keyboard reads from both at once for every language, English and Bangla included. A word in either one gets completions and autocorrect protection. Downloading a list doesn't clear an import, and importing doesn't clear a download.
- Custom and personal dictionaries are different things. A custom dictionary is a word list you import yourself. The personal dictionary is what the keyboard has learned from your own typing. Neither is the downloadable-wordlist catalog this page covers. See Options above for where each one lives.
- The size shown in the wordlist table below is a download cap, not a storage promise. It's the compressed size of the full remote file, used only as an upper bound while the progress bar is indeterminate. What actually lands on your device depends on the tier you pick and is reported as an exact figure once the download finishes.
- Romanized languages are their own catalog entries, not a toggle. Fourteen languages (including Bangla, Hindi, Arabic, and Russian in Latin transliteration) have their own separate dictionary entry and their own selectable language (Banglish, Hinglish, Arabizi, and so on), distinct from the native-script version.
- Downloads come from one place. Every wordlist and every emoji keyword pack downloads from the same public data repository over a plain HTTPS connection, and nothing else is contacted. Once a file is written to disk, using it needs no further network access. See Network policy for the full picture of what this keyboard sends and when.
- Downloadable wordlists keep their own licenses. The bundled seed data (bigrams, the loanword map, the offensive-word filter) is hand-curated for this project, but each downloadable wordlist carries whatever license its own upstream source uses.
- One download here can ask before spending mobile data. While Data saver is on (off unless you pick a trigger), its Downloads row, set to Ask each time by default, puts a size-naming confirmation in front of the Download all button. The individual Download buttons on the rows don't consult it, and neither do the automatic packs. They start on whatever connection is up. Downloads & mobile data has the full picture, including which downloads elsewhere in the app ask first.
All 333 downloadable wordlists. Word counts are the full list; the Small/Medium/Large tiers keep the most frequent 50k/150k/300k words, and Everything keeps them all.
[
w.id,
w.name,
w.words.toLocaleString('en-US'),
${(w.gzBytes / 1024 / 1024).toFixed(w.gzBytes < 1024 * 1024 ? 2 : 1)} MB,
])}
extras={wordlists.map((w) => w.english)}
placeholder="Filter 333 wordlists…"
caption="Generated from the app's dictionary catalog; sizes are the gzipped downloads."
/>
See also Languages overview for enabling a language in the first place, and Emoji customization for the keyword-pack side of this same pipeline.
- Home
- Accessibility
- Addons
- Development
- Emoji
- Languages
- Plugins
- Privacy
-
Reference
- Gesture cheat sheet
- Typing
- Hardware shortcuts
- Deep links & launcher shortcuts
- Key press
- Link builder
- Dictionaries & words
- File formats
- Languages
- Importing from other keyboards
- Appearance
- Importing from Espanso
- Keyboard themes
- Keyboard font
- Troubleshooting
- Glossary
- Icons
- Easter eggs
- Layout & size
- Key layouts
- Rows & bars
- Keyboard modes
- Emoji
- Phone number formats
- Tools
- Addons & plugins
- Reference - Accessibility
- Fingerprint lock
- Reference - Data saver
- Reference - Permissions
- Privacy
- Reference - Selection actions
- Servers
- Reference - Backup & restore
- About & diagnostics
- Statistics
- Settings A–Z
- Smart
- Start
- Themes
-
Tools
- Clipboard manager
- Voice typing
- Offline voice (Whisper)
- Handwriting
- Scanner (OCR, QR, documents)
- Camera tool
- Translate
- Search, Wikipedia & dictionary
- Media controls
- AI chat
- AI tools
- Utility tools
- Snippets & text expansion
- Text editing & cursor tools
- Instruments
- Trackpad
- Calendar
- App launcher
- Learn from text
- Vocabulary
- Resize the keyboard
- The toolbar
- Typing