{
  "id": "period-calculator",
  "version": "2.0.0",
  "name": "Period Calculator",
  "shortName": "Period",
  "description": "Forecast period start and end dates, estimated ovulation, and fertile windows for multiple cycles.",
  "category": "Health & Fitness",
  "categorySlug": "health-fitness",
  "keywords": [
    "period tracker",
    "menstrual calendar",
    "next period",
    "cycle forecast"
  ],
  "status": "live",
  "workStatus": "pending",
  "reviewStatus": "pending",
  "migrationStatus": "migrated",
  "migratedDate": "2026-08-25",
  "engine": "native",
  "creator": null,
  "reviewer": null,
  "quality": {
    "availability": "live",
    "technicalReviewRecord": "/reviews/period-calculator.json",
    "qualifiedReview": "pending",
    "qualifiedReviewer": null,
    "qualifiedReviewDate": null,
    "formulaVersion": "2.0.0",
    "referenceCoverage": "references-listed",
    "releaseTestScope": "Catalog and regression checks are not a professional formula audit; consult release evidence.",
    "historicalMetadataDate": "2026-08-25",
    "historicalMetadataNotice": "The imported date is not evidence of a completed human review."
  },
  "notice": "Calendar predictions are estimates and are not a diagnosis or reliable contraception method.",
  "urls": {
    "page": "/calculator/period-calculator/",
    "definition": "/calculator/period-calculator/definition.json",
    "schema": "/calculator/period-calculator/schema.json",
    "llms": "/calculator/period-calculator/llms.txt",
    "legacyDefinition": "/calculator/period-calculator.json"
  },
  "queryExample": "https://askcalculators.com/calculator/period-calculator/?lastPeriodDate=2026-08-01&periodLength=5&cycleLength=28&lutealPhase=14&cycles=6",
  "queryParameters": {
    "lastPeriodDate": {
      "label": "First day of last period",
      "type": "date",
      "required": true,
      "default": "2026-08-01"
    },
    "periodLength": {
      "label": "Typical period length",
      "type": "number",
      "required": true,
      "default": 5
    },
    "cycleLength": {
      "label": "Average cycle length",
      "type": "number",
      "required": true,
      "default": 28
    },
    "lutealPhase": {
      "label": "Luteal phase length",
      "type": "number",
      "required": true,
      "default": 14
    },
    "cycles": {
      "label": "Cycles to forecast",
      "type": "number",
      "required": true,
      "default": 6
    }
  },
  "inputs": [
    {
      "id": "lastPeriodDate",
      "label": "First day of last period",
      "type": "date",
      "required": true,
      "defaultValue": "2026-08-01",
      "width": "full"
    },
    {
      "id": "periodLength",
      "label": "Typical period length",
      "type": "number",
      "required": true,
      "defaultValue": 5,
      "min": 1,
      "max": 14,
      "step": 1,
      "suffix": "days",
      "width": "half"
    },
    {
      "id": "cycleLength",
      "label": "Average cycle length",
      "type": "number",
      "required": true,
      "defaultValue": 28,
      "min": 20,
      "max": 45,
      "step": 1,
      "suffix": "days",
      "width": "half"
    },
    {
      "id": "lutealPhase",
      "label": "Luteal phase length",
      "type": "number",
      "required": true,
      "defaultValue": 14,
      "min": 8,
      "max": 20,
      "step": 1,
      "suffix": "days",
      "width": "half"
    },
    {
      "id": "cycles",
      "label": "Cycles to forecast",
      "type": "number",
      "required": true,
      "defaultValue": 6,
      "min": 1,
      "max": 24,
      "step": 1,
      "width": "half"
    }
  ],
  "outputs": [
    {
      "id": "nextPeriod",
      "label": "Estimated next period",
      "format": "date",
      "primary": true
    },
    {
      "id": "nextPeriodEnd",
      "label": "Estimated period end",
      "format": "date"
    },
    {
      "id": "nextOvulation",
      "label": "Estimated ovulation",
      "format": "date"
    },
    {
      "id": "fertileWindow",
      "label": "Estimated fertile window",
      "format": "text"
    }
  ],
  "formula": {
    "expression": "Next period = last period + average cycle length; estimated end = start + period length − 1; ovulation ≈ next period − luteal phase."
  },
  "examples": [
    {
      "label": "Reproducible default-input example (not a personal recommendation)",
      "inputs": {
        "lastPeriodDate": "2026-08-01",
        "periodLength": 5,
        "cycleLength": 28,
        "lutealPhase": 14,
        "cycles": 6
      }
    }
  ],
  "sources": [
    {
      "label": "Calculator.net reference calculator",
      "url": "https://www.calculator.net/period-calculator.html"
    }
  ]
}
