The lots I run past
27 October 2026
My running route takes me past empty lots all the time. Car parks, fenced gravel, a gap in a row of houses with a bare firewall on each side.
At the same time the city talks about apartments every day. The Left won the Berlin election and goes into coalition talks wanting to move hundreds of thousands of apartments from large landlords into public hands, through a public institution that borrows the money and buys them, as ZDF reports. Whatever you think of that, buying an apartment changes who owns it. It does not add one.
So on a run I asked a simpler question. How much empty land is there in Berlin, and how many apartments could go on it? I could not find an answer I trusted, so on Tuesday I built one. It is live at bauluecken.supercharged.sh.
Every parcel in the city
Berlin publishes almost everything you need as open data. The land register lists every parcel and every building footprint. There are aerial photos from 2024, a 3D model of every roof, and maps of parks, monuments, flood zones and noise.
The search is a funnel. Berlin has 403,526 parcels. 143,792 of them are less than 10% built over. Take out everything that touches a park, playground, cemetery, allotment, school, water, railway or street, and 68,222 are left. Merge neighbouring parcels into one site and you get 10,401 sites.
I started inside the S-Bahn Ring, because that is where I run. The Ring has an official outline by accident: Berlin’s low-emission zone is exactly the area inside it. 42,134 parcels, 859 sites.
The first pass missed the biggest one
Luisenblock Ost, between Schiffbauerdamm and the Stadtbahn viaduct, is about 3.3 hectares of gravel and parking. My first pass did not find it. The land register splits it into 19 parcels, and each one alone looked like a strip of street. Now neighbouring empty parcels get merged before anything judges their size or shape.
The register is right about parcels and wrong about places.
Looking at every site
The register also lags. A new building can take years to show up, and a parcel listed as empty may be a courtyard garden. So every site gets checked against the 2024 aerial photo.
Inside the Ring I did that by eye. For the rest of the city, 9,538 sites, Claude Haiku looked at each photo and sorted it the same way: vacant, parking, construction site, already built, green space, open space between slab blocks, public space or other. Where both exist, my label wins.
The hand labels are a warning for anyone who quotes a single number. Of the 1,036 photos I labelled, 128 were actually vacant and 191 were car parks. 252 were green space the register does not know about, 91 were already built and 47 were construction sites. The register alone would have counted all of them as empty.
Rooftops and supermarkets
Empty land is one source. Two more came out of the same data.
Roofs: a residential building lower than the building it shares a wall with can be raised to its neighbour’s eaves line, at most two floors. Free-standing flat roofs of three to six floors get one more. Roof shapes come from the 3D city model, so a mansard roof already counts as a floor.
Supermarkets: single-storey stores from OpenStreetMap, matched to the land register, with homes on top up to the height of the street around them. The bigger estimates also build over their car parks.
How many
That depends on what you assume, so the map has three estimates and lets you change the assumptions: how much of a site a building may cover, how high it may go, how big an apartment is, and whether to leave out listed monuments, flood zones, streets louder than 65 dB and land far from S-Bahn, U-Bahn or tram.
The range runs from 42,000 to over a million homes. The middle estimate for all of Berlin, across empty sites, rooftops and supermarkets, is about 250,000.
For comparison, the Senate’s own inventory only lists sites for 50 or more homes, and a gap register by the FDP and CBRE claims room for about 162,000 homes citywide.
What it does not know
It is a rough screen, not a planning verdict. It does not know who owns a site, what the local zoning plan says, whether a roof can carry two more floors or whether the soil is contaminated. Heritage, flood zones, noise and the land-use plan are checked, but only at each site’s centre point.
An afternoon
The first files are from noon on Tuesday. The site went live a little after four. I built it with Claude Code: fetch the data in tiles, filter, merge, label, estimate, draw the map. The slow parts were not the code. The 3D roof model alone is 925 tiles, about 5.5 GB streamed. One full run died when the city’s map server reset the connection.
Baulücken is an experiment from my lab, supercharged.sh. The map is at bauluecken.supercharged.sh, and the method is under “How this was made”.