Germany: solar plant site data
Solar power in Germany: yield in 193 cities
PVGIS data for 193 main cities: from 964 kWh/kWp (Flensburg) to 1,176 (Friedrichshafen), median 1,045; median optimal tilt 39°. The median is 6.2% lower than Kyiv’s (1,114).
- Median, 1 kWp
- 1,045kWh/year
- Range
- 964–1,176kWh/year
- Optimal tilt
- 39°median
- Cities
- 193with PVGIS data
Ground frame designer
A ground frame for a solar plant in Germany
Latitude 52.5°: the tilt and the row pitch follow it. Enter the snow and wind for Germany in the designer, by the national annex to the Eurocode.
- No sign-up
- Snow and wind check
- Drawings and estimate
Regions
| Region | Cities | Median, kWh/kWp | Range |
|---|---|---|---|
| Baden-Württemberg | 24 | 1,122 | 1,056–1,176 |
| Rhineland-Palatinate | 9 | 1,107 | 1,036–1,130 |
| Bavaria | 17 | 1,104 | 1,056–1,162 |
| Saarland | 1 | 1,081 | 1,081–1,081 |
| Hesse | 12 | 1,076 | 1,014–1,099 |
| Saxony-Anhalt | 3 | 1,069 | 1,063–1,078 |
| Saxony | 6 | 1,064 | 1,041–1,081 |
| Thuringia | 4 | 1,061 | 1,050–1,068 |
| Brandenburg | 4 | 1,059 | 1,041–1,074 |
| Berlin | 1 | 1,053 | 1,053–1,053 |
| Mecklenburg-Western Pomerania | 5 | 1,032 | 994–1,038 |
| North Rhine-Westphalia | 79 | 1,021 | 979–1,096 |
| Lower Saxony | 20 | 1,011 | 976–1,053 |
| Bremen | 2 | 999 | 999–999 |
| Hamburg | 1 | 990 | 990–990 |
| Schleswig-Holstein | 5 | 976 | 964–998 |
Cities by yield
| Rank | City | kWh/kWp | Tilt |
|---|---|---|---|
| 1 | Friedrichshafen | 1,176 | 38° |
| 2 | Kempten (Allgäu) | 1,162 | 39° |
| 3 | Tübingen | 1,146 | 39° |
| 4 | Villingen-Schwenningen | 1,144 | 38° |
| 5 | Munich | 1,141 | 39° |
| 6 | Ludwigsburg | 1,137 | 39° |
| 7 | Konstanz | 1,137 | 37° |
| 8 | Offenburg | 1,137 | 38° |
| 9 | Karlsruhe | 1,135 | 38° |
| 10 | Lahr | 1,133 | 38° |
| 11 | Stuttgart | 1,132 | 39° |
| 12 | Esslingen am Neckar | 1,131 | 39° |
| 13 | Speyer | 1,130 | 38° |
| 14 | Göppingen | 1,129 | 38° |
| 15 | Augsburg | 1,128 | 38° |
| 16 | Neu-Ulm | 1,127 | 37° |
| 17 | Rosenheim | 1,127 | 39° |
| 18 | Neustadt an der Weinstraße | 1,126 | 37° |
| 19 | Sindelfingen | 1,124 | 39° |
| 20 | Ingolstadt | 1,122 | 37° |
| 21 | Landshut | 1,121 | 37° |
| 22 | Freiburg im Breisgau | 1,120 | 38° |
| 23 | Waiblingen | 1,118 | 38° |
| 24 | Reutlingen | 1,116 | 38° |
| 25 | Baden-Baden | 1,115 | 38° |
| 26 | Ulm | 1,115 | 37° |
| 27 | Regensburg | 1,112 | 37° |
| 28 | Mainz | 1,109 | 38° |
| 29 | Heilbronn | 1,108 | 38° |
| 30 | Worms | 1,108 | 38° |
| 31 | Mannheim | 1,108 | 38° |
| 32 | Ludwigshafen am Rhein | 1,107 | 38° |
| 33 | Würzburg | 1,104 | 38° |
| 34 | Schwäbisch Gmünd | 1,103 | 38° |
| 35 | Passau | 1,101 | 37° |
| 36 | Bad Homburg | 1,099 | 38° |
| 37 | Düren | 1,096 | 40° |
| 37 | Rüsselsheim am Main | 1,096 | 38° |
| 39 | Fürth | 1,094 | 38° |
| 40 | Euskirchen | 1,093 | 40° |
| 41 | Wiesbaden | 1,092 | 38° |
| 41 | Aalen | 1,092 | 37° |
| 43 | Offenbach am Main | 1,090 | 38° |
| 44 | Schweinfurt | 1,090 | 38° |
| 45 | Heidenheim | 1,090 | 37° |
| 46 | Pforzheim | 1,088 | 37° |
| 47 | Frankfurt am Main | 1,082 | 38° |
| 48 | Saarbrücken | 1,081 | 37° |
| 49 | Leipzig | 1,081 | 40° |
| 50 | Görlitz | 1,080 | 40° |
| 51 | Halle (Saale) | 1,078 | 40° |
| 52 | Wetzlar | 1,077 | 38° |
| 53 | Darmstadt | 1,076 | 38° |
| 54 | Cottbus | 1,074 | 40° |
| 55 | Hanau | 1,072 | 38° |
| 56 | Kerpen | 1,072 | 40° |
| 57 | Mönchengladbach | 1,071 | 40° |
| 57 | Eschweiler | 1,071 | 40° |
| 59 | Nuremberg | 1,071 | 38° |
| 60 | Dresden | 1,071 | 40° |
| 61 | Magdeburg | 1,069 | 40° |
| 62 | Erlangen | 1,068 | 38° |
| 63 | Gera | 1,068 | 39° |
| 64 | Aschaffenburg | 1,066 | 38° |
| 64 | Weimar | 1,066 | 39° |
| 66 | Bergheim | 1,065 | 40° |
| 67 | Bamberg | 1,064 | 37° |
| 67 | Pulheim | 1,064 | 40° |
| 69 | Kaiserslautern | 1,063 | 37° |
| 69 | Dessau-Roßlau | 1,063 | 40° |
| 71 | Viersen | 1,063 | 40° |
| 72 | Frankfurt (Oder) | 1,062 | 40° |
| 73 | Willich | 1,061 | 39° |
| 74 | Giessen | 1,060 | 38° |
| 75 | Trier | 1,058 | 36° |
| 76 | Zwickau | 1,057 | 39° |
| 76 | Hürth | 1,057 | 39° |
| 76 | Frechen | 1,057 | 40° |
| 79 | Heidelberg | 1,056 | 37° |
| 80 | Jena | 1,056 | 39° |
| 80 | Erftstadt | 1,056 | 39° |
| 82 | Bayreuth | 1,056 | 37° |
| 83 | Grevenbroich | 1,056 | 39° |
| 83 | Brandenburg an der Havel | 1,056 | 40° |
| 85 | Neuwied | 1,055 | 38° |
| 86 | Aachen | 1,054 | 39° |
| 87 | Lippstadt | 1,053 | 40° |
| 88 | Wolfenbüttel | 1,053 | 39° |
| 89 | Berlin | 1,053 | 40° |
| 90 | Krefeld | 1,051 | 40° |
| 91 | Erfurt | 1,050 | 39° |
| 92 | Meerbusch | 1,048 | 40° |
| 93 | Dormagen | 1,048 | 39° |
| 94 | Neuss | 1,047 | 39° |
| 95 | Salzgitter | 1,046 | 39° |
| 96 | Fulda | 1,046 | 38° |
| 97 | Cologne | 1,045 | 39° |
| 98 | Bonn | 1,043 | 39° |
| 99 | Chemnitz | 1,042 | 39° |
| 100 | Potsdam | 1,041 | 40° |
| 101 | Moers | 1,041 | 40° |
| 102 | Plauen | 1,041 | 38° |
| 103 | Hamm | 1,040 | 40° |
| 104 | Neubrandenburg | 1,038 | 40° |
| 105 | Wesel | 1,038 | 39° |
| 106 | Unna | 1,038 | 39° |
| 107 | Marburg | 1,037 | 37° |
| 108 | Ahlen | 1,036 | 39° |
| 109 | Koblenz | 1,036 | 37° |
| 110 | Sankt Augustin | 1,035 | 39° |
| 111 | Düsseldorf | 1,034 | 39° |
| 112 | Bergkamen | 1,034 | 39° |
| 113 | Rostock | 1,033 | 40° |
| 114 | Braunschweig | 1,033 | 39° |
| 115 | Wolfsburg | 1,033 | 39° |
| 115 | Hildesheim | 1,033 | 39° |
| 117 | Greifswald | 1,032 | 40° |
| 118 | Stralsund | 1,032 | 40° |
| 119 | Lünen | 1,031 | 39° |
| 119 | Bocholt | 1,031 | 39° |
| 121 | Stolberg (Rhld.) | 1,028 | 38° |
| 122 | Castrop-Rauxel | 1,027 | 39° |
| 123 | Langenfeld | 1,027 | 39° |
| 124 | Münster | 1,025 | 39° |
| 125 | Emden | 1,024 | 40° |
| 126 | Essen | 1,024 | 39° |
| 126 | Dortmund | 1,024 | 39° |
| 128 | Cuxhaven | 1,023 | 40° |
| 129 | Gelsenkirchen | 1,022 | 39° |
| 130 | Troisdorf | 1,022 | 39° |
| 131 | Dorsten | 1,021 | 39° |
| 132 | Herne | 1,021 | 39° |
| 133 | Ratingen | 1,021 | 39° |
| 134 | Leverkusen | 1,020 | 39° |
| 135 | Garbsen | 1,020 | 40° |
| 136 | Bochum | 1,020 | 39° |
| 137 | Bottrop | 1,020 | 39° |
| 138 | Bad Salzuflen | 1,019 | 39° |
| 139 | Mülheim an der Ruhr | 1,019 | 39° |
| 140 | Recklinghausen | 1,018 | 39° |
| 141 | Dinslaken | 1,018 | 39° |
| 142 | Oberhausen | 1,018 | 39° |
| 143 | Gütersloh | 1,016 | 39° |
| 144 | Rheine | 1,016 | 39° |
| 145 | Gladbeck | 1,015 | 39° |
| 146 | Minden | 1,015 | 39° |
| 147 | Marl | 1,015 | 39° |
| 148 | Herten | 1,014 | 39° |
| 149 | Hattingen | 1,014 | 39° |
| 150 | Kassel | 1,014 | 38° |
| 151 | Hanover | 1,013 | 39° |
| 152 | Hamelin | 1,013 | 39° |
| 153 | Duisburg | 1,013 | 39° |
| 153 | Hilden | 1,013 | 39° |
| 155 | Witten | 1,012 | 39° |
| 156 | Gronau | 1,011 | 39° |
| 157 | Velbert | 1,011 | 39° |
| 158 | Herford | 1,011 | 39° |
| 159 | Schwerte | 1,010 | 39° |
| 160 | Langenhagen | 1,009 | 39° |
| 161 | Osnabrück | 1,008 | 39° |
| 162 | Nordhorn | 1,008 | 39° |
| 163 | Göttingen | 1,007 | 38° |
| 164 | Celle | 1,006 | 39° |
| 165 | Paderborn | 1,005 | 39° |
| 166 | Hagen | 1,003 | 39° |
| 166 | Delmenhorst | 1,003 | 40° |
| 168 | Bergisch Gladbach | 1,003 | 38° |
| 169 | Detmold | 1,002 | 39° |
| 170 | Menden | 1,001 | 39° |
| 171 | Bremerhaven | 999 | 40° |
| 172 | Bremen | 999 | 40° |
| 173 | Ibbenbueren | 998 | 39° |
| 174 | Lübeck | 998 | 40° |
| 175 | Schwerin | 994 | 40° |
| 176 | Wuppertal | 992 | 38° |
| 177 | Lüneburg | 991 | 39° |
| 178 | Solingen | 990 | 38° |
| 179 | Hamburg | 990 | 40° |
| 179 | Kiel | 990 | 40° |
| 181 | Lingen | 989 | 39° |
| 182 | Bielefeld | 988 | 39° |
| 183 | Gummersbach | 988 | 37° |
| 184 | Oldenburg | 988 | 40° |
| 185 | Iserlohn | 985 | 38° |
| 186 | Siegen | 983 | 37° |
| 187 | Remscheid | 982 | 38° |
| 188 | Lüdenscheid | 981 | 38° |
| 189 | Arnsberg | 979 | 38° |
| 190 | Wilhelmshaven | 976 | 40° |
| 191 | Norderstedt | 976 | 39° |
| 192 | Neumünster | 969 | 39° |
| 193 | Flensburg | 964 | 39° |
Snow and wind loads
Snow and wind loads for a site in Germany follow DIN EN 1991-1-3/NA (snow load zone, Schneelastzone) and DIN EN 1991-1-4/NA (wind zone, Windzone). Solispec computes loads by the Ukrainian DBN V.1.2-2 only, so this page shows no snow or wind values for Germany: enter the characteristic values from these documents in the designer’s «Own snow S0» and «Own wind W0» fields.
The frame calculation for such a site is preliminary: before installation it must be checked by an engineer who works to the country’s standards.
How these numbers are obtained
Yields are PVGIS 5.3 (SARAH3 database) of the EU Joint Research Centre: 1 kWp of crystalline panels on a free-standing frame, 14% losses, the tilt and azimuth with the highest yearly yield, for the city’s coordinates. The row pitch is for a table of two portrait panels at the optimal tilt, free of shade from 10:00 to 14:00 solar time on 21 December — the designer computes it the same way. Cities come from GeoNames: every one with at least 50,000 people and every regional capital. Snow and wind are not shown on these pages: they follow the national annex to the Eurocode.
Europe: Poland, Germany, Spain
Yield, tilt and row spacing for the main cities, from PVGIS.
Sources
- PVGIS © European Union, 2001–2026 — yield, tilt and azimuth, data as of 2026-10-10
- GeoNames (CC BY 4.0) — coordinates, elevation, population and divisions (changed)
- Where to take snow and wind loads from: DIN EN 1991-1-3/NA, DIN EN 1991-1-4/NA
- How these numbers are computed
Preliminary calculation: a design needs an engineer’s check.