Privacy Policy
Last updated: 2026-07-25
TidyType Keyboard is an Android input method ("IME") that rewrites the text you type using a large language model that runs entirely on your device. This policy describes exactly what data the app does and does not handle.
If you have questions, contact us at contato@tidytype.io.
TL;DR
- Nothing you type ever leaves your device. We do not collect, transmit, or log it, and we have no server that could receive it.
- The only typing-derived data the app keeps β on your device only β is a per-language count of completed words that powers the word-suggestion strip (Section 3). Password fields and fields that ask keyboards not to learn are excluded.
- We do not use analytics, crash reporting, or any third-party SDKs that send data off the device.
- The app makes network requests only to download the language model (once, when you tap "Download model") and to refresh the Chip Store catalog when you open the Chip Store. Neither request carries anything you type or any information about you β see Section 2.
- The microphone is only activated when you explicitly tap the Voice chip on the keyboard, and the audio is processed entirely on the device.
1. Information we do not collect
Because TidyType runs the language model on your device, none of the following ever leaves your phone:
- The text you type into other apps
- The text you select for a rewrite (any chip β Grammar, Translate, or one you added or installed from the Chip Store)
- The text returned by a rewrite
- Voice audio captured for the Voice chip
- Translated text or transcribed text
- The words you've completed (which inform on-device word suggestions β see Section 3)
- Personalization data you create in the app (custom chips, preferred translate target language)
We do not have a server. We do not have an account system. We cannot read what you typed, even if you asked us to, because we do not receive it.
2. Network requests
When you first install TidyType, the language model has not yet been downloaded. The first time you tap "Download model" in the app's Settings, the app makes two HTTPS requests, both to servers we operate:
tidytype.io/api/v1/model-urlβ returns a short-lived, one-time URL that authorizes downloading the model file. The response also contains the file's expected size and SHA-256 hash so the app can verify what it downloaded.- The signed URL itself β points to our Cloudflare R2 storage and serves the model file (
gemma-4-E2B-it, approximately 2.5 GB).
Neither request:
- Carries information about you, your typing, your contacts, or the contents of any field β beyond what any browser would send when fetching a file (your IP address, the app's user-agent string).
- Establishes any kind of account or session.
The only other time the app uses the network is the Chip Store catalog refresh. When you open the Chip Store screen in Settings, the app fetches the current catalog of add-on chips from tidytype.io/catalog/chips.json (a small file we operate). This:
- Happens only when you open the Chip Store β there is no background, periodic, or automatic query, and nothing runs while the app is closed.
- Carries no information about you or your typing β it is a plain download (your IP address and the app's user-agent, like any file fetch); nothing is sent from your device.
- Is not required: the Chip Store also works from a catalog bundled inside the app, so if the refresh fails or you are offline, the keyboard and the store keep working normally.
Apart from the one-time model download and this Chip Store catalog refresh, the app operates entirely offline. Nothing you type, speak, or rewrite is ever sent anywhere.
The model file is Gemma 4 E2B, licensed by Google under the Gemma Terms of Use. We re-host it ourselves; the only third party involved is Cloudflare, which operates the network we use to serve the file (privacy policy).
If you do not want to download the model, you can use the keyboard for typing only β the chip rewrites and Voice features will be disabled but the keyboard itself works.
3. On-device data the app stores locally
The following are kept only on your device, never transmitted, and removed when you uninstall the app:
- Personalization for word suggestions. Each time you complete a word by tapping space, punctuation, or a suggestion, the word is added to a per-language frequency count stored in the app's internal storage. This makes your most-typed words rank higher in suggestions over time. We store only the count, never the surrounding context. Password fields and any field that sets the Android "no personalized learning" flag are excluded β nothing is learned or suggested there.
- Custom chip configurations. Chips you add, edit, or import via Settings are stored as JSON files in the app's internal storage.
- Last-used translate target language and last-used voice translate target language, for the one-tap behavior of the Translate and Voice chips.
- Keyboard preferences (active layout, etc.) in SharedPreferences.
- Performance diagnostics. The app keeps a small on-device log of rewrite performance: timings (for example how long a rewrite took), which chip was used, text lengths, device model, and error categories β never the text itself, the rewrite output, audio, or images. You can view this in Settings β Advanced β Diagnostics. It is stored only on your device and is transmitted by no one: the only way it can leave the device is if you yourself tap Export and choose an app to share the file with.
- Camera chip photos (experimental feature, off by default). If you enable and use the Camera chip, the photo you take is saved temporarily in the app's private cache, processed by the on-device model to extract its text, and then deleted. Photos are never uploaded.
None of this is transmitted to us or anyone else. The only exception is data you explicitly choose to share through the Android share sheet: exporting a chip you created as a link or file (this contains only that chip's configuration β its name, icon, prompt text, and settings), or exporting the diagnostics file described above. In both cases you pick the destination and nothing is sent without that action.
4. Permissions
RECORD_AUDIOβ required for the Voice chip. The microphone is activated only when you tap the Voice chip and is released as soon as recording stops. Audio is encoded to a temporary WAV file in the app's cache directory, sent to the on-device language model for transcription, and deleted immediately after. Voice audio is never uploaded.POST_NOTIFICATIONS(Android 13+) β required to display the small persistent notification while the language model is loaded in memory. This notification is the user-visible indicator that the model is active and uses no data.
The app requests no other runtime permissions. (Like most apps it holds normal install-time permissions such as internet access β used only for the downloads described in Section 2. The Camera chip does not need a camera permission: it opens your device's own camera app, which hands back the photo.)
5. Children
TidyType is intended for adults. The app processes whatever text you type in any app on your device, so we recommend against installing it on devices used by children.
6. Changes to this policy
If we change this policy in a way that materially affects how the app handles data, the change will be reflected here with a new "Last updated" date at the top. Because the app does not collect any data, we have no way to notify you of the change other than through this document.
7. Third-party software
The app uses the following open-source components, each governed by its own license. None of them transmit data:
- LiteRT-LM (Google, Apache 2.0) β on-device language model runtime
- Gemma 4 E2B (Google, Gemma Terms of Use) β the language model itself
- AndroidX (Google, Apache 2.0) β Android support libraries
- Material Components for Android (Google, Apache 2.0) β UI components
- Kotlinx Coroutines (JetBrains, Apache 2.0) β async runtime
- uCrop (Yalantis, Apache 2.0) β the photo-crop screen of the experimental Camera chip; operates only on the local photo file
Full open-source notices are available in the app at Settings β Legal & open source licenses, and on the Legal & licenses page.