Skip to content

Repository files navigation

Expanda logo

Expanda

Type a shortcut. Insert anything.
A free, offline, text expander for Android that works across your apps.

GPLv3 License Android 8.0 or newer No Internet permission No ads or analytics Support on Ko-fi

Send custom messages with a trigger. Want to quickly type out the current date in a specific format? Or do you want your emojis to replace your triggers? You can do it all cross platform with espanso but now on android too with this app!

Expanda saves you from typing the same things over and over.

Your email when someone asks for it. Your address for a delivery. Your IBAN when a friend owes you money. The WiFi password every time someone visits. Your phone number...

Expanda lets you save all of that behind a short shortcut. Type the shortcut anywhere: WhatsApp, Gmail, Chrome, Notes, a bank app, and it gets replaced instantly.

You type Expanda writes
/mail diego@example.com
/phone +34 612 345 678
/addr Calle Mayor 12, 3B, 28013 Madrid
/iban ES91 2100 0418 4502 0005 1332
/wifi WiFi: MiCasa · Password: welcome2024
/sorry A random polite decline from a list of 3–4 you wrote
/today Friday, 29 August 2026
/sig Best regards, + your name + phone
/late15 (or /late45, etc.) Sorry, running 15 min late! 🙏

Set them up once. Save yourself thousands of taps.

Warning

Expanda was built quickly for personal use with a lot of AI help. I'm not an Android developer, so the code has limited human review and bugs may remain. I'm sharing it in case others find it useful; reports and PRs welcome.

See it in action

Using an Expanda snippet in another Android app
Use snippets anywhere
Creating a snippet in Expanda
Create a snippet
More screenshots
Expanda snippets screen
Snippets
Expanda template editor
Template editor
Expanda suggestion popup
Suggestions
Expanda action library
Actions
Expanda action shortcut settings
Action settings
Expanda settings screen
Settings
Expanda appearance settings
Appearance

Get started

  1. Install the APK from GitHub Releases (Android 8.0+).
  2. Open Expanda — it'll walk you through enabling the Accessibility service.
  3. Create your first snippet and try it in WhatsApp.

Android 13+ sideload heads-up: if Android blocks Accessibility, open App info → ⋮ → Allow restricted settings. Expanda tells you this in-app too.

Features

Everyday use

  • Works in any editable field, across all your apps
  • Suggestion popup as you type, with a preview of what will be inserted
  • Backspace right after an expansion to undo it
  • Quick Settings tile to pause/resume Expanda without opening the app

Smart snippets

  • Forms, today's date, clipboard content, random picks and nested snippets — with control over where the cursor lands
  • Regex triggers with named captures (e.g. ,late15 extracts 15)
  • Playground to test snippets safely without touching your real library

Sync, backup & sharing

  • Espanso-compatible YAML — share a match/ folder with your desktop setup, edits go both ways
  • Full app backup, plus YAML and CSV import/export

Control & polish

  • Per-app exclusions (skip banking apps, password managers, whatever you want)
  • Tags, search and bulk edit for large libraries
  • Light, dark and AMOLED themes; text scaling; optional haptic feedback

Permissions and privacy

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.

Compatibility and limitations

Expanda works in any app that exposes its editable fields through Android's Accessibility API. That covers the vast majority of native apps (WhatsApp, Telegram, Gmail, Discord, Google Calendar, most notes apps, Chrome web pages, etc.). A few apps route text through their own document model or a canvas, which Android's Accessibility API cannot fully reach; those are documented below.

Works well

  • Native EditText widgets (WhatsApp, Telegram, Gmail compose, Discord, Google Calendar, Xiaomi Notes)
  • Most WebView-based editors (Chrome page inputs, Capacitor / Cordova apps)

Partial

  • Obsidian mobile: the app wraps CodeMirror in a Capacitor bridge that reports itself as a plain EditText to Android. Expansions do fire, but the cursor sometimes lands in the wrong position and the undo-with-backspace is unreliable. Fixing this properly needs the newer FLAG_INPUT_METHOD_EDITOR API and is tracked as a future improvement.
  • Chrome address bar: Chrome never emits TYPE_VIEW_TEXT_CHANGED for the omnibox, so triggers typed there are not detected. Page inputs inside Chrome do work.
  • Xiaomi Notes: expansions work but newlines can be dropped by the app's own formatting layer.

Doesn't work

  • Google Docs / Sheets / Slides: they draw the document on a canvas and expose no editable text to accessibility. There is no reliable way to expand inside them today.
  • Any editor that suppresses accessibility events entirely (some secure keyboards, password managers, banking apps). This is intentional on their side; Expanda skips password fields on purpose.

OEM background restrictions

Some manufacturers stop accessibility services when the app hasn't been used for a while. 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.

Build from source

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:assembleDebug

Run the local checks with:

./gradlew :app:testDebugUnitTest
./gradlew :app:lintDebug

Release 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.

Project status

Current release: 0.3.1. It rebuilds Expanda around Espanso-compatible YAML, a new match model, tutorial onboarding, a Playground, a Source tab, and full local backups. Upgrading from 0.2.0 migrates your snippets automatically; syntax changes are documented in CHANGELOG.md.

See CHANGELOG.md for release history and SECURITY.md for private vulnerability reports.

Motivation and credits

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.

Support

If Expanda is useful to you, consider buying me a coffee on Ko-fi.

Contributing

Bug reports, documentation improvements and pull requests are welcome. Read CONTRIBUTING.md before opening a change.

License

Expanda 0.3.0 and later are free software under GNU GPLv3. If you distribute a modified build, you must provide its corresponding source under the same license. The published 0.2.0 release remains available under MIT because changing the license cannot revoke permissions already granted for that version.

About

Free and open-source Android text expander with offline snippets, dynamic templates and no Internet permission.

Topics

Resources

Contributing

Security policy

Stars

27 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages