Methodology
Every figure on WageMap traces back to one public dataset. This page explains exactly where the numbers come from and how the comparisons on each page are computed.
Data source
All wage figures come from the U.S. Bureau of Labor Statistics' Occupational Employment and Wage Statistics (OEWS) survey, May 2024 release — the most recent year available at time of writing. OEWS is a semi-annual survey of employers that produces employment and wage estimates for over 800 occupations, at the national, state, and metro-area level. It's the standard federal source for occupational wage statistics. Full source data and documentation: bls.gov/oes.
What each figure means
| Metric | Meaning |
|---|---|
| Annual median | The 50th-percentile annual wage — half of workers in that occupation and state earn more, half earn less. The most representative figure for a "typical" salary. |
| Annual mean | The average annual wage. Can be pulled upward by a small number of very high earners, so it's usually higher than the median. |
| 10th / 25th / 75th / 90th percentile | The wage level below which that percentage of workers fall. The 10th-90th range shows the real spread of pay within the occupation and state. |
| Hourly median | The median wage expressed as an hourly rate, for occupations BLS reports hourly rates for. |
| Employment | Estimated number of people employed in that occupation in that state. |
How the national comparison is calculated
Each state page compares its median to a true national median — BLS's own national-level OEWS estimate for that occupation, not an average calculated by summing or averaging the state figures on this site. That keeps the comparison accurate even though WageMap doesn't display every single state for every occupation.
% above/below national = (state median − national median) ÷ national median × 100
Suppressed and withheld data
BLS withholds a wage estimate when there isn't enough survey data to produce a reliable
figure, or to protect respondent confidentiality (flagged in the source data with * or # markers). WageMap handles this two ways:
- If a state's median for an occupation is suppressed, that state is left out of the occupation's page entirely rather than showing a blank or estimated row.
- If the true national median for an occupation is suppressed by BLS, that occupation is skipped from this site entirely — WageMap never approximates a national figure BLS itself didn't publish.
- Individual fields within a state row (a percentile, hourly rate, or employment count) that are suppressed show as
N/A.
Coverage
WageMap currently covers 18 common occupations across the states with available OEWS data, as a phased launch. The full dataset (raw BLS figures, build script, and source notes) is available on GitHub .