How it works

Cycle tracking — how it works

The exact model behind phase estimation, and how it turns your own logged history into settings without asking you to fill in a form.

1. The phase model, and why it's estimated

Migraine Today estimates cycle day and phase (menstrual, follicular, ovulation, luteal) from your average cycle length and period length alone — the same approach consumer cycle-tracking apps use, without requiring basal temperature or hormone testing. It's a model, not a measurement: it assumes reasonably regular cycles and won't be precise for an irregular one, which is exactly why every phase-linked insight is phrased as what tends to happen in that phase, not a guarantee for this specific day.

2. Exactly how a phase is calculated

Given your last period's start date, average cycle length and average period length:

  • Cycle day is the number of days since that start date, wrapped by your average cycle length.
  • Menstrual is cycle day 1 through your average period length.
  • Luteal length is held close to fixed — 14 days, or shorter if your cycle itself is short — because the post-ovulation phase varies far less than the pre-ovulation phase does. Ovulation is estimated as a 3-day window centered on (cycle length minus luteal length).
  • Follicular is everything between the end of your period and the start of that ovulation window.
  • Luteal is everything after the ovulation window until your next period is due.

3. Settings can be typed in, or inferred automatically

You can set your last period start, average cycle length and average period length directly. If you don't, Migraine Today derives them from the “bleeding today” checkbox you already tick on the daily log: it finds the most recent run of consecutive bleeding days (that's your current period), uses its start date as the anchor, and takes its length as your period length.

If two or more periods have been logged this way, the gap between their start dates becomes your average cycle length. If a period is still in progress, its length isn't used yet (it's not over); the previous complete period's length is used instead, or 4 days as a starting estimate if there isn't one yet — the same fallback a clinician would use for a first estimate with no history at all.

4. The preventive-window warning

The late luteal phase — the last few days before your period is due, when both estrogen and progesterone fall sharply — is flagged as a preventive window starting 4 days before the predicted cycle day 1. It's the one window timed to be actionable: the drop hasn't happened yet, which is why the Cycle tab surfaces it ahead of time rather than only explaining a headache after the fact.

5. Period-overdue detection

Your expected next period is your last period's start date plus your average cycle length. Migraine Today only flags it as overdue once it's more than 3 days past that date — a grace window absorbing the ordinary variability every cycle has, rather than flagging every cycle that isn't exactly average length.

6. How cycle data feeds Insights

Every logged entry is tagged with the phase it fell in using the calculation above, then grouped by phase to compute a pain-free rate per phase — purely a count of your own logged days, described in full on the Insights & Prevention page. The “currently in the [phase] phase” card on Insights uses the same phase-detection logic, run against today's date.

7. No AI involved

Phase estimation, period-overdue detection and the auto-derivation of settings from your log history are all closed-form date arithmetic — addition, modulo, and simple grouping — not a trained or predictive model of any kind.

8. What's stored, and where

Migraine Today stores your cycle settings (last period start, average cycle and period length) and whatever you log on the “bleeding today” checkbox as part of each entry — no separate cycle-tracking data is collected beyond what's already part of your diary. See the Privacy Policy for retention and your rights under GDPR, including the specific note on reproductive and sensitive health data.