Open-source project
thunderbird/thunderbird-android avatar
thunderbird/thunderbird-android

Thunderbird for Android and the K-9 Mail codebase it still runs on

Thunderbird for Android – Open Source Email App for Android (fka K-9 Mail)

14,214 stars2,888 forksKotlinApache-2.0

At a glance

What is it?
Thunderbird for Android is the K-9 Mail client republished under the Thunderbird brand: one Kotlin tree, two application ids, two release tags. Here is what the repository actually documents, and exactly where the documentation stops.
Who is it for?
Adopt Thunderbird for Android if you want K-9 Mail under a Mozilla-run name and are willing to read the support forum instead of a settings manual. Do not adopt it if you need user help documented in the repository, because the README routes that to Mozilla's support site.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • thunderbird/thunderbird-android14,214 ★ · +198
Star history
Repository2026-09-222026-11-13
thunderbird/thunderbird-android14k14.2k

198 Stars in the last 52 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

Two application ids, one Kotlin tree

Thunderbird for Android did not begin as a separate mail client. K-9 Mail joined the Thunderbird family in June 2022 and became its foundation, so this repository builds two applications out of one source tree. The brand modules sit next to each other at the top level: `app-thunderbird/` and `app-k9mail/`, alongside the shared `app-common/` and `app-composition/` modules.

The releases page makes that visible in a way the README does not. `THUNDERBIRD_25_0b1` and `K9MAIL_24_0` were both published on 2026-10-05, about a minute apart. Two applications, one commit stream. If you are weighing them against each other, you are choosing a brand and a package id, not a different engine.

Where the two apps meet a user is account handling: several accounts inside one install, with a Unified Inbox option. The project's own framing for that choice is that private data is never treated as a product, and the app is distributed on that basis under Apache-2.0 with the homepage at thunderbird.net/mobile.

Five routes to the APK, each with its own catch

There is no build step for a normal user here. An Android mail client arrives as a signed APK, and the project names five routes to one. Google Play carries the stable app as `net.thunderbird.android`, and F-Droid carries the same app. A separate Beta app ships as `net.thunderbird.android.beta`, which buys early access to current development and hands you whatever is still moving.

Two routes bypass the stores entirely. FFUpdater, packaged as `de.marmaro.krt.ffupdater`, pulls the latest versions straight from ftp.mozilla.org, so no update goes through a store review. Obtainium does the same from GitHub releases, but it needs a filter before anything will match: use "Filter release title by regular expression" under "Additional options" and enter `Thunderbird`.

Whichever route you take, check the build before you point it at a live mailbox. SHA-256 fingerprints for the signing certificates sit in SECURITY.md under the verifying fingerprints heading, and that file is the way to check a build against the project's signing certificates.

One Gradle tree that has to ship two products

The module list explains how two products leave one tree. Feature code sits under `feature/`, shared behaviour under `core/`, mail handling under `mail/`, and there are `legacy/`, `app-metadata/`, `metadata`, `app-common/` and `app-composition/` entries alongside them.

The build is Kotlin and Gradle: `settings.gradle.kts`, `build.gradle.kts`, `gradle.properties`, the `gradlew` and `gradlew.bat` wrappers, a pinned `.java-version`, and a `mise.toml` for toolchain versions. `quality/`, `schemas/` and `config/` sit beside them.

Decisions get written before code gets written. `docs/engineering/rfcs/` holds Requests for Comments on technical direction, `docs/engineering/technical-designs/` holds the implementation detail, and `docs/engineering/adr/` holds Architecture Decision Records for choices meant to outlive the code that prompted them.

A fork has to replace the OAuth client in two source sets

Forking this project comes with one instruction, and it is not cosmetic. Replace the OAuth client setup in `app-k9mail/src/{debug,release}/kotlin/app/k9mail/auth/K9OAuthConfigurationFactory.kt`, and replace the matching file under `app-thunderbird/` as well.

What the repository does not give you is the replacement itself.

That makes this the hardest part of shipping a private build, and the part with the least written guidance behind it. Anyone planning a fork should budget for that before deciding the codebase is a usable base.

The two brands do not ship identical feature sets

Sharing a codebase does not mean shipping identical builds. Some features are enabled for Thunderbird and left out of K-9 Mail, and the stated rule is a judgement about fit rather than a published matrix: the import from K-9 functionality is the example the project names. A guide written for one app can be wrong for the other, and a screenshot from one may show a control the other does not have.

The release notes are the only per-version record, and the README reaches them by link rather than reproducing anything. Reading them release by release is the only way to know what changed for your brand.

If you are moving from K-9 Mail to Thunderbird, that import path is the one transition the project calls out by name. Everything past it you will be comparing by hand between the two apps.

Where the README stops and the support forum takes over

The README routes user help to Mozilla support resources rather than documenting app settings itself.

The project routes support questions elsewhere, to a knowledge base at support.mozilla.org/products/thunderbird-android, an FAQ at support.mozilla.org/kb/thunderbird-android-8-faq, a support forum for questions, and the GitHub issue tracker once you are certain it is a bug. Feature ideas are voted on at connect.mozilla.org.

Nothing here is hidden. The help lives outside the repository, and you should plan your support path accordingly before making this your mail client.

Paid for by donations, maintained beside the Beta channel

The project states plainly that Thunderbird is supported solely by financial contributions from users, and the donation link points at the mobile fund. That shapes what you get: a client with a named core team and a volunteer translation effort, not a service carrying a support guarantee.

The volunteer work is visible in the repository itself. Translations run through Weblate at hosted.weblate.org/projects/thunderbird/thunderbird-android/, `docs/CONTRIBUTING.md` is where Kotlin contributors are pointed, and `CODE_OF_CONDUCT.md` and `AGENTS.md` sit at the top level next to the Mozilla Community Participation Guidelines the README asks contributors to read.

The last push to the default branch landed on 2026-11-02. On the releases side, Beta tag `THUNDERBIRD_25_0b2` was published on 2026-10-19, and `THUNDERBIRD_25_0b1` and `K9MAIL_24_0` both shipped on 2026-10-05, so the Beta line and the stable line are versioned and shipped from the same place. Planning is public as well, on a roadmap board and a separate sprint board for the core team.

Editorial conclusion

Adopt Thunderbird for Android if you want K-9 Mail under a Mozilla-run name and are willing to read the support forum instead of a settings manual. Do not adopt it if you need user help documented in the repository, because the README routes that to Mozilla's support site. Before switching, compare the SHA-256 signing fingerprints in SECURITY.md against the build you actually installed.

Frequently asked questions

What is Thunderbird for Android?

An open-source email client for Android, written in Kotlin and released under Apache-2.0, with its homepage at thunderbird.net/mobile. It grew out of K-9 Mail, which joined the Thunderbird family in June 2022 as the foundation for the Android app.

Is Thunderbird for Android good?

That depends on what you need documented. The app handles several accounts in one install with a Unified Inbox option, and the last push to the main branch landed on 2026-11-02. Help with app behaviour is routed to Mozilla's knowledge base and support forum.

Is there a version of Thunderbird for Android?

There is a stable build and a separate Beta build. The stable app is `net.thunderbird.android` on Google Play and F-Droid, the Beta app is `net.thunderbird.android.beta` on both stores, and builds are also published as GitHub releases, through FFUpdater straight from ftp.mozilla.org, and through Obtainium with a release title filter.

Thunderbird for Android vs K-9 Mail: what actually differs?

They are the same codebase. K-9 Mail joined the Thunderbird family in June 2022, both apps are updated together and look nearly identical by design, and Thunderbird Beta 25.0b1 and K-9 Mail 24.0 both shipped on 2026-10-05. Some features are enabled for Thunderbird and not for K-9 Mail, with import from K-9 named as the example.

Thunderbird for Android vs Gmail: what should I check first?

The repository holds no feature comparison with Gmail, so anything beyond the app's own description cannot be checked here. What it does say is that Thunderbird keeps several accounts in one app with a Unified Inbox option and ships as `net.thunderbird.android` under Apache-2.0.

Official sources

  1. License: Apache-2.0
  2. Project website
  3. README
  4. Releases
  5. thunderbird/thunderbird-android on GitHub
Community

Where developers are discussing it

Posts on Hacker News, dev.to and Lobsters that link to this repository, found by our scan of those communities. 1 in the last 30 days; newest first.

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/thunderbird-thunderbird-android.svg)](https://hysenlabs.com/projects/thunderbird-thunderbird-android)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/thunderbird-thunderbird-android.svg)](https://hysenlabs.com/projects/thunderbird-thunderbird-android)

Was this useful?