C. U. Blandford
311 · streets

Chicago potholes over time

What the City’s own records show about pothole reports, how long they take to close, and how much patching gets done.

In 2025, Chicago’s 311 system received 20,911 distinct pothole reports and took a median of 14.9 days to close one; 71.2% of completed reports had a recorded patch, and crews recorded filling 248,541 potholes.

Data release 2026-09-26·Source snapshot 2026-09-26·Methods 0.5.1·2020 to 2026-08 on the map·2019 in the download

20,911 Pothole reports, 2025
14.9 Median days to close, 2025
71.2% Reports with a recorded patch, 2025
76.7% Reports with a recorded patch, 2024
248,541 Potholes filled, 2025

potholes_long.csv·Data release 2026-09-26

Reports measure attention; fills measure work. Neither measures pavement. No figure on this page is adjusted for winter severity.

01 Explore the map

77,274 figures

Pick a layer and a year. The map and the sorted list beside it show the same figures, so you can see where an area sits and how far apart two areas really are.

How to use the map
  • Layers: Reports is what residents and ward offices told 311. Response time is how long 311 took to close a report; its patch measures are the same closing time for the reports that have a patch record, because the patch is logged when the report closes. Filled is the per-block count crews enter. Alleys is the separate alley request type.
  • Color: five frozen classes, palest to darkest. The direction words sit at each end of the legend ramp, because darker does not always mean worse. Hatched areas are not shown — too few records for a stable figure — and the list still gives their record count.
  • The sorted list: each row carries a dot on a shared axis, so the gap between two areas is visible rather than inferred from color. Click either the map or a row; both highlight. Esc clears.
  • Years: the period buttons switch the whole view. Full years compares complete calendar years; Jan 1–Aug 31 compares the same months in every year, which is the only fair way to read 2026.
  • Wards: boundaries changed on 2023-05-15. Earlier years are drawn on today’s map for comparison, with a banner saying so and an optional overlay of the old lines.
  • Hover for the standing figures: pointing at any area on the map or in the list shows its reports, the share still open, the median days to close and the median days to a patch — whichever layer is on, because those are the questions that do not change when the color does.
  • 2019 is not on the map. It was the first full year of the current 311 system and its records are misallocated at several times the later rate. It stays in the download.
  • Keyboard: the map is one tab stop and arrow keys walk the areas in list order. The list is a listbox with type-ahead. “View as table” opens the same figures as a real table.

77 community areas · 50 wards · 77,274 published figures · 2020 to 2026-08 on the map, 2019 to 2026-08 in the download

Standing caveat

More reports per street mile is not more potholes per street mile, and a closed 311 report is not a patched pothole. Reports measure attention; fills measure work. Neither measures pavement.

Community-area table, 2025
Pothole reports, closing time, patching and fills by community area, calendar year 2025, from community_area_summary.csv, data release 2026-09-26. Reports measure attention; fills measure work. Neither measures pavement. A withheld figure gives the number of records behind it; * marks an area-year where at least 10% of fills came from entries of 150 or more potholes on one block.
No. Community area Reports Reports per street mile Median days to close Reports with a recorded patch Potholes filled per street mile
1 Rogers Park 339 9.11 7.2 withheld (n = 333) 100.93
2 West Ridge 455 6.11 7.8 withheld (n = 448) 60.18
3 Uptown 341 8.57 9.0 87.6% 89.55
4 Lincoln Square 402 8.68 5.2 77.4% 70.47
5 North Center 416 9.33 9.2 79.4% 85.29
6 Lake View 551 8.04 9.9 81.5% 68.92
7 Lincoln Park 662 10.59 9.8 75.5% 104.54
8 Near North Side 489 7.61 9.9 60.2% 43.42
9 Edison Park 147 5.43 25.0 81.6% 73.10
10 Norwood Park 512 5.42 45.8 withheld (n = 502) 75.91
11 Jefferson Park 273 5.31 56.9 withheld (n = 262) 46.97
12 Forest Glen 348 5.87 29.9 58.9% 67.27
13 North Park 291 9.47 14.0 76.3% 91.41
14 Albany Park 431 9.86 33.8 63.5% 71.75
15 Portage Park 572 6.47 36.0 76.9% 53.17
16 Irving Park 487 6.99 40.8 76.5% 66.46
17 Dunning 304 4.08 39.0 withheld (n = 295) 51.74
18 Montclare 135 6.72 42.1 61.5% 72.03
19 Belmont Cragin 496 6.11 47.9 76.5% 56.26
20 Hermosa 127 5.11 50.9 81.1% 39.98
21 Avondale 246 5.85 28.3 76.6% 71.69
22 Logan Square 531 6.29 32.6 72.4% 57.01
23 Humboldt Park 278 3.90 52.2 66.9% 26.22
24 West Town 784 7.60 27.9 78.3% 52.54
25 Austin 542 3.94 44.9 62.0% 29.45
26 West Garfield Park 129 4.21 69.7 62.5% 26.13
27 East Garfield Park 165 3.79 40.5 withheld (n = 163) 19.32
28 Near West Side 660 5.59 32.1 56.5% 43.48
29 North Lawndale 214 3.15 50.8 54.5% 21.03
30 South Lawndale 289 4.55 22.4 68.3% 46.99
31 Lower West Side 238 5.08 31.8 62.5% 46.51
32 Loop 333 9.69 5.9 51.2% 65.71
33 Near South Side 129 4.54 15.9 61.7% 62.60
34 Armour Square 93 4.60 13.0 68.8% 64.92
35 Douglas 50 1.56 19.4 54.0% 37.85*
36 Oakland 39 3.48 48.8 82.0% 58.75
37 Fuller Park 46 3.42 8.9 71.7% 54.00
38 Grand Boulevard 97 2.51 31.7 55.7% 26.37
39 Kenwood 64 3.37 16.4 68.8% 81.55
40 Washington Park 82 3.28 27.1 61.0% 63.12
41 Hyde Park 144 4.72 16.8 57.6% 72.39
42 Woodlawn 180 4.77 17.8 54.2% 70.37
43 South Shore 283 4.29 9.9 67.8% 69.55
44 Chatham 210 3.65 8.1 79.0% 76.01
45 Avalon Park 60 2.07 6.8 70.0% 33.53
46 South Chicago 217 4.11 7.8 73.3% 77.48
47 Burnside 33 4.06 6.9 72.7% 143.63*
48 Calumet Heights 138 3.61 5.9 60.9% 53.84
49 Roseland 267 2.68 6.0 70.3% 66.00
50 Pullman 35 1.50 6.7 48.6% 77.59*
51 South Deering 216 4.22 6.0 70.8% 68.54
52 East Side 174 4.07 5.1 69.5% 44.12
53 West Pullman 232 3.27 7.7 71.4% 72.49
54 Riverdale 47 2.45 11.4 63.8% 61.13*
55 Hegewisch 133 4.21 11.1 63.6% 61.63
56 Garfield Ridge 397 4.90 7.8 withheld (n = 386) 55.93
57 Archer Heights 128 4.52 6.9 84.2% 57.58
58 Brighton Park 241 4.84 12.4 74.7% 76.73
59 McKinley Park 145 5.30 12.0 76.5% 70.95
60 Bridgeport 224 5.39 14.1 70.4% 74.79
61 New City 251 3.37 16.1 73.7% 60.01
62 West Elsdon 194 7.73 11.8 71.5% 86.83
63 Gage Park 258 5.91 10.9 74.4% 72.85
64 Clearing 278 6.20 11.0 76.6% 45.64
65 West Lawn 281 6.01 11.9 76.7% 85.45
66 Chicago Lawn 364 5.30 10.0 72.0% 68.79
67 West Englewood 215 3.10 11.6 67.0% 50.97
68 Englewood 124 1.84 16.5 75.8% 43.86
69 Greater Grand Crossing 184 2.88 7.3 withheld (n = 182) 52.48
70 Ashburn 575 6.17 7.7 68.0% 101.81
71 Auburn Gresham 335 3.98 7.0 65.6% 66.20
72 Beverly 183 3.06 6.9 withheld (n = 179) 75.86
73 Washington Heights 180 2.82 5.9 63.3% 75.95
74 Mount Greenwood 260 5.90 6.0 withheld (n = 257) 89.34
75 Morgan Park 270 4.33 7.2 withheld (n = 266) 89.15
76 O'Hare 90 2.96 51.8 withheld (n = 87) 62.81
77 Edgewater 442 12.44 8.8 withheld (n = 437) 110.72
Ward table, 2025
Pothole reports, closing time, patching and fills by ward (2023 boundaries), calendar year 2025, from ward_summary.csv, data release 2026-09-26. Reports measure attention; fills measure work. Neither measures pavement. A withheld figure gives the number of records behind it; * marks an area-year where at least 10% of fills came from entries of 150 or more potholes on one block.
Ward Reports Reports per street mile Median days to close Reports with a recorded patch Potholes filled per street mile
Ward 1 438 7.31 24.0 79.7% 57.68
Ward 2 245 8.10 16.0 66.7% 56.22
Ward 3 195 2.75 20.0 60.5% 48.11
Ward 4 258 3.54 13.0 54.3% 46.24
Ward 5 334 4.87 16.4 57.5% 72.80
Ward 6 328 3.14 7.0 74.4% 54.63
Ward 7 371 4.05 7.8 72.2% 70.00
Ward 8 385 3.21 8.0 64.9% 75.09
Ward 9 376 2.73 6.9 70.7% 78.13
Ward 10 551 4.00 6.0 69.8% 56.29
Ward 11 397 5.01 14.0 70.0% 69.07
Ward 12 407 5.87 13.0 73.2% 83.08
Ward 13 566 5.88 11.9 75.4% 54.62
Ward 14 321 4.54 8.9 77.5% 68.56
Ward 15 325 5.18 12.7 75.1% 71.33
Ward 16 369 3.66 15.2 67.5% 47.04
Ward 17 313 3.25 6.0 69.5% 60.51
Ward 18 742 6.04 7.8 70.5% 105.58
Ward 19 634 4.58 6.9 withheld (n = 624) 83.74
Ward 20 280 2.95 19.9 62.7% 48.62
Ward 21 499 3.18 6.2 66.0% 69.85
Ward 22 275 4.67 15.0 withheld (n = 264) 46.12
Ward 23 478 5.74 7.3 withheld (n = 473) 69.64
Ward 24 256 3.03 67.5 54.9% 25.27
Ward 25 224 3.64 41.5 59.6% 32.70
Ward 26 286 4.80 60.4 73.4% 31.59
Ward 27 582 4.65 40.7 60.5% 29.77
Ward 28 571 5.16 36.6 60.7% 37.07
Ward 29 329 4.18 45.5 60.2% 35.63
Ward 30 519 6.81 21.6 80.1% 61.31
Ward 31 352 5.90 37.0 79.5% 52.21
Ward 32 570 8.13 28.8 67.2% 65.31
Ward 33 420 8.63 50.0 61.0% 63.87
Ward 34 227 6.65 9.7 55.3% 30.69
Ward 35 327 5.31 46.0 73.5% 64.50
Ward 36 437 6.63 42.7 77.4% 58.72
Ward 37 330 4.68 43.9 67.9% 40.90
Ward 38 428 4.27 42.5 withheld (n = 418) 44.09
Ward 39 806 7.58 24.8 69.6% 73.57
Ward 40 577 9.27 6.1 81.9% 85.69
Ward 41 711 5.56 40.4 withheld (n = 698) 79.86
Ward 42 400 9.65 6.1 55.4% 62.21
Ward 43 512 11.07 6.9 81.4% 115.45
Ward 44 223 6.32 9.7 withheld (n = 220) 52.52
Ward 45 591 5.41 56.1 withheld (n = 576) 57.93
Ward 46 244 7.21 11.8 withheld (n = 241) 77.89
Ward 47 731 11.38 6.1 82.8% 97.19
Ward 48 321 10.00 10.7 73.9% 81.36
Ward 49 323 8.92 7.0 withheld (n = 317) 102.30
Ward 50 385 6.70 7.1 withheld (n = 379) 68.95

02 Winters and reports

weather only

Pavement engineers associate potholes with wet freeze–thaw cycles, deep frost and heavy precipitation, so it is natural to ask whether a year with more reports followed a harsher winter. The first chart scores each winter from O’Hare weather records alone. The ones under it show citywide reports and response times for the year that winter ended in. The score is there to help read them; no figure on this page is adjusted for it, and over the few years available the two do not move together in any way that can be told apart from chance.

How to read these charts
  • The winter score is the plain average of four weather measures — wet freeze–thaw days, freezing degree-days, precipitation and snowfall — each compared with the 30 winters from 1991–92 to 2020–21. Zero is an average winter. The bar is the score; the four small marks are its parts. It uses no 311 or patching data.
  • A winter runs Nov 1–Apr 30 and sits above the calendar year it ends in. Some of its damage is done in November and December, before that year’s reports begin; the footnote says how much.
  • Reports and time to close cover Jan 1–Aug 31 of every year, so 2026 can sit beside the others. The second line is time to close for the reports that have a patch record — their patch date is their closing date — over full calendar years; 2026 is withheld while many of its reports are still open, and the line breaks rather than dropping to zero.
  • The small scatter puts the winter score against days to close, one point per winter. It has no trend line: seven points cannot support one.
  • 2019 and the 2018–19 winter are not shown, for the same reason 2019 is not on the map. Both stay in the download, and 2019 enters no comparison anywhere in the release.
  • Hover or tab to a year for every figure behind it. “Show the figures as a table” opens the same numbers as a real table.

7 winters, 2019–20 to 2025–26 · weather from NOAA’s O’Hare daily record · citywide 311 figures · the 2018–19 winter is in the download

03 Data & methods

Built from City of Chicago 311 service requests and the Potholes Patched dataset, linked together and aggregated to community areas and wards. Every number on the map is defined in a versioned methods document before it is computed.

Work in progress. The explanatory article and its conclusions are still to come.

What these numbers are — and what they are not

Three measures: reports (distinct pothole problems residents and ward offices tell 311 about, with repeat reports removed), response time (until 311 closes a report, and separately until a patch is recorded), and potholes filled (the per-block count crews enter on completed work). No dataset here measures how many potholes exist or the condition of any street. Reports measure attention; fills measure work. Neither measures pavement.

More reports does not mean more potholes

Weather, awareness, app use and ward-office practice all move the reporting number. A quiet area on the reports layer may be a well-paved one, or one that does not call. This is the single most common way a pothole map is misread, so the legend carries the warning rather than leaving it to a footnote.

Closing a report is not patching a pothole

A 311 closure is an administrative status. Only a linked Potholes Patched record indicates a recorded patch, and the Reports with a recorded patch metric is how often that actually happened — about 71% of completed 2025 reports. Time to a recorded patch is not a separate clock: for 99.95% of linked records the patch is logged within a minute of the 311 closure, so it is the closing time of the reports that got a patch record. Response times are estimated with a survival model, so reports still open are counted rather than dropped and recent years do not look artificially fast. That is also why every time on this page is a median, never an average: a mean would have to invent a closing date for every report that has not closed yet. The hover figures show the median days to close and, where the year has settled, the median days to a recorded patch.

Fill counts are crew-entered

Potholes filled is the number a crew enters for a block when it finishes. One report can lead to patching a whole block, so fills routinely exceed reports — about 249,000 fills against 21,000 reports in 2025. Some entries list 150 or more potholes on one block; they are kept as recorded, and an area-year where such entries make up 10% or more of the total is flagged in its popup.

Suppression and class breaks

A figure is withheld where fewer than 30 records sit behind it (100 for a 90th percentile), and the record count is published anyway so you can see how thin the cell was. For rates, suppression is based on the expected count for an area of that size rather than the observed one, so genuinely quiet areas are not hidden. The five color classes are quantile breaks cut from 2020–2025 and frozen at the methods version, so adding a year does not recolor earlier ones.

Wards, the 2023 remap, and alderpersons

Ward boundaries changed on 2023-05-15. Earlier years are drawn on today’s ward map so an area can be followed over time; the published ward_legacy_mix table records which old wards each current ward is built from. Nothing here grades an alderperson. Ward offices file requests; CDOT fills potholes. A pre-2023 figure on a current ward describes an area that different alderpersons represented, and no alderperson name appears anywhere in the release.

Geography, roads and coverage

Records are placed by point-in-polygon on their own coordinates, not on the ward or community-area field 311 stored at creation time. Per-mile rates use city centerline mileage excluding expressways, the Skyway and ramps, with boundary segments split between the areas that share them. Lake Shore Drive is the exception: enough fills are recorded on it that it stays in both the counts and the mileage. Alleys have no published mileage anywhere in city data, so the alley layer offers counts and response times only, and it is the sparsest view here — a fifth to three in ten community areas are withheld in a full year, and a quarter to a half in a year-to-date window, because alley reports are too few per area for a stable figure. Records that cannot be placed go to an unassigned bucket that never appears on the map.

Why 2019 is excluded from the map

2019 was the first full year of the current 311 system, and its records are misallocated at several times the rate of any later year. 2.09% of 2019 reports — 891 of 42,535 — could not be placed in a community area at all, against 0.37% to 0.78% in every later full year, and 46.8% of its requests carry a duplicate flag, the highest share in the series. Rather than show a year whose geography is that much less reliable beside years where it is solid, the map starts at 2020. The 2019 rows are still published in the downloadable data, flagged TRANSITION_2019, because leaving a year off a chart is not a reason to withhold it from the record. They enter nothing else: no pooled period, year-over-year change, color class or diagnostic uses 2019. Treat it as a weak baseline rather than a comparable year.

The winter score is context, not a correction

The winter harshness index is built only from NOAA’s daily weather record at O’Hare, never from 311 or patching data, and its four parts carry equal weights that were fixed before it was set beside any pothole figure. It is never used to adjust, normalize or predict a number on this page, and a harsh winter next to a high report count does not show that one caused the other. A rank correlation between the score and citywide reports is published in the validation report as a check on the index, not as a finding. Over the years available it cannot be told apart from zero, with or without 2019 (the figures are under Validation), and a handful of years could not establish an association either way. Snow readings are missing on some days in five of the thirty reference winters and count as zero, which nudges the published snowfall scores slightly high. The rule for every part of it is in the methods document, §11.

2026 is not over

The year-to-date mode compares Jan 1–Aug 31 in every year and observes response times as of the same date each year, which is the only fair way to put 2026 beside 2025. Choosing 2026 on the full-year timeline switches to that comparison rather than drawing a partial year as if it were complete.

Validation

Citywide totals are reconciled against the portal’s own aggregates, area figures must sum back to the city total, every suppression rule is re-derived from the published counts, and two builds from the same snapshot must match byte for byte. A check that fails is published as failed rather than loosened.

Of the 15 build-blocking checks the methods define (V1–V15), 13 pass and 2 fail and are published rather than loosened. V3 caps geography loss at 1.5% of each count in each year; 6 count-years exceed it: crew-logged records in 2021, 2022 and 2026, reports in 2019, staff-observed records in 2019 and reports including duplicates in 2019 (worst: crew-logged records in 2021, 2.16% on wards). V7b asks the survival-curve median to sit within 0.5 day of the median of closed reports alone where under 0.5% of reports are open; it misses in 12 of 2,398 cohorts, where counting the one or two open reports moves the median one report along, across a gap of more than half a day. An exact check (V7c) confirms the estimator in all 2,398 cohorts, those 12 included. 5 warning checks are open: V3w, geography loss between 1% and the 1.5% cap; W3, 56 area-years where crew entries of 150+ potholes make up 10% or more of fills; W4, 125 area-years above three times their own median, mostly alley closing times (57), street closing times (33) and patch times (25); W6, a race group too thin to stand alone, merged into “no majority” (majority-Asian tracts); W9, the Midway cross-check of the O’Hare winter score (ρ = 0.75 against a 0.85 target). 2 diagnostics miss their targets: D6, where 93.69% of reports lie within 100 ft of a street centerline against a 97% target (the rest count as unsnapped); D9, where the 311 ward field disagrees with the coordinates for 4.18% of pre-remap reports against a 2% trigger (placement never uses that field; the cause is not yet investigated). The winter score’s rank correlation with citywide reports is ρ = 0.2 over 2020–2025 (n = 6) and 0.5 with 2019 (n = 7); neither is distinguishable from zero (exact p = 0.71 and 0.27). Every result is in qa_report.json.

What changed on 2026-09-26

The release is built from a new snapshot of the City’s records, taken 2026-09-26 and holding records through 2026-09-25, under methods 0.5.1. Every full-year figure for 2019 to 2022 and for 2025 is unchanged, and so are the community-area and ward tables. A few for 2023 and 2024, and for the multi-year windows that include them, moved where reports still open at the last snapshot have since closed. The year-to-date figures moved in every year: that view observes response times as of the snapshot’s day in each year, now Sep 25 rather than Sep 20, and the City’s records for 2026 changed between the two snapshots. One validation rule changed. The check that citywide totals match the City portal (V1c) now compares the snapshot with the portal’s counts recorded when it was pulled, not with the live portal, so rebuilding a snapshot gives the same result on any later day; how far the live portal has moved since the pull is a new warning, V1e. On the new snapshot V3 fails on the same six count-years as before and V7b in 12 cohorts, one more; both failures are published, and no threshold moved. The ward view of reports per 1,000 residents now carries a caveat: every ward’s 2020 population is within 5% of the ward average, so that view tracks the raw report count closely. The winter chart reads the citywide figures from a small file of their own, site/data/city_series.json, instead of the full table. Methods 0.5.1 also gives the 2026-09-22 republish the new version it should have had, since its tie rule for snapping a report to a road changed a definition. community_area_summary.csv, ward_summary.csv, geo_denominators.csv, strata_tracts.csv, ward_legacy_mix.csv, winter_harshness.csv and winter_sensitivity.csv are byte for byte the 2026-09-24 release. The full list is in the release notes.

Download the data (CSV and JSON)
Reproduce this
Cite this

Blandford, Connor Ulrich. “Chicago potholes over time.” connorblandford.com, 2026-09-21 (data release 2026-09-26). https://connorblandford.com/projects/chicago-potholes/. Data: https://doi.org/10.5281/zenodo.22972212; all releases: https://doi.org/10.5281/zenodo.22972211.