How Long Does 311 Take in Your Neighborhood?
This is the interactive companion to groundbreaking analysis of 311 wait times, the Geography of Waiting — the same underlying data, sliced along three axes you control. Pick a ward or ZIP, an agency or issue, and the table below tells you how long it takes the city to close them.
| Slowest rank ▲ | Ward | Median wait (days) | Tickets |
|---|---|---|---|
| 1 | 55 | 14.0 | 6,877 |
| 2 | 40 | 13.3 | 13,732 |
| 3 | 62 | 12.3 | 7,266 |
| 4 | 23 | 11.8 | 7,914 |
| 5 | 56 | 11.0 | 7,581 |
| 6 | 41 | 10.2 | 6,845 |
| 7 | 35 | 9.1 | 7,420 |
| 8 | 45 | 9.0 | 10,406 |
| 9 | 33 | 8.3 | 5,734 |
| 10 | 51 | 8.1 | 7,750 |
| 11 | 58 | 8.1 | 8,874 |
| 12 | 64 | 7.9 | 4,859 |
| 13 | 63 | 7.8 | 5,238 |
| 14 | 49 | 7.8 | 7,350 |
| 15 | 25 | 7.7 | 8,699 |
| 16 | 11 | 7.5 | 5,951 |
| 17 | 28 | 7.5 | 4,463 |
| 18 | 42 | 7.1 | 7,984 |
| 19 | 65 | 7.0 | 5,382 |
| 20 | 43 | 7.0 | 6,178 |
| 21 | 24 | 6.9 | 4,686 |
| 22 | 44 | 6.9 | 5,998 |
| 23 | 61 | 6.9 | 6,670 |
| 24 | 53 | 6.8 | 4,931 |
| 25 | 12 | 6.8 | 8,508 |
| 26 | 17 | 6.7 | 8,730 |
| 27 | 47 | 6.7 | 3,850 |
| 28 | 6 | 6.7 | 6,063 |
| 29 | 54 | 6.6 | 3,665 |
| 30 | 3 | 6.5 | 7,339 |
| 31 | 22 | 6.2 | 6,916 |
| 32 | 59 | 6.2 | 6,400 |
| 33 | 4 | 6.1 | 7,373 |
| 34 | 60 | 6.0 | 7,018 |
| 35 | 7 | 6.0 | 6,637 |
| 36 | 16 | 6.0 | 4,249 |
| 37 | 48 | 5.9 | 5,599 |
| 38 | 13 | 5.9 | 8,378 |
| 39 | 32 | 5.8 | 7,293 |
| 40 | 10 | 5.7 | 7,599 |
| 41 | 34 | 5.7 | 14,267 |
| 42 | 38 | 5.7 | 5,806 |
| 43 | 39 | 5.6 | 14,496 |
| 44 | 26 | 5.6 | 6,670 |
| 45 | 46 | 5.5 | 8,222 |
| 46 | 27 | 5.4 | 6,677 |
| 47 | 57 | 5.3 | 4,909 |
| 48 | 52 | 5.2 | 8,240 |
| 49 | 29 | 5.0 | 6,230 |
| 50 | 21 | 4.9 | 13,104 |
| 51 | 66 | 4.8 | 7,800 |
| 52 | 9 | 4.8 | 3,923 |
| 53 | 36 | 4.7 | 14,714 |
| 54 | 19 | 4.7 | 5,095 |
| 55 | 37 | 4.7 | 5,566 |
| 56 | 20 | 4.7 | 2,595 |
| 57 | 1 | 4.6 | 8,501 |
| 58 | 15 | 4.5 | 6,989 |
| 59 | 14 | 4.5 | 3,182 |
| 60 | 50 | 4.3 | 6,237 |
| 61 | 18 | 4.1 | 12,448 |
| 62 | 2 | 4.0 | 11,351 |
| 63 | 30 | 4.0 | 8,864 |
| 64 | 31 | 3.9 | 10,445 |
| 65 | 5 | 3.9 | 22,416 |
| 66 | 8 | 3.4 | 13,474 |
Notes, Sources, and Methodology
The 311 data is the same OpenDataPhilly public_cases_fc table that drives the rest of my 311 series — of roughly 484,000 requests from 2024 onward that had closed, been geocoded, and fell inside Philadelphia. The full 2024-onward cohort in the same pull is about 1.4 million; the rest are still open or have no usable location. ZIP-level median household income comes from the 2022 ACS 5-year estimates the rest of the 311 series uses; the neighborhood names are a hand-built zip-to-neighborhood list.
Methodology details. I filter to closed tickets with a wait time between 0 and 365 calendar days — closed_datetime minus requested_datetime, so the column is calendar days, not the business days the city's service notices quote. Closed-only matters: bias-corrected survival estimates put the income-based gap at 17 days rather than the headline 2.6, so dropping open tickets understates inequity — but the cache does hold roughly 78,000 open tickets, and excluding them is a choice I made rather than a property of the data. Medians are precomputed offline because medians can't be reconstructed from per-group medians, so the table is shipped as a flat cube rather than computed in the browser. Wards are assigned via point-in-polygon against the ArcGIS Hub political_wards layer. The cube was built 2026-08-19 from a cache of 311 requests filed from 2024-01-01 through 2026-08-30.
Limitations. Income and neighborhood are ZIP-only. ACS publishes median household income at the ZCTA level, but a ward isn't a Census geography — the population-weighted tract-to-ward aggregation that would attach income to a ward isn't in this build. Four ZIP codes that clear the display threshold have no income figure in the reference layer and render as a dash, University City among them. Repeated and duplicate requests are counted as separate tickets, so a resident who files the same problem twice inflates their own ZIP's count. Tickets with fewer than 10 tickets under the current filter are hidden to keep the long tail from dominating the table.