UrbRank

Methodology

How we calculate every number on this site

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.

Data sources

SourceWhat it providesRefresh
American Community Survey (ACS) 5-Year
US Census Bureau
Median household income, median rent, median home value, age, education, poverty, commute timeAnnually, 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 indicesMonthly, with retroactive revisions
Regional Price Parities (RPP)
Bureau of Economic Analysis
Cross-metro price level comparisons; baseline for cost_index calibrationAnnually
Climate Normals
NOAA NCEI + Open-Meteo
30-year temperature, precipitation, and sunshine averagesNCEI publishes new normals every decade; Open-Meteo runs on a daily archive
Air Quality System (AQS)
EPA
Annual PM2.5 → AQI conversion using EPA breakpointsAnnually
Crime Data Explorer
FBI
Violent and property crime rates per 100,000 residentsAnnually, 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 bikeabilityPeriodically; we refresh on a quarterly cadence

The composite cost-of-living index

Each city's cost_indexis 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.

The seven scoring dimensions

Each city is scored 0–100 against every other US city in our dataset on each dimension below.

DimensionUnderlying signalDirection
AffordabilityInverse percentile of composite cost-of-living indexLower cost_index ranks higher
SafetyInverse percentile of crime rate per 100kLower crime rate ranks higher
ClimateComposite of summer temp, winter temp, and precipitationPenalizes hot summers, cold winters, and extreme rainfall asymmetrically
WalkabilityWalk Score (0–100)Used directly without further normalization
Job MarketComposite of unemployment rate and median household incomeLower unemployment + higher income ranks higher
EnvironmentInverse percentile of air quality index (PM2.5)Lower AQI ranks higher
EducationPercentile of share of adults 25+ with a bachelor's degree or higherHigher share ranks higher

Profile-weighted UrbRank Scores

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.

Honest gaps and fallbacks

  • About half of cities are missing FBI crime data right now (the federal API has been intermittent). Those pages show a banner instead of pretending we have a number.
  • For cities without a local NCEI weather station, climate falls back to the state average — coarser than direct station data, but still a real geographic signal. The state-fallback path currently fires for less than 1% of cities.
  • BEA price parities are published at the metropolitan area level. We map cities to MSAs by name and proximity, which is close to perfect for primary cities and approximate for outer suburbs.
  • Cities with fewer than 5 of the 7 dimensions populated are de-prioritized in the sitemap and excluded from search-engine indexing — we'd rather under-promise than serve a thin page.

Refresh cadence

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.