Methodology
Every value comes from a public, named source. This page covers where each dataset comes from, how the seven-dimension UrbRank Score is computed, and how often we refresh.
| Source | What it provides | Refresh |
|---|---|---|
American Community Survey (ACS) 5-Year US Census Bureau | Median household income, median rent, median home value, age, education, poverty, commute time | Annually, with a 1–2 year lag |
Consumer Price Index (CPI-U) Bureau of Labor Statistics | Metro-level price levels for food, housing, transportation, medical care, used to derive sub-category cost indices | Monthly, with retroactive revisions |
Regional Price Parities (RPP) Bureau of Economic Analysis | Cross-metro price level comparisons; baseline for cost_index calibration | Annually |
Climate Normals NOAA NCEI + Open-Meteo | 30-year temperature, precipitation, and sunshine averages | NCEI publishes new normals every decade; Open-Meteo runs on a daily archive |
Air Quality System (AQS) EPA | Annual PM2.5 → AQI conversion using EPA breakpoints | Annually |
Crime Data Explorer FBI | Violent and property crime rates per 100,000 residents | Annually, when the federal API is operating (currently degraded) |
Walk Score / Transit Score / Bike Score Walk Score (private, public methodology) | Daily-errand walkability, transit access, and bikeability | Periodically; we refresh on a quarterly cadence |
Each city's cost_index is a weighted average of five sub-indices (housing 33%, transportation 17%, groceries 13%, healthcare 8%, utilities 7%, with the remainder absorbed by other household costs). The baseline is the BLS metro CPI-U for the relevant region; city-level variation comes from BEA RPP and ACS rent/home value, applied with category-specific dampening factors so a city with 2× the rent doesn't end up with a 2× grocery index.
100 represents the US city average. A city at 85 is roughly 15% cheaper overall; a city at 130 is 30% more expensive.
Each city is scored 0–100 against every other US city in our dataset on each dimension below.
| Dimension | Underlying signal | Direction |
|---|---|---|
| Affordability | Inverse percentile of composite cost-of-living index | Lower cost_index ranks higher |
| Safety | Inverse percentile of crime rate per 100k | Lower crime rate ranks higher |
| Climate | Composite of summer temp, winter temp, and precipitation | Penalizes hot summers, cold winters, and extreme rainfall asymmetrically |
| Walkability | Walk Score (0–100) | Used directly without further normalization |
| Job Market | Composite of unemployment rate and median household income | Lower unemployment + higher income ranks higher |
| Environment | Inverse percentile of air quality index (PM2.5) | Lower AQI ranks higher |
| Education | Percentile of share of adults 25+ with a bachelor's degree or higher | Higher share ranks higher |
The headline UrbRank Score is a weighted average of the seven dimensions. We publish five weighting profiles — general, family, retiree, remote worker, young professional — each emphasizing different dimensions. Retirees get more weight on healthcare and climate; young professionals on jobs and walkability; families on schools and safety.
Letter grades (A+ through F) map to score percentiles, not absolute thresholds, so they're always relative to the rest of the ranked set.
Census ACS, BLS CPI-U, BEA RPP, EPA AQS, and FBI Crime are re-ingested annually as new vintages land. Walk Score and AQI run on a quarterly cadence. Pages are regenerated daily via Next.js ISR, so a corrected upstream value reaches the site within 24 hours of being re-ingested.
The vintage year is shown on every comparison so you can tell at a glance how recent the data is.