# Period Predictor

Predict your next period start dates from your last period and cycle length, with ovulation estimates and fertile windows. Free, private, in-browser.

## Run it

- **CLI:** `gizza tool period-predictor "2026-07-01"`
- **Web:** https://gizza.ai/tools/period-predictor/
- **Agents:** machine-readable descriptor (parameters JSON Schema) at https://gizza.ai/tools/period-predictor/tool.json

## Inputs

- `last_period` — First day of your last period _(field)_
- `cycle_length` — Average cycle length (days) _(field)_
- `period_length` — Period / bleeding length (days) _(field)_
- `luteal_phase` — Luteal-phase length (days before period) _(field)_
- `cycles` — How many upcoming cycles _(field)_

## Output

- Predictions (JSON) (text)

## Query parameters

Open the tool pre-filled and auto-run via URL:

- `last_period` — First day of your last period
- `cycle_length` — Average cycle length (days)
- `period_length` — Period / bleeding length (days)
- `luteal_phase` — Luteal-phase length (days before period)
- `cycles` — How many upcoming cycles

Example: `https://gizza.ai/tools/period-predictor/?last_period=2026-07-01&cycle_length=28&period_length=5&luteal_phase=14&cycles=6`

---

## About this tool

The **Period Predictor** projects your upcoming menstrual cycles from two things
you already know: the **first day of your last period** and your **average cycle
length** (the number of days from the start of one period to the start of the
next — 28 days for many people, but anywhere from about 20 to 45 is common).
From there it lists your next several period start dates, and for each cycle it
also shows:

- the **weekday** the period is expected to start on,
- the **bleeding-end date** (period start + your period length − 1),
- the **estimated ovulation day** — roughly your luteal-phase length before that
  period, since the luteal phase stays fairly constant even when cycle length
  changes, and
- the **6-day fertile window** — the five days before ovulation through
  ovulation day, when conception is most likely.

Everything runs **locally in your browser** — your dates are never uploaded to a
server, there is no sign-up, and the tool is free. Adjust the cycle length,
period length, luteal phase and how many cycles to project with the sliders, or
deep-link a prediction by putting the values straight in the URL
(`?last_period=2026-07-01&cycle_length=28&cycles=6`).

These predictions are **estimates**. Real cycles drift by a few days with stress,
illness, travel, sleep and other factors, and irregular cycles are inherently
harder to predict. This tool is **not a contraceptive method** and is **not
medical advice** — talk to a healthcare professional about anything concerning.

## FAQ

<details>
<summary>How does the predictor calculate my next period?</summary>

It adds your **cycle length** to the first day of your last period, and repeats
that for as many cycles as you ask for. With a last period of `2026-07-01` and a
28-day cycle, the next start is `2026-07-29`, then `2026-08-26`, `2026-09-23`,
and so on. Each date is labelled with its weekday and its bleeding-end date
(start + period length − 1).

</details>

<details>
<summary>How are ovulation and the fertile window estimated?</summary>

Ovulation is estimated as the predicted period start **minus your luteal-phase
length** (default 14 days), because the luteal phase — the time between
ovulation and the next period — stays fairly constant even when cycle length
varies. The **fertile window** is the six days ending on ovulation day: the five
days before it (sperm can survive several days) plus ovulation day itself.

</details>

<details>
<summary>What if my cycles are irregular?</summary>

Predictions are only as steady as your cycles. If your cycle length varies a lot
month to month, use your **average** and treat every date as a rough guide — the
real day can land a few days either side. For very irregular cycles the fertile
window and ovulation estimates are especially approximate. This tool is an
estimate, **not a contraceptive method** and **not medical advice**.

</details>

<details>
<summary>Is my data private?</summary>

Yes. All the math runs **in your browser** using local WebAssembly — the dates
you enter are never sent to a server, there is no account, and nothing is stored
after you close the page. You can even use the tool offline once it has loaded.

</details>

## Related tools

- [Extract Action Items from Meeting Notes](https://gizza.ai/tools/action-item-extractor/): Extract action items, owners, and decisions from meeting notes or daily notes with deterministic rules. Markdown checklist or JSON, private in-browser.
- [Base Decoder](https://gizza.ai/tools/base-decoder/): Auto-detect and decode Base16, Base32, Base45, Base58, Base64, and Base85 text, including nested layers, locally in your browser.
- [cURL Command Parser](https://gizza.ai/tools/curl-command-parser/): Paste a curl command to see its method, URL, query params, headers, body, auth, cookies and flags — or rebuild clean curl. Browser-only.
- [Data Format Converter](https://gizza.ai/tools/data-format-converter/): Convert data between CSV, TSV, JSON, and NDJSON (JSONL) in any direction — auto-detects the source, infers types, unions keys. Free, in-browser, no upload.
- [Dotenv Manager](https://gizza.ai/tools/dotenv-manager/): Parse, validate, merge and secret-mask .env files in your browser: flag duplicate and missing keys, lint names, and export .env.example or JSON. No upload.
