{
  "slug": "heating-degree-days",
  "title": "Heating Degree Days Calculator",
  "heading": "Heating Degree Days (HDD) Calculator",
  "category": "other",
  "url": "https://www.revenuelab.fyi/toolbox/heating-degree-days",
  "summary": "Estimate heating demand and fuel cost from daily average temperature vs. base 65°F.",
  "description": "Heating degree days quantify how much and how long you need to heat a building — one HDD accrues for each degree the daily average temperature falls below a 65°F base, the point most buildings need no heating or cooling. Utilities and HVAC contractors use accumulated HDD over a billing period or season to normalize energy usage across different weather, letting you compare this January's gas bill to last January's fairly. This calculator converts an average outdoor temperature and duration into total HDD, then estimates heating fuel cost using your system's efficiency and fuel price, which is the same logic behind utility 'weather-normalized billing' comparisons.",
  "formula": "HDD = max(0, base − avg daily temp) × days; estimated fuel units = HDD × building factor ÷ efficiency; cost = units × price.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=heating-degree-days",
  "inputs": [
    {
      "id": "avgTemp",
      "label": "Average outdoor temperature over period",
      "kind": "number",
      "hint": null,
      "default": 38,
      "unit": "°F",
      "min": -20,
      "max": 65
    },
    {
      "id": "days",
      "label": "Number of days",
      "kind": "number",
      "hint": null,
      "default": 30,
      "unit": null,
      "min": 1,
      "max": 365
    },
    {
      "id": "base",
      "label": "Base temperature",
      "kind": "number",
      "hint": null,
      "default": 65,
      "unit": "°F",
      "min": 55,
      "max": 70
    },
    {
      "id": "buildingFactor",
      "label": "Fuel units per HDD (from past bill)",
      "kind": "number",
      "hint": null,
      "default": 0.9,
      "unit": null,
      "min": 0.01,
      "max": null
    },
    {
      "id": "efficiency",
      "label": "System efficiency (AFUE)",
      "kind": "number",
      "hint": null,
      "default": 92,
      "unit": "%",
      "min": 50,
      "max": 100
    },
    {
      "id": "price",
      "label": "Fuel price per unit (therm/gallon/kWh)",
      "kind": "number",
      "hint": null,
      "default": 1.35,
      "unit": "$",
      "min": 0,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "hdd",
      "label": "Total heating degree days",
      "format": "number",
      "hint": null,
      "primary": true
    },
    {
      "id": "units",
      "label": "Estimated fuel units needed",
      "format": "number",
      "hint": null,
      "primary": false
    },
    {
      "id": "cost",
      "label": "Estimated heating cost",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "perDay",
      "label": "Average HDD per day",
      "format": "number",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Average outdoor temperature over period: 38 °F",
      "Number of days: 30",
      "Base temperature: 65 °F",
      "Fuel units per HDD (from past bill): 0.9",
      "System efficiency (AFUE): 92 %",
      "Fuel price per unit (therm/gallon/kWh): 1.35 $"
    ],
    "outputs": [
      "Total heating degree days: 810",
      "Estimated fuel units needed: 792.4",
      "Estimated heating cost: $1,069.73",
      "Average HDD per day: 27"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter average outdoor temperature over period (°F).",
      "Enter number of days.",
      "Enter base temperature (°F).",
      "Enter fuel units per hdd (from past bill).",
      "Enter system efficiency (afue) (%).",
      "Enter fuel price per unit (therm/gallon/kwh) ($).",
      "Read your total heating degree days on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "avgTemp": 23,
        "days": 18,
        "base": 55,
        "buildingFactor": 0.54,
        "efficiency": 55,
        "price": 0.81
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "avgTemp": 38,
        "days": 30,
        "base": 65,
        "buildingFactor": 0.9,
        "efficiency": 92,
        "price": 1.35
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "avgTemp": 61,
        "days": 48,
        "base": 70,
        "buildingFactor": 1.4400000000000002,
        "efficiency": 100,
        "price": 2.16
      }
    }
  ],
  "limitations": [
    "Estimates assume standard, average conditions — local rules, pricing, and materials vary.",
    "Results are rounded for readability; add a buffer before ordering, booking, or committing.",
    "Double-check anything with a real cost attached against a local quote."
  ],
  "faq": [
    {
      "q": "Why is 65°F the standard base temperature?",
      "a": "It reflects a historical assumption that indoor comfort sits around 70°F, with roughly 5°F of 'free heat' coming from occupants, lighting, and appliances, so a building needs no active heating until outdoor temps drop below 65°F. Utilities still use it because decades of billing data are built on that base."
    },
    {
      "q": "Where do I find my building factor?",
      "a": "Divide fuel used (therms, gallons, or kWh) on a past bill by the HDD accumulated over that exact billing period, which you can get from NOAA climate data or your utility's usage history — this back-calculates your specific building's efficiency and size into one number."
    },
    {
      "q": "How is this different from cooling degree days?",
      "a": "Cooling degree days (CDD) flip the comparison — they accumulate when average temperature exceeds the base, measuring air conditioning demand instead of heating demand. Together HDD and CDD are used to size HVAC systems and forecast seasonal energy budgets."
    },
    {
      "q": "Can I use a different base temperature?",
      "a": "Yes, well-insulated modern homes sometimes use 60-62°F bases since they need less outdoor-driven heating, while older or larger buildings may use 65-68°F; check what base your utility uses for consistent comparisons."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/cooling-degree-days",
    "https://www.revenuelab.fyi/toolbox/frost-date-growing-window"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Heating Degree Days Calculator (https://www.revenuelab.fyi/toolbox/heating-degree-days)"
}