Menstrual cycle calculator predicts your next period, fertile window, and ovulation from your cycle length and last period date. Private, runs locally, no signup.
Updates automatically as you type.
Calculated in your browser; your inputs are not sent to us. Privacy
Results will appear here.
✓Basic automated checks passed. Formula accuracy is not established by these checks. See check scope and results
General estimate for planning only — not medical advice. Consult a doctor about your specific situation.
Calculation details
Every figure above is calculated locally in your browser from the assumptions shown. No inputs are sent anywhere. See the methodology section below for how this tool works.
Use this resultShare the current inputs, or ask ChatGPT to explain the calculation in context.
Ask an AI to explain this result
Share this result
Review the generated output before relying on it.
This tool runs in your browser. Your calculator inputs and results are never transmitted to us or to ad/affiliate partners. Ads and sponsored links may set third-party cookies to serve and measure them, but they never receive your calculation values. If you explicitly save a scenario, its permitted fields stay in local browser storage until you clear them. See our Privacy Policy.
Use this result
Share the current inputs or ask ChatGPT to explain the calculation in context.
No unrelated authority link is added merely to make this page look sourced. Tool-specific external sources are shown only when they directly support the method, rate, or rule.
Assumptions to Verify
These tools provide general estimates for planning and education only.
They are not medical advice and not a substitute for a qualified healthcare professional.
Always consult your doctor or another healthcare provider about your specific situation.
Privacy: The calculation runs in this browser. Shared links contain the page address only, not your inputs or results.
A worked example: 28-day cycle, 10 days in
Take the defaults most calculators assume: a 28-day cycle, a 5-day period, and day 10 since bleeding started. The countdown to the next period is 28 minus 10, so 18 days. Ovulation is estimated 14 days before that next period, which gives 18 minus 14, so 4 days from today, around cycle day 14.
The fertile window is ovulation minus 5 to ovulation plus 1: from 1 day before today to 5 days after. Because the start is negative, the output switches wording: it reports the window started 2 days ago and ends in 5 days. That matches calendar math, since the window spans cycle days 9 through 15.
Change only the last input to day 20 and everything shifts: 28 minus 20 leaves 8 days to the next period, ovulation falls at 8 minus 14, or minus 6, so the tool reports ovulation was about 6 days ago and the fertile window ended 6 days ago, having started 12 days ago. Same cycle length, completely different answer, which is why the days-since-start input matters more than the cycle length.
Where the estimate breaks down
The fixed 14-day luteal phase is an average, not a constant. Published data put the luteal phase between roughly 11 and 17 days, so a 28-day cycle can carry up to 3 days of ovulation-date error before any input error is counted. Tracking ovulation with LH strips across 3 cycles typically narrows this to about a 2-day margin.
The validation caps also encode honesty limits: cycles over 60 days or under 1 day are rejected because cycle-length prediction models are built on regular cycles of roughly 21 to 35 days, and a period longer than 10 days usually warrants a clinical conversation rather than a date prediction. One study of more than 600,000 cycles found only about 65% of cycles fall within 21 to 35 days, so a third of users are outside the model's comfort zone from the start.
Apps using this same arithmetic, evaluated against urine-confirmed ovulation, miss the actual day by 3 or more days in a substantial share of cycles, with error growing for cycles outside 26 to 32 days. Treat the fertile window as a range to confirm with a test, not a schedule to rely on for avoiding pregnancy.