DEV Community

DDMarketer
DDMarketer

Posted on

Where nurses actually take home the most pay in 2026 (48 metros, cost-of-living adjusted)

Every "highest paying cities for nurses" list ranks nominal salary, and every one of them tells you San Francisco is the best place in the country to be a nurse. It is not. Adjust for what things cost and San Francisco falls behind San Jose, and the metro that quietly ranks dead last of the 48 I measured is Miami, a city no nominal ranking would ever flag.

Full disclosure up front: I build kultranz.com, a salary and cost-of-living data site, and this study runs on data I maintain. The underlying sources are named government series, the dataset is CC BY 4.0, and there is a free no-key API at the end if you would rather rerun the numbers yourself than trust a table in a blog post.

How "real" pay is computed

The formula is one line: real pay = average salary / cost-of-living index x 100. The index is BEA Regional Price Parity, where 100 equals the US average. A metro at 114 means prices run about 14 percent above average, so a dollar there buys roughly 88 cents of average-priced goods. Divide salary by the index and you get what the paycheck is actually worth at average prices.

Inputs:

  • Wages: BLS Occupational Employment and Wage Statistics (OEWS), average registered nurse salary per metro
  • Cost of living: BEA Regional Price Parity, all items
  • Home values: US Census ACS, median home value per metro

The 10 metros where nurse pay goes furthest

Rank Metro Average salary Cost index Real pay Home price / salary
1 San Jose, CA $170,780 110 $154,660 7.0x
2 San Francisco, CA (Oakland market) $174,370 116 $150,822 7.9x
3 Sacramento, CA $154,510 107 $144,849 3.1x
4 Fresno, CA $133,780 102 $130,954 2.6x
5 San Diego, CA $133,790 112 $119,576 6.3x
6 Portland, OR $118,100 105 $112,027 4.7x
7 Los Angeles, CA (Long Beach market) $121,440 114 $106,933 7.2x
8 Seattle, WA $115,170 111 $103,633 7.9x

Two things to notice. San Francisco has the highest nominal nurse salary in the country at $174,370 and still only lands at number 2, because its 116 cost index erases $23,548 of it. San Jose pays $3,600 less on paper and wins by almost $3,900 in real terms; the price gap inside one Bay Area labor market is that wide. And six of the top seven metros are in California. Nursing is one of the very few occupations where California's pay premium genuinely outruns California's cost premium.

The catch is the last column. San Francisco and Seattle homes run 7.9 times a nurse's salary. The value picks inside California are Sacramento (3.1x) and Fresno (2.6x): top-four real pay with a mortgage that a normal household can actually carry. If you want California nurse pay without a million-dollar loan, the Central Valley is the move.

Where a nurse salary quietly shrinks

Metro Average salary Cost index Real pay Home price / salary
Detroit, MI $87,620 100 $87,360 0.9x
Nashville, TN $83,360 96 $86,529 4.6x
Charlotte, NC $84,080 97 $86,371 4.2x
Colorado Springs, CO $86,470 101 $85,863 4.9x
Jacksonville, FL $83,040 100 $83,471 3.2x
Wichita, KS $72,890 89 $81,949 2.5x
Fort Worth, TX $80,594 103 $78,178 3.4x
Miami, FL $87,710 114 $76,834 5.4x

Miami is the trap. Its $87,710 nominal average is effectively identical to Detroit's $87,620, mid-pack on every sticker-salary list. Then the 114 cost index drags it to $76,834 of real pay, dead last of all 48 metros, while homes still cost 5.4x salary. Same paycheck as Detroit, roughly $10,500 less of it in real terms. Nashville and Charlotte show the flip side: because their indexes sit below 100, real pay lands above nominal.

Detroit deserves its own line: median home value is 0.9x the average nurse salary, the best affordability on the board, at real pay that beats Miami by $10,500.

The tax layer the rankings also skip

Cost of living is half the correction; state income tax is the other half. Florida levies no wage tax, which softens Miami slightly at the paycheck level, while California clips the top of its nominal lead. On the 2026 schedule engine, a $75k single filer nets about $61,600 in the nine no-wage-tax states versus the mid $56ks in California. When you stack both layers, the California metros still win on real pay, but by much less than the sticker suggests, and the Miami adjustment gets worse, not better.

Rerun it yourself, no key required

The same data backs a hosted API. The free tier is 25 requests a day with no signup:

curl "https://api.kultranz.com/salaries?job=nurse&city=Miami"
Enter fullscreen mode Exit fullscreen mode
{
  "data": {
    "count": 1,
    "records": [
      {
        "job_title": "Registered Nurse",
        "city": "Miami",
        "state": "FL",
        "avg_salary": 87710,
        "salary_median": 83590,
        "salary_75th": 99870,
        "salary_90th": 110330,
        "rpp_all_items": 114.155,
        "median_rent": 1657,
        "median_home_value": 475200
      }
    ]
  }
}
Enter fullscreen mode Exit fullscreen mode

That is a live response, trimmed for width. Metro-to-metro purchasing power is a second endpoint, also live:

curl "https://api.kultranz.com/cost-of-living?fromCity=Miami,%20FL&toCity=Detroit,%20MI&salary=87710"
Enter fullscreen mode Exit fullscreen mode
{
  "data": {
    "from": { "city": "Miami, FL", "rpp": 114.2 },
    "to": { "city": "Detroit, MI", "rpp": 100.3 },
    "equivalent_salary": 77034.26,
    "gap_pct": -12.17
  }
}
Enter fullscreen mode Exit fullscreen mode

Read that as: a Miami nurse's $87,710 spends like $77,034 in Detroit. The whole ranking above is four lines of Python against /salaries:

import requests

def real_pay(city):
    r = requests.get("https://api.kultranz.com/salaries",
                     params={"job": "nurse", "city": city}, timeout=10).json()
    rec = r["data"]["records"][0]
    return rec["avg_salary"] / rec["rpp_all_items"] * 100

for city in ["San Jose", "San Francisco", "Miami", "Detroit"]:
    print(f"{city}: ${real_pay(city):,.0f}")
Enter fullscreen mode Exit fullscreen mode

Full endpoint list, including the take-home /paycheck calculator behind the tax layer, is on the API docs page. The 48-metro interactive version of this study is on the site.

The raw dataset

The metro cost-of-living side (BEA RPP plus median rent, home value, income, population for 50 metros) is open data, CC BY 4.0:

And because nurses negotiate offers too: the same engine generates a one-page Salary Negotiation Brief (your percentile, the local pay ladder, a counter-offer script, after-tax math) for $19 at kultranz.com/negotiation-brief.

Caveats, so nobody gets burned

These are occupation and metro averages from BLS OEWS; individual pay varies a lot with experience, shift differentials, and union contracts. The index is regional and all-items, so your personal basket (rent-heavy in San Francisco, childcare-heavy elsewhere) can diverge from it. Home ratio uses median values against average salary, a coarse affordability proxy. Nothing here is financial advice, it is a starting point for where to look, and the full method is on the methodology page. If your metro's numbers look wrong, that is the kind of correction I want: it lands in the canonical data and every consumer of the API gets it on the next deploy.

Top comments (1)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.