scroll · 2026-06-02 · ~5 min · live data

Riding the pothole

The city's 311 record contains roughly 80,310 reports of potholes, street defects, broken signals, and dark streetlights since 2024-01-01. Most maps show where the street is broken. We wanted to show what the bus rider sees from the platform — and which SEPTA stops sit in the middle of it.

Every bright patch on the map is a cluster of calls — potholes, dark streetlights, broken signals, crumbling pavement. The hotter the block, the heavier the maintenance backlog the street is carrying. Philadelphia's 80,310 reports since 2024-01-01 are not evenly distributed across the city.

SEPTA runs about 10,063 bus and trolley stops across Philadelphia, plus 91 Regional Rail and subway stations. Next: those stops appear on the map, sized by how many defect reports sit within walking distance.

The city's stops don't sit evenly across this heat. The cobalt dots mark the stops with the most nearby 311 reports — sized so the worst-hit stops read larger. A handful bear an outsized share of the rider-facing wear.

About 8,014 stops accumulated three or more defect reports in walking distance. The bars rank the heaviest dozen.

The ranking is geographically clustered — heavy-traffic corridors carry both heavy ridership and heavy maintenance load.

Next, the map zooms to 16th St & Walnut St — the single SEPTA stop with the most rider-eye street wear in walking distance. Accent shifts to brick.

This is the view a rider sees standing at 16th St & Walnut St: roughly 274 reports of broken pavement, broken signals, or dark streetlights filed within a 300-meter walk since 2024-01-01. SEPTA does not own the street. The City Streets Department does. But the rider waits at SEPTA's stop and looks at the street the City is responsible for keeping.

Reframing 311 from "where defects are" to "what the rider sees" doesn't change the data — it changes where attention lands. Maintenance budgets that score corridors purely by car traffic miss the rider's experience of the same corridor. The Streets Department's queue and the SEPTA rider's wait are the same wait.

map loads on scroll…
View underlying data

Top 20 SEPTA stops by 311 defect reports within ~300m (3×3 cells on a 100m grid). Since 2024-01-01.

RankStopModeReportsLat, Lon
116th St & Walnut Stbus27439.9496, -75.1675
2Walnut St & 16th Stbus27439.9498, -75.1674
316th St & Chestnut Stbus24239.9511, -75.1672
4Chestnut St & 16th Stbus24239.9512, -75.1673
5Chestnut St & 15th Stbus21939.9510, -75.1657
6Walnut St & 15th Stbus21739.9496, -75.1658
716th St & Locust Stbus20939.9485, -75.1677
8Walnut St & 17th Stbus20939.9500, -75.1690
9Walnut St & 18th Stbus20939.9502, -75.1705
1017th St & Walnut Stbus20939.9501, -75.1692
11Locust St & 16th Stbus20939.9486, -75.1679
12Locust St & 13th Stbus20939.9479, -75.1625
13Spruce St & 15th Stbus19539.9472, -75.1663
14Walnut St & 13th Stbus19339.9491, -75.1620
1515th St & Ranstead Stbus19239.9518, -75.1655
1612th St & Walnut Stbus18839.9490, -75.1606
17Locust St & 15th Stbus18439.9484, -75.1664
1813th Stbus17939.9521, -75.1615
19Market St & 13th Stbus17939.9522, -75.1613
20Market St & 12th St - MBFSbus17939.9521, -75.1605

Data: Philly 311 filtered to street-defect / lighting / signal subjects. SEPTA stops from SEPTA's GTFS Public feed, filtered to a Philadelphia bbox.

Methodology: 311 defects since 2024-01-01 are snapped to a ~100m grid via ST_SnapToGrid(the_geom, 0.001). Each stop's defect score is the sum of reports in the 3×3 grid neighborhood around its snapped cell — a coarse "what's within a 300m walk" proxy, not a causal attribution. Stops with zero nearby reports are kept in the network beat for spatial context; they drop out of the ranking.