ImmoDash

Where demand outruns the housing stock

Where more people want to live than there are flats, rents come under pressure. We measure both sides in every district.

Scroll

Empty flats against population growth

Supply is the in the 2022 census.[10] Housing research usually puts the vacancy a market needs for normal moving at 2 to 3%.[8] Demand is population change over the last five years. The combines the two, so a district with few empty flats and a growing population scores high. German rent law uses the same two signals, low vacancy and population growth without enough new building, to define a tight housing market.[9]

400 districts: empty flats versus population growth

Each bubble is a district, sized by population. Dashed lines mark the German middle on each axis.

TightBalancedSlackLabelled cities

The chart always shows all 400 districts. Search for one to highlight it and see where it sits.

Source: Zensus 2022 (vacancy); Statistische Ämter, population 2018 to 2023.
How to read this chart

Top left: few empty flats and a growing population. That is where competition for flats is fiercest. Bottom right: many empty flats and a shrinking population, which keeps rents low. The horizontal axis is stretched at the low end because the difference between 1% and 2% empty matters far more than between 8% and 9%.

Use the search box to find your district on the chart.

The ten tightest and ten slackest districts

Tightest

Highest supply-demand index

  1. 1Dahme-Spreewald2.3% empty, +6.8% pop.2.80
  2. 2Potsdam1.3% empty, +5.4% pop.2.68
  3. 3Neu-Ulm1.3% empty, +4.7% pop.2.32
  4. 4Cloppenburg2.1% empty, +5.6% pop.2.32
  5. 5Unterallgäu1.9% empty, +5.4% pop.2.29
  6. 6Landshut1.6% empty, +5.0% pop.2.28
  7. 7Pfaffenhofen a.d.Ilm1.3% empty, +4.6% pop.2.27
  8. 8Leipzig2.2% empty, +5.7% pop.2.27
  9. 9Mühldorf a.Inn1.5% empty, +4.7% pop.2.22
  10. 10Kaufbeuren2.2% empty, +5.5% pop.2.19
Source: ImmoDash, from Zensus 2022 and population statistics.

Slackest

Lowest supply-demand index (shown as distance below zero)

  1. 1Görlitz8.9% empty, -2.6% pop.6.14
  2. 2Zwickau8.9% empty, -2.6% pop.6.14
  3. 3Erzgebirgskreis8.3% empty, -3.3% pop.6.13
  4. 4Altmarkkreis Salzwedel8.8% empty, -2.3% pop.5.93
  5. 5Salzlandkreis8.1% empty, -3.1% pop.5.92
  6. 6Prignitz9.6% empty, -1.2% pop.5.85
  7. 7Altenburger Land9.0% empty, -1.8% pop.5.79
  8. 8Burgenlandkreis8.5% empty, -2.2% pop.5.66
  9. 9Vogtlandkreis7.9% empty, -2.8% pop.5.62
  10. 10Mansfeld-Südharz6.8% empty, -4.1% pop.5.62
Source: ImmoDash, from Zensus 2022 and population statistics.

Does the index match what renters experience?

The index uses census data, which is a snapshot. To check it, we compare it with live listing data for the 37 cities: how many a flat stays online and how many are gone within a week. The correlation is 0.75, so where the census says a market is tight, flats really do go faster.

CityMarketEmpty flatsPopulation, 5 yDays onlineIndex
Potsdamtight1.3%+5.4%222.68
Leipzigtight2.2%+5.7%312.27
Hamburgtight1.0%+3.6%231.91
Berlintight1.3%+3.9%261.88
Munichtight1.4%+3.3%221.51
Münstertight1.1%+2.5%211.32
Bonntight1.6%+3.0%231.25
Frankfurttight1.9%+3.3%251.21
Bocholttight1.5%+2.7%301.18
Rhein-Erft districttight1.2%+2.3%251.15
Mannheimbalanced1.8%+2.4%280.84
Augsburgbalanced2.1%+2.8%240.82
Mönchengladbachbalanced2.2%+2.6%310.69
Düsseldorfbalanced1.6%+1.9%260.69
Wiesbadenbalanced2.0%+2.1%270.53
Nurembergbalanced1.6%+1.5%310.47
Aachenbalanced1.7%+1.6%260.45
Bielefeldbalanced1.7%+1.6%300.44
Hanoverbalanced2.2%+1.8%270.25
Lübeckbalanced1.5%+0.8%240.19
Mettmann districtbalanced1.6%+0.9%290.17
Dresdenbalanced2.7%+2.2%270.14
Dortmundbalanced2.1%+1.3%330.06
Brunswickbalanced2.3%+1.5%290.05
Hammbalanced1.8%+0.9%320.05
Colognebalanced1.3%+0.3%220.02
Wuppertalbalanced2.3%+1.4%35-0.02
Bremenbalanced2.0%+0.8%26-0.14
Kielbalanced1.6%+0.2%23-0.20
Duisburgbalanced2.4%+0.9%35-0.32
Erfurtbalanced2.5%+0.9%29-0.38
Stuttgartbalanced1.8%-0.1%29-0.48
Bochumbalanced2.2%+0.3%31-0.54
Gelsenkirchenbalanced3.4%+1.5%41-0.62
Essenbalanced2.6%+0.4%32-0.71
Karlsruhebalanced1.5%-1.0%22-0.78
Chemnitzslack9.4%+1.0%61-4.55