Skip to content
Curbcheck

Methodology & limitations

About Curbcheck Toronto

How we match City of Toronto parking-ticket records to street blocks, compute relative ticket activity by hour of the week, and guard against overstating what the data can show.

What the band means

Each street block receives a relative ticket risk band for each of the 168 hours of the week (Monday midnight through Sunday 11 PM): Low (below the 50th percentile), Moderate (50th to 79th percentile), High (80th to 94th percentile), or Very high (95th percentile and above). Blocks with zero public street tickets in the three-year window are shown as No recorded tickets.

The band compares historical street ticket activity on that block against every other ticketed Toronto block at the same hour of the week, adjusted for block length and smoothed across adjacent hours.

What it doesn't mean

Ticket counts measure where and when enforcement officers wrote tickets, not how many cars parked there or how often drivers broke the rules. Because we do not know the denominator of parked vehicles, Curbcheck never outputs a prediction or legal advice.

Enforcement is not spread evenly across Toronto. Busy commercial corridors, rush-hour routes and streets near hospitals or transit hubs are patrolled much more frequently than quiet residential side streets. A low band or a block with no recorded tickets does not mean parking is permitted; always read and follow posted signs and municipal by-laws.

How blocks are matched

Every ticket location is normalised (abbreviations expanded, punctuation removed, directions standardised) and matched to a Toronto Centreline street segment in three deterministic tiers:

  • Exact Address Point: numbered street addresses matched directly to a City of Toronto municipal Address Point and its Centreline segment.
  • Address range: numbered addresses matched to the Centreline segment whose odd/even address range covers that number on that street.
  • Corner / intersection: tickets recorded with a cross street (location3/location4) are matched to the Centreline intersection where the two streets meet. When a directional qualifier is present, the ticket is assigned to the segment on that side; otherwise the ticket is split evenly (0.5 weight) between the two incident segments of the primary street. Ambiguous intersections (such as a crescent meeting the same street twice) are left unmatched rather than guessed.
Per-year address and intersection geocode match rates
YearOverallNumbered addressesCorner / intersectionExact pointAddress rangeIntersection tier
200892.8%93.1%92.6%87.4%2.1%3.3%
200993.0%93.3%92.0%87.9%2.0%3.2%
201093.5%93.8%92.4%87.9%2.0%3.7%
201193.9%94.1%93.3%87.6%1.9%4.4%
201294.4%94.6%93.7%87.9%1.8%4.7%
201394.6%94.8%94.0%87.7%1.8%5.1%
201495.0%95.2%94.5%87.7%1.7%5.5%
201595.4%95.6%94.3%87.8%1.6%6.0%
201695.7%95.9%94.2%87.8%1.6%6.4%
201795.8%96.0%94.8%87.7%1.5%6.6%
201895.4%95.6%94.6%87.3%1.6%6.5%
201995.2%95.4%94.5%86.8%1.6%6.8%
202095.2%95.5%93.3%87.1%1.4%6.6%
202195.7%95.9%95.2%86.0%1.6%8.1%
202296.2%96.3%95.4%86.6%1.6%8.0%
202396.2%96.4%93.7%88.2%1.5%6.5%
202496.5%96.7%95.2%88.1%1.5%7.0%
202596.1%96.2%95.2%88.1%1.5%6.5%

How the score is computed

The live risk model uses a three-year window (2023 to 2025) of matched public street tickets with a valid time of day. More recent years carry higher weight: 1.0 for 2025, 0.707 for 2024, and 0.5 for 2023 (a two-year half-life).

For each block and hour of the week, weighted counts are smoothed with adjacent hours (0.25 · h−1 + 0.5 · h + 0.25 · h+1, wrapping around the week) and divided by an exposure term proportional to the block's length (with a 50-metre floor so short stubs do not spike). An empirical-Bayes Poisson-gamma shrinkage prior fitted for each hour of the week pulls low-volume blocks toward the citywide rate before percentiles are ranked across all ticketed blocks. Blocks with fewer than 30 public street tickets in the window carry a Limited data badge, and any displayed count below 5 is suppressed as “fewer than 5”.

Private lots

Many tickets in Toronto are issued on private property—commercial plazas, hospital grounds, university campuses and residentialvisitor lots—by private enforcement agencies authorised to write City tags. Because those tickets apply to off-street lots rather than the public curb, private-property infractions are excluded from the street risk band and shown in a separate notice whenever a block has at least 5 private-property tickets in the window.

Known limits

According to the City of Toronto's dataset documentation, the published parking-ticket files contain complete records only: some out-of-province plates and tickets paid before data entry are missing from the dataset (the City notes that the omitted records are insignificant for overall trend analysis).

Street segments combine both sides of the street, and historical tickets reflect the signage and by-laws that were in effect when the ticket was written—not necessarily today's curb regulations or construction zones.

How the report and Ask work

The ticket report is produced offline by Claude running read-only SQL queries against the local DuckDB corpus. Every number in a report section is checked automatically against the rows returned by that section's logged queries; any section whose figures cannot be verified is withheld, and the full query log is published alongside the prose.

Ask the data lets you ask questions in plain English in the live app. Claude answers through a read-only Postgres role restricted to an allowlisted schema of aggregated tables (it never has access to individual ticket rows or tag numbers), shows every SQL query it ran, and is checked for untraced numbers before the answer is displayed. Questions are not stored; only anonymous per-IP usage counters are kept for rate limiting.

Licence & attribution

Contains information licensed under the Open Government Licence – Toronto (Parking Tickets, Address Points and Toronto Centreline). Base map data © OpenStreetMap contributors, with vector tiles provided by OpenFreeMap. Curbcheck is an independent project and is not affiliated with or endorsed by the City of Toronto or the Toronto Police Service.