Salary benchmarks

What does your role pay, state by state?

What a typical worker in your role earns, broken down state by state. Pick your industry, then pick your role (or stay on the industry-wide view) and the map below shades each state by what the middle-paid worker in that role takes home each year.

Source: BLS Occupational Employment and Wage Statistics (OES). About a hundred occupations covered, grouped into six industries. Methodology details (sample design, top-coding, exclusions, cost-of-living) below.

Industry
Role

National headline

Loading…

National median
10th percentile

Median wage by state

Loading…

Methodology

Wages come from the BLS Occupational Employment and Wage Statistics (OES, formally OEWS as of 2021) survey: a semi-annual establishment survey of ~1.2M establishments pooled over a three-year cycle, covering ~800 occupations across every US state and metropolitan area. We pull the annual cross-industry series for the occupations listed in the picker above (industry code 000000) and persist the median and 10th percentile annual wages per (occupation, area, year). The industry buckets and per-industry SOC rosters are curated in packages/shared/src/wages-industries.ts.

Survey scope and exclusions

OES surveys nonfarm wage-and-salary employees on establishment payrolls. It excludes the self-employed (~10% of US workers per BLS self-employment estimates), independent contractors (~7-8% per the BLS Contingent Worker Supplement), gig-economy workers (no clean BLS count), undocumented workers (not on UI payrolls so not in the OES frame), agricultural workers, and military. A Software Developer who leaves a payroll for freelance work disappears from this page even though their economic activity continues.

Top-coding and the upper tail

The 90th-percentile annual wage is top-coded at $239,200/year ($115.00/hr) for the 2024 release. Cells above the cap report exactly the cap value, so the true upper tail of high-paying occupations is understated. Occupations routinely at the cap include Software Developers (15-1252), Computer & Information Research Scientists (15-1221), Physicians (29-1215+), Surgeons (29-1241), and Chief Executives (11-1011). This page surfaces the median and 10th percentile only; when we add the 90th-percentile column back, the top-coding caveat will sit next to it.

Full-time-equivalent imputation

For occupations paid hourly, OES reports annual wages as hourly × 2080 hours (40 hrs/wk × 52 weeks). This is a full-time-equivalent imputation that overstates the annual income of typically part-time occupations (food service, retail, home health) and reads correctly for typically-full- time roles. Per-occupation hours data lives in BLS Current Population Survey supplements, not in OES.

Cell suppression

BLS suppresses cells with relative standard error above 50% or fewer than three reporting establishments, for confidentiality. Our DB stores null; the page renders a dash rather than a zero. Suppression rates are higher at smaller geographies and for occupations with low employment in that geography. The a_pct_rse column in the BLS bulk CSVs carries cell-level confidence intervals; we don't yet surface these.

Aggregation: weighted mean of medians

The "All [industry] (median)" aggregate computes, per area and per year, a population-weighted mean across the medians of every occupation in that industry, using OES employment counts (data type 01) as the per-SOC weight. A small high-paying SOC therefore counts proportionally to its share of the industry's headcount instead of equally with a giant low-paying one. The true population-weighted median requires iterating each SOC's underlying wage distribution, which OES does not expose; weighted-mean-of-medians is the standard practical approximation. Any area/year pair where the employment counts have not yet been ingested falls back to a plain median-of-medians so the page never blanks.

Cost-of-living

The "Nominal / Cost-of-living adjusted" toggle above the choropleth divides each state's median by its BEA Regional Price Parity (RPP), an annual index where the US average = 100. A $130k San Francisco median lands around $108k in cost-of-living-adjusted dollars (CA RPP ~120); an $80k Cleveland median lands around $89k (OH RPP ~90). The toggle only affects the choropleth and per-state table; the trend chart and per-role lookups stay nominal because BEA periodically rebases the RPP index (which would compound two moving reference points across years). RPP source: data.bls.gov-style BEA SARPP bulk release (annual, state level, since 2008).

Revisions

OES is annual; values typically publish around May of the following year and may be revised in the publication window. The ingest re-pulls weekly and overwrites in place via composite upsert, so revisions land without operator action. Historical OES is only available via BLS bulk CSV downloads (oesm<YY>all.zip); the public timeseries API returns the current release year only.

Series IDs

  • OEUN0000000000000<SOC>14 National annual median wage (data type 14)
  • OEUS<FIPS>00000000000<SOC>14 State annual median wage
  • …12 annual 10th percentile
  • …01 annual employment level (used as the per-SOC weight in industry aggregates)