{
  "id": "solar-panel-tilt",
  "version": "199d78a3c17f",
  "status": "published",
  "name": "Solar Panel Tilt Calculator",
  "question": "What is the best solar panel tilt?",
  "summary": "Computes the best fixed tilt for solar panels from latitude, the tilt that faces the noon sun on any date from the sun’s declination, and which way the panels should face.",
  "category": "construction",
  "subcategory": "roofing",
  "url": "https://www.acalculator.org/construction/solar-panel-tilt-calculator",
  "markdown": "https://www.acalculator.org/construction/solar-panel-tilt-calculator.md",
  "kind": "function",
  "method": "δ = −23.45° × cos(360/365 × (d + 10)); tilt for the date = |latitude − δ|; year-round tilt = |latitude|; noon sun height = 90° − |latitude − δ|; no date tilt when that height is below 0.",
  "assumptions": [
    "The panels are fixed and face the equator (true south in the northern hemisphere, true north in the southern).",
    "The date tilt points the panel at the sun at solar noon; the year-round tilt is the yearly average of that tilt. Cloud, snow and shade can move the best angle a few degrees."
  ],
  "inputs": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "lat": {
        "title": "Latitude",
        "description": "Your latitude in degrees: positive north of the equator, negative south.",
        "type": "number",
        "minimum": -90,
        "maximum": 90
      },
      "date": {
        "title": "Date",
        "description": "The day to angle the panels for.",
        "type": "string",
        "format": "date"
      }
    }
  },
  "outputs": {
    "yearTilt": {
      "label": "Year-round tilt",
      "description": "The best fixed tilt for the whole year: the latitude, ignoring its sign.",
      "format": "number"
    },
    "yearFacing": {
      "label": "Face the panels",
      "description": "Toward the equator: south in the north, north in the south.",
      "format": "text"
    },
    "dayTilt": {
      "label": "Tilt for this date",
      "description": "The tilt that faces the panel square to the sun at solar noon on the date: |latitude − declination|.",
      "format": "number"
    },
    "dayFacing": {
      "label": "Face them on this date",
      "description": "Toward the noon sun on the date; none when the sun stays below the horizon at noon.",
      "format": "text"
    },
    "yearAdvice": {
      "label": "For the year",
      "description": "The year-round tilt and direction, in words.",
      "format": "text"
    },
    "dayAdvice": {
      "label": "On this date",
      "description": "The tilt and direction for the date, in words.",
      "format": "text"
    },
    "declination": {
      "label": "Sun’s declination",
      "description": "How far north (+) or south (−) of the equator the sun is overhead at noon on the date, in degrees.",
      "format": "number"
    },
    "elevation": {
      "label": "Noon sun height",
      "description": "The sun’s angle above the horizon at solar noon: 90° − |latitude − declination|; below 0, the sun does not rise at noon.",
      "format": "number"
    }
  },
  "defaultAnswer": {
    "inputs": {
      "lat": 40,
      "date": "2026-10-19"
    },
    "outputs": {
      "yearTilt": 40,
      "yearFacing": "south",
      "dayTilt": 50.959573642355146,
      "dayFacing": "south",
      "yearAdvice": "tilt them 40° facing south",
      "dayAdvice": "tilt them 51° facing south",
      "declination": -10.959573642355148,
      "elevation": 39.040426357644854
    },
    "text": "For the year, tilt them 40° facing south; on this date, tilt them 51° facing south."
  },
  "examples": [
    {
      "given": {
        "lat": 40,
        "date": "2026-06-21"
      },
      "expect": {
        "yearTilt": 40,
        "yearFacing": "south",
        "declination": 23.449131391276428,
        "dayTilt": 16.550868608723572,
        "dayFacing": "south",
        "elevation": 73.44913139127642
      },
      "source": "PVEducation (Honsberg and Bowden), Declination Angle: δ = −23.45° × cos(360/365 × (d + 10)), d the day of the year with 1 January as d = 1, https://www.pveducation.org/pvcdrom/properties-of-sunlight/declination-angle (retrieved 2026-10-18); PVEducation, Elevation Angle: the sun’s elevation at solar noon from latitude and declination, https://www.pveducation.org/pvcdrom/properties-of-sunlight/elevation-angle (retrieved 2026-10-18); PVEducation, Solar Radiation on a Tilted Surface: a fixed panel gets the most power over a year at a tilt equal to the latitude, https://www.pveducation.org/pvcdrom/properties-of-sunlight/solar-radiation-on-a-tilted-surface (retrieved 2026-10-18); hand calculation in content.mdx: δ = −23.45 × cos(360/365 × 182) = 23.449°; 40 − 23.449 = 16.55°"
    },
    {
      "given": {
        "lat": 40,
        "date": "2026-12-21"
      },
      "expect": {
        "declination": -23.45,
        "dayTilt": 63.45,
        "elevation": 26.55
      },
      "source": "PVEducation (Honsberg and Bowden), Declination Angle: δ = −23.45° × cos(360/365 × (d + 10)), d the day of the year with 1 January as d = 1, https://www.pveducation.org/pvcdrom/properties-of-sunlight/declination-angle (retrieved 2026-10-18); hand calculation in content.mdx: δ = −23.45 × cos(360°) = −23.45°; 40 + 23.45 = 63.45°; 90 − 63.45 = 26.55°, shown half up as 63.5° and 26.6°"
    },
    {
      "given": {
        "lat": -33.9,
        "date": "2026-03-20"
      },
      "expect": {
        "yearTilt": 33.9,
        "yearFacing": "north",
        "declination": -0.9080374869214962,
        "dayTilt": 32.991962513078505,
        "dayFacing": "north"
      },
      "source": "PVEducation (Honsberg and Bowden), Declination Angle: δ = −23.45° × cos(360/365 × (d + 10)), d the day of the year with 1 January as d = 1, https://www.pveducation.org/pvcdrom/properties-of-sunlight/declination-angle (retrieved 2026-10-18); hand calculation in content.mdx: δ = −23.45 × cos(360/365 × 89) = −0.908°; −33.9 + 0.908 = −32.99, so 32.99° facing north"
    },
    {
      "given": {
        "lat": 10,
        "date": "2026-06-21"
      },
      "expect": {
        "dayTilt": 13.449131391276428,
        "dayFacing": "north",
        "dayAdvice": "tilt them 13.4° facing north"
      },
      "source": "PVEducation (Honsberg and Bowden), Declination Angle: δ = −23.45° × cos(360/365 × (d + 10)), d the day of the year with 1 January as d = 1, https://www.pveducation.org/pvcdrom/properties-of-sunlight/declination-angle (retrieved 2026-10-18); hand calculation in content.mdx: 10 − 23.449 = −13.45°, so tilt 13.45° facing north"
    },
    {
      "given": {
        "lat": 70,
        "date": "2026-12-21"
      },
      "expect": {
        "elevation": -3.45,
        "dayFacing": "none (no sun at noon)",
        "dayAdvice": "the sun stays below the horizon at noon",
        "yearAdvice": "tilt them 70° facing south"
      },
      "source": "PVEducation (Honsberg and Bowden), Declination Angle: δ = −23.45° × cos(360/365 × (d + 10)), d the day of the year with 1 January as d = 1, https://www.pveducation.org/pvcdrom/properties-of-sunlight/declination-angle (retrieved 2026-10-18); hand calculation in content.mdx: 70 + 23.45 = 93.45°, so the noon sun is 90 − 93.45 = −3.45° (below the horizon)"
    }
  ],
  "sources": [
    "PVEducation (C. Honsberg and S. Bowden), Declination Angle: δ = −23.45° × cos(360/365 × (d + 10)), with d the day of the year and 1 January as d = 1. https://www.pveducation.org/pvcdrom/properties-of-sunlight/declination-angle (retrieved 2026-10-18)",
    "PVEducation (C. Honsberg and S. Bowden), Elevation Angle: the sun’s elevation at solar noon from latitude and declination. https://www.pveducation.org/pvcdrom/properties-of-sunlight/elevation-angle (retrieved 2026-10-18)",
    "PVEducation (C. Honsberg and S. Bowden), Solar Radiation on a Tilted Surface: a fixed panel gets the most power over a year when its tilt equals the latitude. https://www.pveducation.org/pvcdrom/properties-of-sunlight/solar-radiation-on-a-tilted-surface (retrieved 2026-10-18)"
  ],
  "related": [
    "solar-panel",
    "roof-pitch"
  ],
  "changelog": []
}
