Solar Panel Shading Loss Calculator

JJ Ben-Joseph headshot JJ Ben-Joseph

Use this calculator to estimate how much a nearby obstruction (tree, chimney, parapet, adjacent building) could reduce a solar array’s daily energy production. It converts a simple shadow-geometry snapshot (one sun altitude angle) into an estimated shaded fraction of the panel face and then applies that fraction to your unshaded daily energy based on system size and average sun hours.

What you’ll get: an estimated shaded fraction of the panel length (0–100%), daily kWh lost, and daily kWh remaining for the chosen “critical” sun altitude (often a winter or problem time-of-day angle).

Model overview (what the calculator is doing)

This is a geometry-first estimate. It treats shading as a straight-edged shadow cast by a single obstruction at a single sun altitude angle. The workflow is:

  1. Compute the obstruction’s horizontal shadow reach on the ground/roof plane from sun altitude.
  2. Account for the obstruction’s horizontal distance to the panel.
  3. Project any remaining shadow onto the tilted panel surface.
  4. Convert that projected shadow length into a fraction of the panel length (clamped between 0 and 1).
  5. Apply that fraction to your unshaded daily energy estimate.

Definitions of inputs and variables

Formulas

1) Unshaded daily energy

If your system size is S (kW) and average sun hours are HS (h/day), the unshaded daily energy is:

Eunshaded = S × HS (kWh/day)

2) Horizontal shadow length from sun altitude

For an obstruction of height H and sun altitude α, the horizontal shadow length on a horizontal plane is:

Lh = H / tan(α)

This matches the common geometric intuition: the lower the sun altitude, the longer the shadow.

3) Shadow reaching the panel

If the obstruction is D meters away horizontally, only the portion of the shadow beyond that distance can fall onto the panel:

Lreach = max(0, Lh − D)

4) Projecting onto a tilted surface

To express the shadow length along the panel surface (the “along-slope” direction), a simple projection is:

Lpanel = Lreach / cos(β)

5) Shaded fraction

Compare the shadow length along the panel surface with the panel length along slope P:

s = min(1, Lpanel / P)

6) Estimated daily energy lost and remaining

This calculator assumes energy loss scales linearly with the shaded fraction:

Elost = Eunshaded × s

Eremaining = Eunshaded × (1 − s)

MathML (same relationships)

Eunshaded = S×HS Lh = Htan(α) Lreach = max(0,LhD) Lpanel = Lreachcos(β) s = min(1,LpanelP)

Interpreting the results

If your value is near 0, shading at that sun altitude is unlikely. If it’s near 1, you should strongly consider mitigation (moving modules, trimming vegetation, using optimizers/microinverters, or changing layout).

Worked example

Scenario: A 6 kW array, 5.0 average sun hours/day, panel tilt 30°, panel length along slope 1.7 m. A parapet is 1.5 m tall and 2.5 m horizontally away. Evaluate a winter critical sun altitude of 20°.

  1. Unshaded daily energy
    Eunshaded = 6 × 5.0 = 30 kWh/day
  2. Horizontal shadow length
    Lh = H / tan(α) = 1.5 / tan(20°) ≈ 1.5 / 0.3640 ≈ 4.12 m
  3. Shadow reaching the panel
    Lreach = max(0, 4.12 − 2.5) = 1.62 m
  4. Project onto the tilted panel
    Lpanel = 1.62 / cos(30°) ≈ 1.62 / 0.866 ≈ 1.87 m
  5. Shaded fraction
    s = min(1, 1.87 / 1.7) = 1.0
    Interpretation: at 20° sun altitude, the panel could be fully shaded by this obstruction in this simplified snapshot.
  6. Energy impact
    Elost = 30 × 1.0 = 30 kWh/day
    Eremaining = 30 × (1 − 1.0) = 0 kWh/day

Reality check: in the real world, full shading typically occurs only for certain hours, not all day. That’s why the “critical sun altitude” should be chosen intentionally (e.g., the lowest winter sun at your peak production window, or the exact time you observed shading). For an all-day estimate, you’d need time-of-day and seasonal integration.

Comparison table: how sun altitude changes shadow length

The table below shows how quickly shadows grow as sun altitude drops. It assumes an obstruction height H = 2 m. (These are horizontal shadow lengths before subtracting distance to the panel.)

Sun altitude (α) tan(α) Horizontal shadow length Lh = H/tan(α) Rule-of-thumb implication
15° 0.268 ≈ 7.46 m Very long winter/early/late-day shadows; obstructions far away can still matter.
20° 0.364 ≈ 5.49 m Long shadows; common for winter mid-day in many latitudes.
30° 0.577 ≈ 3.46 m Moderate shadows; many obstructions need to be relatively close to shade panels.
45° 1.000 ≈ 2.00 m Shorter shadows; shading risk decreases quickly as altitude increases.
60° 1.732 ≈ 1.15 m Summer/high sun; nearby obstructions are less likely to shade.

Assumptions & limitations (important)

Provide site details to compute shade impact.

Embed this calculator

Copy and paste the HTML below to add the Solar Panel Shading Loss Calculator - Estimate Energy Reduction to your website.