Free and open-source text expansion for Android.
Create snippets, dynamic templates and text actions, then use them in any editable field.
Warning
I am not an Android developer. I built Expanda quickly for my own use with extensive help from AI, so parts of the code have not received thorough human review and bugs may remain. I am sharing it because others may find it useful and because community feedback can make it better for everyone. Bug reports and pull requests are welcome.
![]() Use snippets anywhere |
![]() Create a snippet |
Expanda gives you reusable text without sending what you type to a server. The app has no Internet permission, accounts, ads, analytics or tracking SDKs. Snippet matching and expansion run on your device.
Expanda uses Android's Accessibility service to detect shortcuts and replace text in other apps. It ignores password fields and shows a clear explanation before opening Android's accessibility settings. Read Privacy and Permissions for the exact behavior.
- Create a snippet and assign a shortcut such as
;mail. - Enable Expanda's Accessibility service.
- Type the shortcut in an editable field or select it from the suggestion popup.
Shortcut: ;meeting
Template:
Hi {FORM: NAME},
Can we meet on {DATE:+1:DAY:EEEE} at {TIME:HH:mm}?
{CURSOR}
![]() Snippets |
![]() Template editor |
![]() Suggestions |
![]() Actions |
![]() Action settings |
![]() Settings |
![]() Appearance |
||
- Snippets with unique shortcuts, names, multiple tags and per-app exclusions.
- Delimiter-based or instant expansion with optional case sensitivity.
- Multiple templates with first, random, sequential and manual selection modes.
- Dynamic tokens for cursor placement, clipboard text, dates, times, forms and nested snippets.
- A movable suggestion popup with configurable matching, height, previews and text actions.
- Built-in actions for text formatting, calculations, selection, deletion, cursor movement, clipboard operations and Android sharing.
- Search, tag filters and bulk selection for managing snippets.
- Optional local clipboard history with pinning and deletion controls.
- Local usage statistics that you can disable.
- JSON backup and CSV import/export.
- Material themes using wallpaper colors, default colors or a custom color, plus light, dark and AMOLED modes.
- Configurable text size, haptic feedback and a Quick Settings tile.
| Token | Result |
|---|---|
{CURSOR} |
Places the cursor at this position after expansion |
{CLIPBOARD} |
Inserts the current clipboard text |
{DATE:yyyy-MM-dd} |
Inserts a formatted date |
{TIME:HH:mm} |
Inserts a formatted time |
{FORM: NAME} |
Asks for a value when you use the snippet |
{SNIPPET: shortcut} |
Inserts another snippet |
Download the APK from GitHub Releases. Expanda requires Android 8.0 or newer.
Android may ask you to allow installation from your browser or file manager. After installation, open Expanda and follow the in-app explanation before enabling its Accessibility service.
Updates must use an APK signed with the same certificate. Check APK verification if Android rejects an update or you want to verify the file.
Expanda uses only these Android permissions and protected capabilities:
| Permission | Purpose |
|---|---|
| Accessibility service | Reads changes in active editable fields and replaces matching shortcuts. Password fields are ignored. |
| Battery optimization exemption request | Opens Android's battery settings so you can allow reliable background operation. |
| Vibration | Provides optional haptic feedback after an expansion. |
The Accessibility service is a special service capability rather than a regular manifest permission. Expanda does not declare INTERNET, so the app cannot send snippets, typed text, clipboard history or usage statistics over the network through Android's standard networking APIs.
The clipboard history and local usage statistics are enabled by default and can be disabled in Settings. See Privacy for stored data and deletion instructions, and Permissions for the complete permission rationale.
Official releases use the following identity:
Package ID: dev.diego.expanda
Signing certificate SHA-256:
8F:74:53:E5:C2:C8:F8:BC:F6:F8:F1:16:27:F1:7D:3F:43:F2:35:6C:CF:BF:C4:84:EA:07:20:DE:46:F2:D4:A2
The SHA-256 checksum of the official v0.2.0 APK is:
6ae7bd9a4ffd2d6a7b586ace4e1b9816344f5d5e3a4bb26f261bd22b7d9712ec Expanda-v0.2.0.apk
The same value is stored in checksums/Expanda-v0.2.0.apk.sha256.
On a computer with Android SDK Build Tools installed:
sha256sum Expanda-v0.2.0.apk
apksigner verify --print-certs Expanda-v0.2.0.apkAndroid apps, keyboards and manufacturer customizations expose editable fields in different ways. Direct replacement can fail in some editors; the optional compatibility fallback temporarily uses and restores the clipboard for those cases.
Some manufacturers stop accessibility services during background use. Expanda can open the relevant Android battery settings, but the exact option name depends on the device.
Please use the bug report template for compatibility problems. Include the Android version, device, keyboard, target app and exact steps without attaching private text.
You need JDK 17 and the Android SDK with API 36 installed.
git clone https://github.com/diegomarzaa/expanda.git
cd expanda
export JAVA_HOME=/path/to/jdk-17
export ANDROID_HOME=/path/to/android-sdk
./gradlew :app:assembleDebugRun the local checks with:
./gradlew :app:testDebugUnitTest
./gradlew :app:lintDebugRelease signing uses a local, ignored signing.properties file. The repository contains no signing keys. See BUILDING.md for the full setup and release-signing format.
Version 0.2.0 is the first stable public release. It covers the complete text-expansion workflow and has been tested through daily use and local automated checks.
The project was developed through an AI-assisted, vibe-coding workflow. Much of the generated implementation still needs deeper human review. Contributions that simplify the code, improve compatibility or strengthen privacy and testing are welcome.
See CHANGELOG.md for release history and SECURITY.md for private vulnerability reports.
I started Expanda because I could not find an open-source Android text expander that covered the workflow I wanted. The project also became a way to learn about accessibility services, background execution, overlays and Android text editing.
Typing Hero provided the main product and workflow reference. Expandroid also influenced the project. Expanda is an independent implementation and is not affiliated with either project.
Bug reports, documentation improvements and pull requests are welcome. Read CONTRIBUTING.md before opening a change.
Expanda is free software released under the MIT License. You may use, copy, modify, distribute and sell copies under the terms of that license.








