Solarific

Solar panel data for any city

How Solarific calculates solar panel angles

Every angle on this site comes from one input: your latitude. The fixed tilt uses a quadratic calibrated against PVGIS v5.2 optimal-slope data for 52 cities, and lands within 3.4° RMSE of it. The tilt-equals-latitude rule you have probably read scores 7.3° on the same cities. Monthly and daily angles come from the sun's declination. Here is the whole method, including where it stops working.

The fixed-tilt formula

For absolute latitude lat in degrees, the most efficient year-round tilt is:

tilt = (-0.007 × lat2) + (1.127 × lat) + 3.27

That gives 27° at latitude 25, 37° at latitude 40, and 42° at latitude 50. Southern-hemisphere cities reuse the same curve on absolute latitude and face north instead of south.

What it was fitted against

PVGIS v5.2, queried with optimalangles=1, which returns the slope that maximises annual yield at a location. The sample is up to four of the most populous cities per 5° latitude band, filtered to 52 northern-hemisphere points spanning 1° to 69°. The coefficients are a least-squares fit over those points.

Southern-hemisphere responses were excluded, because PVGIS reports optimal slope as 0 or -1 there. That is an artefact of its azimuth convention rather than a real optimum. A few near-equator responses of 89° and 90° were excluded as solver artefacts for the same reason.

How accurate it is

Accuracy of the current formula against the rules it replaced, measured on 52 PVGIS reference cities
Method RMSE Max error
Tilt equals latitude (the common rule)7.3°14.1°
This quadratic3.4°9.5°

The old rule's error is not spread evenly. It is close in the southern US and runs about 10° steep above latitude 50, which is every city in the UK, plus Finland, Norway, the Netherlands, Belgium, Poland and most of Russia. It put London at 47.9° where PVGIS says 40°.

A quadratic was chosen over piecewise-linear branches for two reasons. The optimum genuinely flattens relative to latitude as you go north, because winter sun is low and diffuse light dominates. And a single smooth expression cannot reintroduce a discontinuity: the previous piecewise version disagreed with itself by 5° at exactly latitude 50, so two towns either side of that line got different answers for no physical reason. A two-knot piecewise fit scored marginally better on RMSE (3.15) but produced an unphysical plateau between 40° and 50°. It was fitting the sample, not the sky.

Monthly and daily angles

These use the subsolar-point declination model rather than the fitted curve. For a given day of the year:

declination = 23.45 × sin((360 / 365) × (284 + day)), then tilt = |latitude - declination|, and the sun's height at solar noon is 90° - tilt.

Subtracting the declination handles both hemispheres on its own, because southern latitudes are negative and the seasons invert with them. The sign of the result is the direction to face: negative means the midday sun sits north of overhead, which is what happens inside the tropics around midsummer, and the panel follows it.

Monthly rows are evaluated at a fixed mid-month day. The daily figure on each city page uses today's day of the year, so it refines that month's row rather than contradicting it.

Where this stops working

Latitude cannot see local climate, and that is the entire remaining error. Paris (48.9°N, maritime) wants 38°. Harbin (45.8°N, dry continental) wants 47°. Three degrees of latitude apart, nine degrees apart in the answer. No latitude-only function can express both, which is why 3° RMSE is roughly the floor for this approach rather than something a better curve would fix.

So treat these numbers as a good starting point, not a site survey. They also assume an unshaded panel on an open horizon, and they optimise annual yield rather than winter yield or a peak-rate window. If your roof is shaded in the morning, if you are off-grid and winter is the binding constraint, or if your tariff pays more at 5pm than at noon, your best angle differs from the one here.

Closing the climate gap needs per-location irradiance data rather than a better formula. The tractable version is precomputing PVGIS optimal slope on a coarse grid and interpolating; the cities on this site occupy 3,070 distinct 2-degree cells.

Reusing this

All the data is CC0 (public domain). Download the whole dataset as CSV or JSON, or read any city's figures off its own page. The calibration inputs and the fitting script are in the repository under tools/tilt-calibration/.

Related

See the best solar panel angle by latitude for the reference table, RV solar panel angles for what tilting gains over lying flat, and how solar power works for the system around the panel.