package icon

Luteal

Private, offline-first cycle tracking that separates facts from estimates
Luteal is a menstrual cycle tracker built around a simple rule: what you recorded and what the app calculated are never presented as the same thing.

Recorded observations are labelled as recorded. Predictions are labelled as estimates, shown as a range rather than a single confident date, and the app tells you what that range was derived from. Luteal makes no diagnosis and draws no medical conclusions.

OFFLINE BY DEFAULT

Everything is stored in a local database on your device. No account is needed and nothing is sent anywhere until you explicitly turn sync on. Android's cloud backup is disabled for the app's data, so your tracking history does not end up in a Google backup.

WHAT YOU CAN TRACK

- Cycle starts, and bleeding from spotting through to heavy
- Pain, mood and energy on a 1-5 scale
- Cramps, headache, fatigue, bloating, breast tenderness, mood changes, skin and pelvic pain
- Private notes, which are never included in any sharing
- Past cycles, so estimates become useful sooner

ESTIMATES YOU CAN REASON ABOUT

The estimated range for your next period widens or narrows based on your own recorded history. You can optionally declare areas of focus (PMS, PMDD, endometriosis, PCOS, perimenopause, thyroid) and an age range; these only widen the range or suggest extra observations, and they stay on your device.

Alongside your data, Luteal shows sourced facts about menstrual cycles, each linked to its published reference, because a tracker that only ever shows a 28-day average teaches people something false.

DUO SHARING, IF YOU WANT IT

You can link with a partner and choose, category by category, what they see: cycle day, the estimated range, mood, energy, support requests. Every category is independent and revocable at any time. Private notes are never shareable.

OPTIONAL SYNC

Sync across your devices is off by default. When enabled, your records are end-to-end encrypted on your device before upload: the server stores only ciphertext it cannot read. Your account code is the only key, and losing it means the synced data cannot be recovered by anyone, including the developer.

The app connects by default to the official Luteal sync service, and you can also connect to your own self-hosted folicular server. The app is fully usable offline without sync.

NO TRACKING

No advertising, no analytics, no Google Play Services, no Firebase. Crash reports are opt-in per crash: nothing is sent unless you read the dialog and choose to send it, and your tracking data is not included.

Luteal is free software under the GNU General Public License v3 or later.

Versions

Although APK downloads are available below to give you the choice, you should be aware that by installing that way you will not receive update notifications and it's a less secure way to download. We recommend that you install the F-Droid client and use that.

Download F-Droid
  • Version 1.2.1 (5) suggested Added on Aug 19, 2026

    arm64-v8a armeabi-v7a x86 x86_64

    This version requires Android 8.0 or newer.

    It is built and signed by the original developer, and guaranteed to correspond to this source tarball.

    Permissions
    • view network connections
      Allows the app to view information about network connections such as which networks exist and are connected.
    • run foreground service
      Allows the app to make use of foreground services.
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • run at startup
      Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
    • prevent phone from sleeping
      Allows the app to prevent the phone from going to sleep.
    • fr.luteal.app.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 2.7 MiB PGP Signature | Build Log