Vicinus.

Methodology

Walkability score.

The walkability score measures how much of daily life is reachable on foot from a neighbourhood’s centre: how many everyday destinations are nearby, how close they are, and whether they cover a variety of needs rather than ten of the same thing.

It is not a measure of how pleasant the walk is. Sidewalk quality, traffic, crossings, and terrain are not modelled — see limitations.

Weights version v1

Data source

Every destination comes from OpenStreetMap, queried through the Overpass API. Points of interest are pulled within a 1,500 m straight-line radius of the neighbourhood centre and stored locally with a dated quarterly snapshot tag, so a score can always be recomputed against the exact data that produced it.

That radius is worth holding onto, because the decay bands below are quoted in walking metres, not straight-line ones. A destination 1,500 m away in a straight line sits at 2,100 m once the ×1.4 detour factor is applied — so in practice nothing ever lands in the last stretch of the decay curve. The 2,400 m cut-off is the formula’s zero point, not a distance any counted destination reaches.

We build this from open data rather than licensing a commercial walkability score. That means the calculation can be published in full, which is the entire point of this page.

Map data © OpenStreetMap contributors, available under the Open Database License (ODbL).

The nine categories

Raw map tags are mapped into nine categories of everyday destination. Anything that does not fall into one of them is ignored, and transit stops are stored separately so they can never influence a walkability score — transit has its own sub-index.

CategoryWhat it coversWeight
GrocerySupermarkets and convenience stores1.5
RestaurantsRestaurants1.2
CoffeeCafés1.0
ParksParks and playgrounds1.0
SchoolsSchools1.0
ErrandsAny other retail shop1.0
BanksBanks0.8
HealthcareHospitals and pharmacies0.8
EntertainmentBars0.8
Category weights are relative, not percentages; they sum to 9.1.

Groceries carry the highest weight because grocery shopping is the most frequent non-work trip most households make. Bars, banks, and healthcare carry the lowest, because their visit frequency is far lower even though their presence still signals a functioning local high street.

How the score is computed

1. Walking distance

Straight-line (great-circle) distance from the neighbourhood centre, multiplied by a 1.4 detour factor — a real pedestrian route is always longer than the crow flies.

This is a deliberate simplification. True network distance over the pedestrian street graph is a future improvement, and the gap between the two is the single largest known source of error in this score.

2. Distance decay

Each destination earns credit between 0 and 1 based on how far away it is:

  • 400 m or less — full credit. Roughly a five-minute walk.
  • 400 m to 2,400 m — credit decays linearly from 1 to 0.
  • Beyond 2,400 m — no credit.

These thresholds are walking metres — straight-line distance multiplied by the ×1.4 detour factor. Since ingestion stops at a 1,500 m straight-line radius (2,100 m walking), the 2,100–2,400 m band of this curve is unreachable in practice.

3. Diminishing returns

Decayed credit is summed per category, capped at 10, and passed through a logarithm. The first grocery store matters enormously; the eighth adds very little. Without this, one dense commercial strip would swamp every other signal in the score.

categoryValue = log(1 + min(decayedCount, 10)) × categoryWeight

4. Normalization to 0–100

Category values are summed and divided by the maximum total any neighbourhood could attain — every one of the nine categories saturated at the cap.

score = 100 × weightedTotal ÷ maxAttainable

maxAttainable = log(1 + 10) × 9.1 ≈ 21.82

The anchor is derived from the ceiling rather than hand-tuned. A walkability score is therefore “what fraction of the best possible outcome this neighbourhood achieves”, and changing the weights or the cap cannot silently re-scale the index underneath it.

Calibration

The normalization anchor was originally a fixed guess, calibrated against a small synthetic test fixture of about a dozen destinations. Real map data returns vastly more than that — a dense Vancouver neighbourhood can return over a thousand points of interest within 1.5 km — so weighted totals blew straight past the guessed anchor and clamped.

Measured against a sample of real British Columbia neighbourhoods, a majority scored exactly 100 under the guessed anchor, which also made the livability percentile meaningless because everything tied. Deriving the anchor from the true ceiling instead produced a usable spread across the sample, from the low tens in remote communities to 100 in the densest urban cores, with only the very densest reaching the ceiling.

The lesson worth carrying forward: a constant calibrated on synthetic data will not survive contact with real density. Anyone re-tuning the category weights or the per-category cap should re-run the comparison across real neighbourhoods before shipping.

Known limitations

Accepted trade-offs in the current version:

  • Straight-line distance × 1.4, not network routing. Ignores rivers, highways, rail lines, and cul-de-sacs. A neighbourhood separated from its amenities by an uncrossable barrier scores too high.
  • No pedestrian-friendliness adjustment. Intersection density and block length are not implemented, so sidewalk quality, traffic volume, and crossing frequency do not affect the score at all.
  • One sample point, not a grid. The score is measured from a single centroid rather than the median of grid-sampled points, so large or irregular neighbourhoods are represented by their centre only — and no score describes a specific address.
  • Map completeness varies. OpenStreetMap coverage is excellent in urban areas and thinner in rural ones, which can understate small towns.
  • Category caps are uniform. Every category caps at the same decayed count, regardless of how many of that destination type a neighbourhood realistically needs.
  • Destination presence is not quality. The score counts that a grocery store exists nearby, not whether it is good, affordable, or open when you need it.

How this feeds the livability score

Walkability is the largest single input into the Vicinus livability composite, carrying a weight of 0.30 alongside schools, amenities, and transit.

Read the livability methodology →

Data attribution

Points of interest are derived from OpenStreetMap. Map data © OpenStreetMap contributors, available under the Open Database License (ODbL). Data is queried through the Overpass API.

School locations come from OpenStreetMap and reflect where schools are, not how they perform. Vicinus does not publish, license, or rank school quality data.

We use cookies to understand how you use Vicinus and improve your experience. Read our Privacy Policy.