A muni-level view of housing permits, population change, and
rent burden across PA
A municipal-level companion to the vote map. The vote
map shows how legislators have voted on housing bills. This
page shows what’s actually happening on the ground in their
districts: how many permits each muni is issuing per capita, how
much population each muni has gained or lost since 2020, and how
burdened renters and owners are today.
Reading this map
Pick a metric at the top of the map. The choropleth
re-colors all 2,500+ Pennsylvania municipalities to that metric.
Click any muni for the full per-muni stat sheet:
population, permits, median home value, rent / owner burden, and
(where available) population change since 2020.
County lines toggle on the top-left helps orient
you in less familiar regions.
About the data
Permits per 1k residents / year (2020-2024) — Census
Building Permits Survey (BPS) annual files, plus parcel-level
OpenDataPhilly + WPRDC permits for Philadelphia and Pittsburgh. The
muni-level rate shown here is the city-wide aggregate; the
legislative-district map slices Philadelphia and Pittsburgh further
using parcel coordinates.
Population change 2020 → 2024 — Census Population
Estimates Program (PEP) sub-county vintage 2024 estimates compared
against 2020 Decennial counts. Where the PEP estimate is missing
(very small munis can be suppressed) the muni shows “—.”
Median home value and rent-burdened %
— ACS 2023 5-year estimates (B25077 and B25070
respectively). For the per-municipality choropleth above we
use the muni-level ACS pull; for the per-district snapshot
panel we re-aggregate the same tables at the census-tract
level (~3,400 PA tracts, ~380 of them in Philadelphia) so
each district inside a big city gets its own number rather
than the city-wide average. ACS suppresses estimates for very
small populations, which surface as “—.”
Per-district popchange limitation —
Census PEP only publishes population estimates down to the
municipality. For districts entirely inside a single muni
(e.g. every Philadelphia House district), the snapshot
popchange is the muni-wide figure. We don’t synthesize
sub-muni popchange because the source data simply isn’t
published at that level.