OpenStats
City Score 2025 — Canadian city rankings
343 places ranked across eight open-data pillars.
- Theme
- composite
- Cadence
- annual
- Geography unit
- csd
- How we publish
- Full OpenStats table
How the City Score works
Each placement is scored from 0 to 1 inside its edition. When rank 1 means best, first place scores near 100%. When rank 1 means worst (for example highest radon or hardest water), that ordering is flipped so a healthier result still scores higher. Series in the same pillar (for example water hardness and lead) are averaged first. A city's OpenStats City Score is then the equal-weight mean across all eight pillars: tax, construction, connectivity, indoor air, water, seismic hazard, population growth, and crime severity. Missing pillars score at median standing (50%) so thin coverage cannot inflate the rank. Cities are ordered by that score. Commercial livability lists are never inputs.
Year panels from 2016 through 2025 use live atlas rows when a pillar publishes for that year. Permits, mill rates, and broadband may use documented estimates so hometown charts can move across the decade when a direct municipal reading is missing. Survey or model vintages for radon, water hardness, water lead, and seismic PGA may be carried forward; those carries are flagged when static for more than two years. Carried radon values are Health Canada survey vintages held constant — they are not newly measured annual city tests. Full ingest and tier rules sit on the methodology page.
Pillars measure different things. Use the City Score as a summary signal, then open the individual studies and topic pages for decisions about a specific home or project.
Current leaders
| # | City | Province | Standing | Pillars |
|---|---|---|---|---|
| 1 | Barrie | Ontario | 77% | 7 |
| 2 | Fredericton | New Brunswick | 73% | 7 |
| 3 | Bradford West Gwillimbury | Ontario | 72% | 7 |
| 4 | St. Thomas | Ontario | 72% | 7 |
| 5 | Tillsonburg | Ontario | 71% | 7 |
| 6 | Innisfil | Ontario | 70% | 7 |
| 7 | Brockville | Ontario | 69% | 7 |
| 8 | Parksville | British Columbia | 69% | 7 |
| 9 | Dieppe | New Brunswick | 69% | 7 |
| 10 | Hamilton | Ontario | 69% | 7 |
| 11 | Whitchurch-Stouffville | Ontario | 68% | 7 |
| 12 | Arnprior | Ontario | 68% | 7 |
| 13 | Wasaga Beach | Ontario | 68% | 7 |
| 14 | Ponoka | Alberta | 67% | 7 |
| 15 | Pickering | Ontario | 67% | 7 |
| 16 | Cowansville | Quebec | 67% | 7 |
| 17 | Kenora | Ontario | 67% | 7 |
| 18 | Orangeville | Ontario | 66% | 7 |
| 19 | Neepawa | Manitoba | 65% | 7 |
| 20 | Salaberry-de-Valleyfield | Quebec | 65% | 7 |
| 21 | Gatineau | Quebec | 64% | 7 |
| 22 | Milton | Ontario | 64% | 7 |
| 23 | Sarnia | Ontario | 64% | 7 |
| 24 | Lethbridge | Alberta | 63% | 7 |
| 25 | Prince Rupert | British Columbia | 63% | 7 |
Editions
- OpenStats City Score (2025)343 placements · coverage 343
- OpenStats City Score (2024)343 placements · coverage 343
- OpenStats City Score (2023)343 placements · coverage 343
- OpenStats City Score (2022)343 placements · coverage 343
- OpenStats City Score (2021)343 placements · coverage 343
- OpenStats City Score (2020)343 placements · coverage 343
- OpenStats City Score (2019)343 placements · coverage 343
- OpenStats City Score (2018)343 placements · coverage 343
- OpenStats City Score (2017)343 placements · coverage 343
- OpenStats City Score (2016)343 placements · coverage 343