BLS OEWS wage distributions for every U.S. state, sliced by 2-digit SOC occupational major group. Currently showing: Architecture & Engineering.
The Bureau of Labor Statistics' Occupational Employment and Wage Statistics[1]program surveys ~200,000 establishments semi-annually and publishes state-level wage percentiles (P10, P25, P50, P75, P90) plus employment counts. Occupational groupings use the 2018 Standard Occupational Classification[2] — this page exposes the 20 major (2-digit) groups. Pick one below.
Highest Median
District of Columbia
$122,320
Lowest Median
Arkansas
$74,670
OEWS Vintage
May 2023
BLS state tables
P10 / P50 / P90 are annual wage percentiles from BLS OEWS. Employment is the state-level headcount for the SOC major group at the OEWS publication date. A few small-employment cells may be suppressed by BLS for confidentiality.
OEWS reports wage percentiles because the wage distribution for most occupational groups is right-skewed — a handful of high earners pull the arithmetic mean well above the median. P50 is the experience the median worker actually has; P10 is the bottom decile; P90 is the top decile (but not the very top, which BLS caps at $240k).
A $110k Computer & Mathematical median in San Francisco is not the same as a $110k median in Austin — the BEA housing RPP is ~2× higher on the coast. Always pair OEWS with BEA RPP before making a relocation decision.
This page uses 2-digit SOC major groups (e.g., 15-0000“Computer and Mathematical”). BLS also publishes the full 6-digit detailed SOC (e.g., 15-1252Software Developers) with narrower wage bands — those sit in the state's detailed OEWS table, which CalcFi's pSEO salary pages consume separately.
Household Income by State
Compare with wage-only OEWS
Cost of Living by State
Essential context for any wage
State Economic Snapshot
Unemployment + labor force participation
States With No Income Tax
Take-home pay impact
Paycheck Calculator
Convert gross to net for any state
Salary-to-Hourly Calculator
OEWS annual → hourly conversion
This page calls listStateSalary()from CalcFi's data repository. Each StateSalaryContext row has a record-level source: SourceRef (all wage fields come from the same OEWS release), plus a nested occupations[] array keyed by SOC 2-digit code. The query-string ?soc= filters to one row per state for the chosen occupational group.
Refresh cadence:BLS publishes OEWS state tables annually in May (for the previous May survey period). That's the slowest of CalcFi's data feeds — expect a one-year lag. The retrievedAt date shown above reflects the last ETL fetch, not the vintage year itself (shown in the highlights tile).
Known limits:some small employment cells are suppressed by BLS (marked “—”). OEWS covers non-farm wage and salary workers and excludes the self-employed — so Schedule-C and 1099 income isn't in these numbers.
CalcFi does not sell data. If you spot an error, email hello@calcfi.app with the URL and the correct figure.