Last updated: October 21, 2026
This page documents exactly how the Toronto Crime Score is computed, so that journalists, researchers, and AI engines can cite the scores with a defensible basis. Every number shown here is the number the site uses. For who runs the site, see About.
Each Toronto neighborhood receives a single score between 0 and 100, where lower is safer. The score combines nine crime categories tracked in the Toronto Police Service's Neighbourhood Crime Rates Open Data dataset: homicide, shooting, assault, robbery, break and enter, auto theft, theft over $5,000, theft from vehicle, and bicycle theft. Scores are relative - they compare neighborhoods within Toronto for 2025 and are not calibrated against other cities.
Raw incident counts favor large neighborhoods: 100 assaults mean something very different in a neighborhood of 10,000 residents than in one of 100,000. So for every category, the incident count is divided by the neighborhood's population and scaled to a rate per 100,000 residents:
rate = (incidents ÷ population) × 100,000
This makes a neighborhood of 2,000 residents directly comparable to one of 50,000. Population figures are the residential projections published with the police dataset (prepared by Environics Analytics), which is also their limitation: areas with large daytime, visitor, or commuter populations can show inflated rates (see Known Limitations).
Not all crimes affect safety equally. Each category's rate is converted to points on a 0-100 scale, where 100 points correspond to a reference rate per 100,000 residents (the category's normalization cap). The points are then multiplied by the category's severity weight. The nine weights sum to 100%:
| Crime category | Weight | Reference rate (per 100k) |
|---|---|---|
| Homicide | 35% | 10 |
| Shooting | 25% | 20 |
| Assault | 12% | 1,000 |
| Robbery | 8% | 500 |
| Break and Enter | 6% | 750 |
| Auto Theft | 5% | 300 |
| Theft Over $5000 | 4% | 200 |
| Theft from Vehicle | 3% | 500 |
| Bicycle Theft | 2% | 200 |
The reference rate is the per-100k rate at which that category reaches its 100-point cap - for example, a homicide rate of 10 per 100,000 residents contributes the full 35 points, and rates above that are capped. Violent categories carry low reference rates and high weights; high-volume property categories carry high reference rates and low weights, so a spate of bicycle thefts can never outweigh a homicide.
Each category's points are capped at 100, multiplied by its weight, and the nine weighted contributions are added together:
score = Σ ( weight × min(100, rate ÷ reference rate × 100) )
Worked example: a neighborhood of 30,000 residents with 12 reported assaults has an assault rate of 40 per 100,000. That is 40 ÷ 1,000 × 100 = 4 points, and 4 × 12% = 0.48 points toward the final score. Repeating this for all nine categories and summing gives the neighborhood's score.
Raw scores are hard to read at a glance, so every score is banded into five levels. Bands are fixed thresholds on the 0-100 scale:
The same banding is used across the dashboard, neighborhood pages, and map, so a color always means the same thing anywhere on the site.
Crime counts come from the Toronto Police Service's Neighbourhood Crime Rates Open Data dataset on the Public Safety Data Portal, retrieved through its ArcGIS REST API (dataset endpoint). Neighborhood boundaries follow the police service's neighbourhood definitions, and population figures are the projections published with the dataset.
The current release covers calendar year 2025 (annual rates), and the source dataset was last updated 2026-02-02.
Contains information licensed under the Open Government Licence – Toronto. The source layer's own metadata additionally acknowledges the Open Government Licence – Ontario.
Spotted an error or want to challenge a number? Contact us - corrections are made when an official source supports the change. The site's source code, including the score calculation script, is available on GitHub.