Methodology

The premise of this site is that you should never have to trust a number — you should be able to check it. Here is exactly how each figure is produced.

The core adjustment

The main comparison converts a nominal income into its value at national prices, using the BEA all-items Regional Price Parity (RPP) for each state. RPP is an index where 100 equals the US national price level.

adjusted_income = nominal_income ÷ (RPP_all_items ÷ 100)

Worked example (reproduce it with a calculator)

California (RPP 110.7):  100,000 ÷ (110.7 ÷ 100) = $90,334
Arkansas   (RPP 86.9):  100,000 ÷ (86.9 ÷ 100) = $115,075
Difference: $115,075 − $90,334 = $24,741

A higher RPP means a dollar buys less, so the same income is "worth" less there. A lower RPP means your income stretches further.

The component breakdown

RPP is published broken out by component — all items, housing rents, goods, utilities, and other services. The breakdown table shows each state's index per component and the percentage difference between them, so you can see why one state is more expensive, not just that it is.

On precision

The BEA API returns values to extra decimal places (for example, 110.72), but BEA's own published tables and press releases round to one decimal (110.7). We adopt BEA's published precision so our figures match the official source exactly. The unrounded API values are preserved in our committed raw snapshot as an audit trail.

Housing & income (Census ACS)

Median rent, home value, household income, homeownership rate, and cost-burden figures come from the US Census Bureau's American Community Survey 5-year estimates. We use the 5-year (not 1-year) estimates because they are far more reliable at the state level. Values are pulled directly from the Census API by variable ID (for example, B25064_001E for median gross rent) and shown unmodified.

We also publish the Census 90% margin of error beside the major ACS estimates and include median real estate taxes paid by owner-occupied households (B25103_001E). A margin of error describes sampling uncertainty; it is not an error bar on a particular home or household.

Metro-area price levels (BEA)

Metro comparisons use table MARPP, the metropolitan counterpart to the state RPP table. The same adjustment formula applies. Metropolitan statistical areas can cross state lines, so a metro may appear in more than one state profile. We keep all metros on one comparison page rather than generating hundreds of near-identical landing pages. The guide to state versus metro cost-of-living figures explains how to match the geography to a real decision.

Unemployment (BLS LAUS)

State unemployment rates are the seasonally-adjusted figures from the BLS Local Area Unemployment Statistics program. This is the only monthly dataset on the site, so it is the one figure that changes between our roughly-monthly rebuilds. We show the reference month and flag preliminary values.

Trends over time (FRED)

The historical charts on each state page come from the Federal Reserve's FRED database: the FHFA All-Transactions House Price Index ({ST}STHPI) and the state unemployment rate ({ST}UR), shown for complete calendar years since 2005 alongside the national series. Charts are rendered at build time as plain SVG — no scripts, no tracking — and each carries an accessible data table with the underlying numbers.

Occupation wage ranges (BLS OEWS)

Occupation pages use the BLS employment estimate and annual 10th, 25th, median, 75th, and 90th percentile wages. Percentiles describe the distribution of published wages; they are not promises about entry-level or senior pay. Only the median is adjusted by state RPP for the real-pay ranking. See the wage-percentile guide for the correct interpretation.

On the release lag

RPP is annual and released roughly 14 months after the year it measures. The 2024vintage was released February 19, 2026. We show this lag on every page rather than hiding it — it is a limitation of the underlying official data, shared by every honest source.

What we never do

See every source and its vintage →