Backup & restore
Every switch on the Backup & restore screen: what goes in an export, and what an import merges or replaces.
The Backup & restore screen is where you write your keyboard to a file and read one back in. This page is the field reference for every switch, button, and message on it. For the reasoning behind the merge-vs-replace split and a walkthrough of moving to a new phone, see Backup & restore instead.

Options
Section titled “Options”Reach it from the Data group on the settings home screen, or by searching “Backup & restore” in settings search. The screen opens on a paragraph explaining what a backup file is, then runs Automatic backup, Include in export, the export button, and Import, in that order.
Automatic backup
Section titled “Automatic backup”This group writes the same bundle as the export button below, on a timer, to somewhere you choose. It stays inert until the destination you picked has everything it needs, so several rows here only appear once it does.
| Setting | Type | Default | Shown when |
|---|---|---|---|
| Where to put backups | Choice: Folder / WebDAV / S3 / FTP / Google Drive / Dropbox / OneDrive | Folder | always |
| Back up automatically | Toggle | Off | always (forced off until the destination is usable) |
| How often | Choice: 6 hours / 12 hours / 1 day / 1 week | 1 day | Back up automatically on and destination usable |
| Backups to keep | Choice: 3 / 5 / 10 | 5 | Back up automatically on and destination usable |
| Only while charging | Toggle | On | Back up automatically on and destination usable |
| Only on Wi-Fi | Toggle | On | Same, and only for a destination that needs a connection (everything except Folder) |
| Protect with a passphrase | Toggle | Off | always |
| Passphrase | Password field | empty | Protect with a passphrase on |
Three of the seven only appear when the build can actually reach them: Google Drive needs Play services on the device, and Dropbox and OneDrive each need a client id compiled into the APK. A choice with nothing behind it is left off the list rather than shown and then refused, so a phone without Play services, or a build made without those client ids, simply sees a shorter list.
Under the destination picker sits whatever that destination needs. Each set of fields saves as you type:
| Destination | Fields | Notes |
|---|---|---|
| Folder | Folder (a folder picker; reads “Not set” until you choose one) | Anywhere a files app can reach: the device, an SD card, or a cloud app’s synced folder |
| WebDAV | Server address, User name, Password | A plain http address gets a warning under the fields and is refused at upload time, because the credentials ride along on every request |
| S3 | Endpoint, Bucket, Region (default us-east-1), Folder in the bucket, Access key ID, Secret access key, Put the bucket in the path (toggle, default off) | Leave the endpoint empty for Amazon. Path style is for MinIO and for any endpoint that’s a bare IP; a plain http endpoint gets the same warning |
| FTP | Server, Port (default 21), User name, Password, Directory, Use TLS (toggle, default on) | Turning TLS off is allowed, for old NAS boxes that offer nothing else, and puts a warning under the toggle |
| Google Drive | An Allow access to Drive button, plus a line saying whether it’s authorised | The app gets a hidden folder of its own and can’t see anything else in your Drive |
| Dropbox | A Sign in / Sign out button, plus “Signed in.” or “Not signed in yet.” | You get a folder of your own under Apps |
| OneDrive | Same sign-in row as Dropbox | Same folder-under-Apps arrangement |
Below the group, three things appear conditionally:
| Element | Shown when |
|---|---|
| A warning that the backup carries typed words or copied text with no passphrase on it | Dictionary or Clipboard is included below and the passphrase is off or empty |
| Back up now (reads “Backing up…” while it runs) | always, but only tappable once the destination is usable |
| The status line under the button | always |
That status line says one of four things: the last error if there was one (“The app can no longer write to your backup folder”, “The app cannot find your backup folder”, “There is not enough space for a backup”, or a generic “The last backup did not finish. The app tries again later.”), otherwise “Last backup: <relative time>”, otherwise “The app has not made an automatic backup yet.”
Export
Section titled “Export”The Include in export group is twelve toggles, top to bottom. Eleven are independent; the twelfth, Include API keys, only exists while Settings is on:
| Setting | Subtitle | Default |
|---|---|---|
| Settings | Every keyboard preference | On |
| Include API keys (shown only while Settings is on) | Translate, GIF, search and AI keys | Off |
| Themes | Your custom themes | On |
| Dictionary | Words the keyboard learned from you | Off |
| Clipboard | Saved clipboard history | Off |
| Snippets | Your saved text snippets | On |
| Sticker packs | Your own sticker packs, images and all | Off |
| Icon packs | Your own icon packs, images and all | Off |
| Custom word lists | Word lists you imported for any language | On |
| Addon repositories | The addon sources you added, so you can reinstall from them | On |
| Emoji history | Your recent emoji, your favourites and the skin tone of each one | On |
| Typing statistics | Your daily typing counts and your all-time speed | On |
Sticker packs and icon packs default off because their images make the file larger, not because of any privacy concern; Dictionary and Clipboard default off because they’re your personal typing history rather than configuration. Emoji history defaults on despite being personal too: it’s a few hundred bytes, and unlike a word list or a model there’s nowhere to download it back from. Addon repositories carries only the repository addresses you’ve added, not the addons installed from them: an installed theme already travels inside Themes, an installed icon pack inside Icon packs.
Export backup is disabled until at least one toggle above is on. Tapping it opens Android’s save dialog with a name of the form wmkeyboard-backup-<date>-<time>.wmconfig.json, timestamped down to the second so repeated exports don’t overwrite each other. The file goes wherever you choose; nothing is uploaded anywhere. Afterward you see one of:
| Result | Message |
|---|---|
| Wrote successfully, Settings on with Include API keys on | “Backup exported, API keys included. Treat that file as a password.” |
| Wrote successfully, otherwise | “Backup exported.” |
| Couldn’t write the file | “Could not write that file.” |
Import
Section titled “Import”Import backup opens a document picker for any file type. It reads the file and tries to decode it before changing anything; nothing is written until you confirm a dialog:
| Outcome | What happens |
|---|---|
File is a current .wmconfig.json bundle | An “Import backup?” dialog lists each section found (for example “Themes: 3 custom themes”), states that settings merge while dictionary, clipboard, and snippets replace, and adds a warning if the file contains API keys |
File is a legacy .wmsettings.json file | An “Import settings?” dialog states how many settings will be overwritten, warns about included API keys, and notes any entries that couldn’t be read and will be skipped |
| File can’t be read from disk | “Could not read that file.” |
| File doesn’t decode as either format | “That file is not a WMKeyboard backup.” |
Confirming a current-format import applies each section independently and merges or replaces depending on which one it is:
| Section | On import |
|---|---|
| Settings | Merges — only the preferences present in the file are overwritten; everything else on the device is left as-is |
| Themes | Replaces — the entire custom-theme list is swapped for what’s in the file |
| Dictionary | Replaces |
| Clipboard | Replaces |
| Snippets | Replaces |
| Sticker packs | Replaces — the local collection is cleared and rebuilt from the file |
| Icon packs | Replaces — same clear-and-rebuild |
| Custom word lists | Replaces — same clear-and-rebuild |
| Addon repositories | Merges — incoming repository addresses are added to your existing list; a duplicate address is skipped, not overwritten |
| Emoji history | Replaces — recents, use counts, favourites and per-emoji skin tones all come from the file |
| Typing statistics | Replaces — the day-by-day counts and the all-time totals both come from the file |
Settings import is rollback-safe: after writing, the keyboard re-reads its own settings to confirm they still parse, and undoes the write if they don’t. The other sections in the same file still apply even when settings roll back. After a confirmed import you see either “Restored <sections>.” (a lowercase, comma-separated list of what changed) or “Nothing to restore from that file.”, with “\n\nThe settings couldn’t be applied and were left unchanged.” appended if the settings portion rolled back. A confirmed legacy import instead reports “Restored <N> settings.”, or “That backup could not be applied — your settings are unchanged.” if it rolled back.
Opening a .wmconfig.json or .wmsettings.json file from a file manager routes through this same read-then-confirm flow rather than importing silently.
Details & edge cases
Section titled “Details & edge cases”- An emoji-history import lands live. The keyboard holds its emoji history in memory while it runs and writes it out when a field closes, so a restore could have been overwritten seconds later. Importing bumps a counter the running keyboard watches, which makes it drop its copy and re-read the file; the panel’s Recent and Favourites tabs refresh on the spot, with no need to restart anything.
- Two file formats, one import path.
.wmconfig.jsonis the current, full-bundle format that Export backup writes today..wmsettings.jsonis an older, settings-only format that the app still accepts on import for files made by earlier versions: nothing in the current app writes one anymore. - The Themes toggle’s own in-app description undersells it. Its info text says a theme’s background image “doesn’t travel to another phone — only the theme itself does.” In the current app it does travel: a background image is embedded in the export and written back to local storage on import, so a restored theme keeps its image. See Backup & restore for the accurate version.
- The API-keys warning applies to a manual export only. It has no effect on Android’s own backup system, which is a separate opt-in covered on the Privacy screen and copies saved API keys regardless of anything on this page.
- Addon repositories is a bookmark list, not the addons themselves. What an installed addon leaves behind on this screen is in whichever section matches its type: a theme, icon pack, or sticker pack you installed from a repository is already covered by that section.
- The automatic backup asks the system for two things, both yours to turn off. A charger, from Only while charging, and an unmetered connection, from Only on Wi-Fi. It never asks for an idle device, because the work is a few seconds of copying rather than the kind of job that wants the phone asleep. The Wi-Fi requirement is dropped for a Folder destination, which needs no connection at all, and the toggle is hidden there for the same reason. An interval is a period, not an alarm clock, so a run lands somewhere inside the window rather than on the hour. Back up now ignores all of it and runs immediately.
- Changing either condition reschedules the job on the spot. Both toggles are part of what the app compares against the job already queued, so flipping one takes effect without waiting for the current period to end. That matters because the interval restarts when the job is replaced: a keyboard whose conditions you keep changing keeps pushing its next run back.
- Turning the automatic switch on with no usable destination does nothing. The row reads “Choose a folder first.” and stays off, and the interval and keep-count rows below it stay hidden until both the switch and the destination are sorted. “Usable” is a cheap check (a folder grant exists, a WebDAV address and user are filled in, an S3 bucket and key pair are present, a token was stored), not proof the upload will work.
- The stored credentials are filed as secrets, alongside your API keys. The WebDAV and FTP passwords, the S3 secret, the Dropbox and OneDrive tokens and the backup passphrase are all stripped from an export unless Include API keys is on, and they’re kept out of pre-unlock storage either way. Four things never travel at all, on or off: the folder grant (a
content://URI means nothing on another phone), the Back up automatically switch itself, the per-install salt, and the last-run time and error. That’s deliberate. Restore a bundle on a new phone and you don’t want its automatic backup coming back armed, pointing at a folder that isn’t there. - The toggles and choices in Automatic backup carry the usual restore button once you move one off its default; see Putting one setting back. The text fields don’t, because an address or a password has no shipped value to go back to, and neither do the twelve include-in-export toggles.
Related pages
Section titled “Related pages”- Backup & restore — the guide: why each default is what it is, Android’s own backup system, and a step-by-step for moving to a new phone.
- Privacy — the Back up with Android toggle that folds the keyboard into Android’s own backup, separate from the export on this page.
- What are addons? — how installed addons relate to the repositories this screen’s Addon repositories toggle backs up.
