⚗

FREETOOLS LABS

FreeTools Labs Glossary

Cycle and ovulation

Learn how period dates and cycle lengths create calendar forecasts for upcoming dates, and why ovulation and possible windows remain estimates.

Relevant tool

Cycle & Ovulation Calculator

Period, cycle length, ovulation estimate and history.

Open Cycle & Ovulation Calculator →

The Cycle & Ovulation Calculator turns entered period starts and cycle assumptions into calendar dates for future periods, an estimated ovulation date and a possible fertile window. It does not observe hormones or symptoms and does not measure a biological event.

Inputs and calculation modes

The page has three separate modes. `Cycle & next period` uses the latest period start, an integer cycle length, period duration, the number of future cycles and a luteal-phase assumption. `Ovulation & fertile days` uses the latest period start, cycle length and that assumption. `Cycle from past periods` uses two to twelve period starts and the same assumption.

The service accepts real ISO calendar dates in `YYYY-MM-DD` format only. Cycle length must be an integer of at least 2; the luteal-phase assumption must be an integer of at least 1 and smaller than the cycle length. Period duration must be at least 1 day and shorter than the cycle, and future cycles are limited to 1 through 12.

Day 1 is the first entered bleeding day. Results are date-only calendar values, not a record of a biological process.

Future periods and calendar dates

Next period start

latest period start + cycle length in days

Predicted period end

predicted period start + period duration − 1 day

For a forecast, the service adds whole calendar days and produces up to twelve consecutive starts and ends. Duration only marks the displayed end of a predicted bleeding period; it does not change cycle length or the ovulation estimate.

Dates are handled at UTC midnight and returned as `YYYY-MM-DD`. Additions and differences use whole days, so daylight-saving changes do not shift a result by hours. Invalid dates are rejected rather than silently normalised.

How the ovulation estimate is formed

Estimated ovulation day in this model

cycle length − luteal-phase assumption

Estimated ovulation date

period start + (estimated ovulation day − 1) days

The editable luteal-phase assumption defaults to 14 days on the page, but it is not a fixed biological value. With a 28-day cycle and 14, the service returns day 14; with a 35-day cycle and the same assumption, it returns day 21. The calculator therefore does not claim that ovulation always occurs on day 14.

Direct estimation uses the entered latest start. A forecast uses every calculated future start as the basis of its following cycle. An output date is a calendar calculation within the selected model, not a measurement or confirmation of ovulation.

Possible fertile window

Calculator window

estimated ovulation date − 5 days to estimated ovulation date + 1 day

For every estimated ovulation date, the tool creates a fixed window from five days before through one day after that date. It adds no probabilities, individual measurements or further safety margins. The documented ACOG source helps put that interval in context; it does not turn a calendar window into individual fertility confirmation.

This window does not identify safe days. The calculator is not suitable for reliable contraception, confirming fertility or determining pregnancy.

History and variation represented by the model

History mode sorts two to twelve unique starts and calculates the day gaps between consecutive starts. It displays the unrounded mean, median, shortest and longest gap, and the range. Only the mean is mathematically rounded to a whole number of days for the next expected start, which is added to the newest date.

It also shows a historical interval from the newest start plus the shortest to the newest start plus the longest observed gap. That interval describes entered calendar gaps only: it provides no cause, probability or uncertainty model. The visible history mode has no separate ovulation result.

Duplicate starts are invalid. The service can reject future historical entries when a reference date is supplied, although the current page supplies none. Past regularity is therefore a fixed input assumption, not a guarantee of future cycles.

Example 1: direct estimate with 28 days

In `Ovulation & fertile days`, enter latest period start `2026-01-01`, cycle length 28 and luteal-phase assumption 14. The service calculates 28 − 14 = day 14 and `2026-01-01` + 13 days = `2026-01-14`.

The fixed window starts five days earlier on `2026-01-09` and ends one day later on `2026-01-15`. These are the exact service results for those inputs; they are a calendar estimate, not confirmation that a biological event happens on that date.

Example 2: 35 days is not automatically day 14

In `Cycle & next period`, enter `2026-01-01`, cycle length 35, period duration 4, two future cycles and assumption 14. The first predicted period runs from `2026-02-05` to `2026-02-08`; the second from `2026-03-12` to `2026-03-15`.

For the first future cycle, 35 − 14 = day 21. From its start `2026-02-05`, the service returns estimated ovulation `2026-02-25` and window `2026-02-20` to `2026-02-26`. This shows the implemented dependency on cycle length and the assumption, not a prediction of an actual course.

What this calendar cannot determine

The calculator processes no hormone values, temperature, symptoms, tests, ultrasound or other body data. It calculates no cause of variation, conception probability or individual biological fertility. The service function `manualOvulation` is an isolated date helper, not an input mode on the current page.

An expected period, ovulation date or window cannot confirm or rule out pregnancy. The tool offers no diagnosis, treatment or individual contraceptive advice. With irregular or changing cycles, the fixed entered length is a particularly limited assumption.

Sources and foundations