Naperville, Illinois is safer than almost anywhere in America, and its households earn nearly twice the national median income. El Paso, Texas is safer than most of the country too — just not at Naperville's level — and its households earn well below the national median. Yet on WhereAtHome, El Paso scores 65.0 and Naperville scores 59.5. If you only look at the final number, that looks backwards. If you look at how the number is built, it makes complete sense — and that's the point of this guide.
The WhereAtHome Score takes six measured components, converts each to a 0–100 scale, applies published weights, and adds them up. Nothing about that process is mysterious once you can see it. This article walks through the exact formulas, shows the math on three real cities, and explains what happens when a city is missing a piece of data. For the condensed version, see the methodology page or the WhereAtHome Score glossary entry.
Six components, weighted, not six equal votes
Every city score is built from six named, stable components. These are the actual keys used across the site and our data — not just display labels:
| Component key | Display name | Weight | What it measures |
|---|---|---|---|
housing |
Housing Affordability | 20% | Typical home value vs. the national benchmark |
income_housing |
Income vs Housing | 20% | Local income-to-home-value ratio vs. the national ratio |
commute |
Commute Time | 15% | Average commute vs. the national average |
crime |
Crime | 20% | FBI-based crime tier, one of seven levels |
walkability |
Walkability | 15% | Walk Score, used directly |
purchasing_power |
Purchasing Power | 10% | Income vs. national benchmark, adjusted for cost of living |
Notice that housing shows up twice, asking two different questions. housing asks whether a city's typical home value is high or low compared with the rest of the country. income_housing asks how that value relates to what people locally actually earn. A city can score well on one and poorly on the other — which is exactly what happens to Naperville below. Walkability, meanwhile, passes straight through from Walk Score's own 0–100 index, which Walk Score's methodology page describes as a blend of amenity proximity, pedestrian friendliness, and block length — we don't recompute it, we just weight it.
Why El Paso outscores Naperville: a real breakdown
Here is the full component math for three real cities, using our national benchmarks of a $410,800 typical home value, $74,580 median household income, and a 27.6-minute average commute:
| Component (weight) | Naperville, IL | El Paso, TX | Austin, TX |
|---|---|---|---|
| Housing affordability (20%) | 32.7 | 86.4 | 40.8 |
| Income vs housing (20%) | 66.1 | 58.1 | 50.0 |
| Commute (15%) | 44.6 | 63.5 | 52.4 |
| Crime (20%) | 95 (Very Low) | 80 (Low) | 50 (Moderate) |
| Walkability (15%) | 46 | 40 | 42 |
| Purchasing power (10%) | 72.0 | 45.6 | 48.4 |
| WhereAtHome Score | 59.5 | 65.0 | 47.1 |
Naperville's city profile shows a $629,000 typical home value against $150,937 median household income, Very Low crime, and a 46 Walk Score. It wins four of six components — crime, purchasing power, walkability, and even the income-vs-housing ratio, narrowly. But housing compares Naperville's home value against the national figure, not against Naperville's own income, and $629,000 is more than 50% above the national benchmark. That single 20%-weighted component costs Naperville roughly 10.8 points of overall score — more than enough to erase its lead everywhere else.
El Paso, by contrast, has a $238,000 typical home value and a $50,246 median income. Its crime tier (Low) and walkability (40) are both weaker than Naperville's, but its housing affordability component is 86.4 — near the top of the scale — because $238,000 is well under the national benchmark. Cheap housing, weighted at 20%, is doing the heavy lifting.
Austin sits in between and shows a third pattern: it pairs Naperville-level home prices ($504,000) with only Moderate crime, so it doesn't get either city's compensating strength. Expensive and only averagely safe is a tougher combination than expensive-but-very-safe or cheap-but-only-moderately-safe.
Purchasing Power is not a job-market score
Purchasing Power replaced an older component called Economic Stability, and the rename matters: despite what "stability" implied, this component has never measured job diversity, employer concentration, or economic resilience. It only asks how far a typical paycheck goes.
The formula: take local median household income as a ratio of the $74,580 national benchmark, multiply by 50, and cap at 100. If a cost-of-living index is available, average that base score with (200 − cost-of-living index) / 2.
Naperville's income of $150,937 is more than double the national benchmark, so its base score clamps at 100. But Naperville's cost-of-living index is 112 — a bit above the national baseline of 100 — which produces an adjustment of (200 − 112) / 2 = 44. Averaging 100 and 44 gives 72, which is why even one of the highest-earning cities in this dataset doesn't get full marks here. See the cost-of-living index glossary entry for how that index is built.
Crime uses seven tiers, and an unrecognized label is a bug, not a guess
Every crime rating in our system maps to one of seven fixed tiers:
| Tier | Score |
|---|---|
| Very Low | 95 |
| Low | 80 |
| Moderate-Low | 65 |
| Moderate | 50 |
| Moderate-High | 35 |
| High | 20 |
| Very High | 10 |
These tiers come from FBI crime data, most reliably where the FBI Crime Data Explorer has agency-level coverage. Naperville carries a Very Low rating (9.3 reported incidents per 1,000 residents, 2024 FBI CDE data) and scores 95. Pittsburgh carries Moderate-High and scores 35 — see our guide to comparing crime rates for what that gap does and doesn't tell you about either city.
If a source ever reports a label outside these seven exact strings, the scoring function does not average it into something safe-looking. It throws an error. A new or mislabeled crime tier is treated as a data-pipeline problem to fix immediately, not a gap to paper over with a middling default.
Missing data gets excluded and weights renormalize — nothing defaults to zero
A city needs population, a typical home value, and median household income just to be scored at all; those three inputs anchor the housing, income_housing, and purchasing_power components, which are always computed. Commute, crime, and walkability are different: when one is genuinely absent, it's excluded, and the remaining weights are rescaled to sum to 100% rather than treating the missing piece as a zero or an assumed "Moderate."
Liberal, Kansas is a real example. It's a small city (about 19,000 people) where Walk Score hasn't been surveyed yet, so that field is empty rather than a guessed citywide number. With walkability excluded, the other five weights renormalize like this:
| Component | Weight → renormalized | Score |
|---|---|---|
| Housing affordability | 20% → 23.5% | 100 |
| Income vs housing | 20% → 23.5% | 100 |
| Commute | 15% → 17.6% | 91.1 |
| Crime | 20% → 23.5% | 50 (Moderate) |
| Purchasing power | 10% → 11.8% | 37.3 |
Liberal's $147,432 typical home value and 13.9-minute average commute are both far below their national benchmarks, which is why housing and commute score so high. Weighting those five components at their renormalized shares produces a final score of 79.3 — a real, reproducible number built entirely from the data that actually exists, with no walkability figure invented to fill the gap.
What the score can and cannot tell you
The score is good at organizing a broad search and making tradeoffs visible — that's exactly what the Naperville/El Paso/Austin table above does. It is not good at telling you which city is objectively "best." It doesn't know your rent, your commute mode, your family's health needs, your remote-work status, or how much a 46 Walk Score matters to you personally versus a 95 crime score. Two cities four points apart shouldn't be read as meaningfully different; the underlying estimates carry their own uncertainty.
Before trusting a comparison, open both cities on the compare tool, look at the full component breakdown rather than the headline number, and check which components (if any) are marked as missing. Then ask which one or two components are actually driving the gap — as we saw above, it's rarely all six pulling in the same direction.
Weights are a design choice we've published openly, not a law of nature. Every composite index encodes judgment calls in how it normalizes and weights its inputs — the OECD's handbook on constructing composite indicators is a good primer on why that's unavoidable and why publishing the weights matters. If you rent instead of buy, work remotely, or care more about walkability than the default 15% weight reflects, mentally reweight the result around your own life before you decide anything based on it.