Check our numbers yourself.
Every stat we publish comes from public records we requested from the City. Below are the two datasets that back them — the raw files plus the City's own response letters — so you can reproduce the numbers from scratch.
Every Chicago ticket, 2019–2024
Ticket-level records for six years — roughly 5 million tickets a year. Each row carries the City's own money columns — what was paid and what's still owed — so you can reproduce the billed figure straight from it. Files are $-delimited text inside a zip, one per year.
Total Payments (what drivers paid) plus Current Amount Due (what they still owe) — across every ticket. (The win rate comes from a different file — the hearings data below.)How to reproduce the billed figure: billed = Total Payments + Current Amount Due (what drivers actually paid plus what they still owe), averaged over the three matured years 2022–24 ≈ $429M/yr. Of that, ~$140M is late penalty (billed minus Fine Level 1). We do not sum Fine Level 2 across all tickets — that would assume every ticket escalates to the late price and overstates the total by roughly a third. The exact formulas are on The Math and By The Numbers.
Every contest outcome, 2019–present
1.2 million administrative-hearing decisions. This is the cleanest source for the win rate broken out by how a ticket was contested — by mail, in person, or virtually. Delivered as a $-delimited text file (gzipped).
The request & response: the City's Department of Administrative Hearings replied through GovQA (its FOIA portal) on Nov 10, 2025 — restating the full request (“all hearing outcome records for parking, traffic, and camera enforcement, 2019–present”) and producing the data file A52156_20251106. The PDF above is that City response, sent from chicagoil@govqa.us under request #H118909-110325.
How to check the 59% yourself: open the file and keep only the rows where the contest-method column says Mail and the decision lands in 2023–2025. Count the rulings: 169,609 came back "Not Liable" (won) out of 287,532 decided = 59%. Want the in-person or virtual numbers? Same steps, just pick that method instead. The live data page does it all for you.
Questions about the data or the requests? Email randyvollrath@gmail.com.