BLS OEWS Compensation Benchmarking: A Complete How-To Guide
Why HR Teams at Smaller Companies Keep Reinventing the Same Wheel
Picture this: it's Q1, you're the HR manager (and, functionally, the entire compensation team) at a 90-person logistics company in Ohio. A department head comes to you on a Monday morning with a job description for a new Logistics Operations Analyst. He wants to know what the market pays before he posts the role. You open the spreadsheet you built two years ago, realize the salary ranges are stale, and spend the next three days cobbling together numbers from job postings, a free salary-survey aggregate, and your best professional judgment.
What you may not have known — or may not have had time to use properly — is that the U.S. Bureau of Labor Statistics publishes a free, government-grade wage dataset that covers roughly 830 occupations across every state and hundreds of metro areas. It is updated annually, sourced from a survey of approximately 1.1 million establishments, and it gives you wage percentiles at P10, P25, P50, P75, and P90 for each occupation.
That dataset is the Occupational Employment and Wage Statistics (OEWS) program. This guide shows you, step by step, how to use BLS OEWS data for compensation benchmarking — including how to find the right occupation code, choose the right geography, select the right percentile anchors, and translate those numbers into defensible salary bands.
What the BLS OEWS Dataset Actually Contains
BLS OEWS compensation benchmarking begins with understanding what the data is — and what it isn't.
The OEWS program produces annual employment and wage estimates for approximately 830 occupations across the nation, all 50 states and D.C., and roughly 530 geographic areas (states, metropolitan statistical areas, and non-metropolitan balance areas). The estimates come from a rolling survey of approximately 1.1 million establishments, collected over three years and combined into a single annual release.
Each occupation record includes:
- Employment estimate — how many workers hold that job in that geography
- Mean hourly and annual wage
- Wage percentiles — P10, P25, P50, P75, and P90 (hourly and annual)
The wage percentiles are the most useful figures for compensation benchmarking. P50 is the median — half of workers in that occupation/geography earn more, half earn less. P25 and P75 mark the interquartile range. P10 and P90 mark the outer edges of typical market pay.
What OEWS is not: it is not a real-time feed. The annual release (typically published in the spring) reflects a prior survey year. It is also not a job-posting dataset — it surveys actual wages paid, not advertised ranges. For most SMB compensation benchmarking purposes, that distinction is a feature: you're seeing what employers actually pay, not what they advertise.
The all-occupation annual mean wage was $69,770 in the May 2025 release — a useful sanity check when you're evaluating whether a specific occupation estimate looks reasonable against the broader workforce.
Step 1 — Find the Right SOC Code
Every OEWS record is keyed to a Standard Occupational Classification (SOC) code, a six-digit federal taxonomy that groups jobs by their primary work activities. If you pull wage data for the wrong SOC code, your benchmarks will be wrong regardless of how carefully you do everything else.
SOC codes are hierarchical. The top two digits indicate a major group (e.g., 13-0000 = Business and Financial Operations), the next two indicate a minor group (13-1000 = Business Operations Specialists), and the last two indicate a detailed occupation (13-1071 = Human Resources Specialists). OEWS publishes data at the detailed-occupation level wherever sample sizes allow.
Practical matching approach:
- Start at the BLS SOC crosswalk: bls.gov/soc. Search by keyword — "logistics analyst," "accounts payable," "nurse practitioner" — and review the official definitions, not just the titles.
- Read the SOC definition closely. Each detailed occupation has an "illustrative examples" list and an "excludes" note. The excludes notes are where most mismatches happen. A "General and Operations Manager" (11-1021) excludes top executives; a "Financial Analyst" (13-2051) excludes securities analysts classified elsewhere.
- When a job description spans two possible SOC codes, go with the one whose definition matches the majority of the role's primary duties, not its title.
- Verify the code has wage data in OEWS for your target geography. High-specificity codes (six-digit) sometimes lack metro-level data due to small sample sizes; in that case, step up to the four-digit minor-group level.
For a deeper walkthrough of this matching process, see our guide to matching jobs to SOC codes.
Step 2 — Choose the Right Geography
BLS OEWS data is available at three geographic levels: national, state, and metro/non-metro area. The right level depends on where your role will actually be filled — and the numbers can differ substantially across levels.
National data is the right starting point when:
- You are hiring for a fully remote role with no fixed location
- You operate in a rural area that lacks its own MSA-level data
- You need a cross-location baseline before applying geographic differentials
State-level data is useful when:
- Your workforce is concentrated in one state but spread across multiple metros
- The state overall is a reasonable proxy for your hiring market
- You need a single benchmark for multi-location equity reviews within one state
Metro-level data (MSA) is the right anchor when:
- You hire primarily in a specific labor market (e.g., Minneapolis–St. Paul, Nashville, Phoenix)
- You want to defend location-specific pay decisions in a jurisdiction with a pay-transparency law
- You are positioning bands against local competitors for the same talent
The critical discipline here is geographic consistency: use the same geographic level for every role in a given band review cycle. Mixing a national P50 for one job family and a metro P50 for another introduces invisible distortions into your internal equity structure.
For a detailed comparison of when to use national versus metro wage data, see national vs. metro wage data.
Step 3 — Read the Wage Percentile Table Correctly
Once you have the right SOC code and geography pulled up in the OEWS data tables, you'll see a row that looks roughly like this (values vary by occupation and geography — these columns are always present):
| Employment | Mean hourly | P10 | P25 | P50 | P75 | P90 |
|---|---|---|---|---|---|---|
| [n] | [$/hr] | [$/hr] | [$/hr] | [$/hr] | [$/hr] | [$/hr] |
Annual wage equivalents are in a separate column set (multiply by approximately 2,080 hours, though BLS uses a slightly different conversion factor — use the annual figures directly rather than computing from hourly to avoid rounding errors).
What each percentile tells you:
- P10 — Entry-level or below-market floor; the bottom 10% of earners. Rarely used as a band anchor; useful for confirming a floor isn't below your actual market.
- P25 — First quartile; often used as a band minimum anchor for an established role, or as the market target for a trainee-to-competent level.
- P50 (median) — The market midpoint. Half of workers in that occupation and geography earn more; half earn less. The P50 is the most common band midpoint anchor.
- P75 — Third quartile; often used as a band maximum anchor, or as the market target for a senior-level or high-performer pay position.
- P90 — Top 10% of earners. Relevant when you are benchmarking a role where you need to compete for highly specialized talent, or building a senior-leadership band.
The single most important discipline in OEWS benchmarking: percentiles describe the population of workers already in that role — not what your specific company should pay. Choosing which percentile to anchor on is a deliberate compensation strategy decision, not a lookup. A company committed to paying at the 60th percentile (between P50 and P75) is making a different talent statement than one paying at P50 — and neither is wrong; both need to be documented.
For more on interpreting wage percentile tables without making common errors, see reading wage percentiles.
Step 4 — Translate OEWS Data Into a Salary Band
This is where BLS OEWS compensation benchmarking moves from data lookup to band construction. The process has three parts: anchor selection, spread calculation, and structure validation.
Anchor selection
Decide where your organization wants to position relative to the market for this role/level combination, then select the corresponding percentile as your band midpoint. Most SMB organizations use P50 (median) as the midpoint for their core band structure — it is the most defensible anchor and the easiest to explain to employees and regulators.
Spread calculation
A salary band has a minimum, a midpoint, and a maximum. Once you have the midpoint, you define the band's range width — the percentage spread from minimum to maximum — and back-calculate the min and max.
A common range width for individual contributor roles is 50%, meaning the maximum is 50% above the minimum. With that structure, the midpoint sits at roughly 133% of the minimum (and 67% of the maximum).
Worked example (illustrative — substitute your actual OEWS figures):
Suppose your OEWS lookup returns a P50 annual wage of $62,000 for a Logistics Operations Analyst (SOC 43-5061) in your metro area. You set a 50% range width.
- Midpoint: $62,000
- Minimum: $62,000 ÷ 1.333 = ~$46,500
- Maximum: $46,500 × 1.50 = ~$69,750
Round to a comfortable increment ($500 or $1,000), validate that the minimum is above your jurisdiction's minimum wage, and confirm the maximum doesn't create compression against the next job level up.
If you'd like to use a 40% spread instead (narrower, appropriate for highly standardized roles), the multiplier for the minimum changes to 1.286; for a 60% spread (broader, common for senior individual contributors where performance variation is wider), it changes to 1.375. The arithmetic is the same — what changes is the deliberate decision about how wide a performance corridor you're building into the band.
For a full walkthrough of how to structure bands from scratch using these anchors, see how to create salary bands and job band structure complete guide.
Structure validation
After computing the band, check two things before finalizing:
- Compa-ratio positioning — Where do your current employees in this role fall within the band? Employees below the minimum (in the "red zone") warrant priority review. A compa-ratio below 0.80 (actual pay divided by band midpoint) is a common threshold for compensation-review escalation.
- Band-over-band compression — Does the maximum of this band overlap with the minimum of the next level up by a reasonable amount? Some overlap (10–25%) is intentional and provides growth headroom; more than 50% overlap can signal that two levels should be consolidated.
For more on where an individual's position within a band signals a risk or opportunity, see band positioning indicator explained.
Step 5 — Account for the Limits of OEWS Data
Using BLS OEWS data well means knowing what it doesn't capture so you can compensate for the gaps.
Total compensation vs. base wage. OEWS measures wages — it does not capture the value of health benefits, 401(k) matches, equity, bonuses, or other non-cash compensation. If you are benchmarking in a competitive talent market where equity or variable pay is a meaningful part of total comp, OEWS base-wage data understates the total package your competitors may be offering. Supplement with source data or document the limitation in your comp philosophy.
Occupational granularity. With ~830 occupations covering the entire U.S. labor force, OEWS is necessarily broad. Highly specialized roles (staff with niche certifications, dual-function roles, emerging job titles) may fit imperfectly into any single SOC code. When a role spans two codes, consider benchmarking against both and taking a weighted average, or use the code that covers the majority of primary duties and document the decision.
Timing. The OEWS annual release covers wages surveyed over a rolling three-year period. In a market where wages moved significantly during the survey window, the published figures may lag. For high-demand roles in volatile labor markets, treat OEWS as a floor or a directional anchor, and supplement with current job-posting data or an industry compensation survey.
Non-metro and rural gaps. Smaller metro areas and non-metro balance areas often have suppressed data (indicated by a * or blank cell in the OEWS tables) when sample sizes are insufficient to publish a reliable estimate. When you encounter a suppressed figure, step up to state-level data.
Step 6 — Build a Repeatable Benchmarking Process
One-time benchmarking is marginally better than no benchmarking. A repeatable, documented annual process is what actually protects you in a pay-transparency audit or a compensation-equity review.
A minimal annual benchmarking cycle for an SMB HR team:
- Pull the new OEWS release each spring after BLS publishes it (typically May). Note the reference year and file it — you want a version history.
- Map every active job title to its SOC code in a single reference document. Review the mapping annually; job content drifts and SOC codes are revised on a roughly ten-year schedule (the next major revision is expected around 2028).
- Run your band midpoints against current OEWS P50 figures for each occupation/geography combination. Flag any midpoint that has drifted more than 10% below current P50 — those are your pay-equity risk flags.
- Document the market positioning decision — whether you are targeting P50, P60, P75, or another anchor — in your compensation philosophy. This documentation is increasingly important for pay-transparency compliance, where regulators may ask how your posted ranges were derived.
- Update bands before your annual merit cycle, not after. Retroactively adjusting bands around merit decisions undermines both the equity value and the legal defensibility of your structure.
If you are benchmarking Canadian roles alongside U.S. positions, Statistics Canada's wage data (Table 14-10-0417-01) provides NOC-based wage percentiles by province and CMA under a comparable methodology. See Statistics Canada NOC benchmarking for how that process differs from OEWS.
Putting It All Together: From OEWS Lookup to Published Pay Range
BLS OEWS compensation benchmarking is not a black box — it is a six-step discipline:
- Match the role to the correct SOC code, reading the official definition carefully.
- Choose the geographic level that matches your actual labor market (national, state, or MSA).
- Read the wage percentile table correctly — P25/P50/P75 as min/mid/max anchors, or whatever positioning your comp philosophy specifies.
- Apply the range-width spread to calculate a min and max from the chosen midpoint anchor.
- Validate structure: compa-ratios, band-over-band compression, jurisdictional minimums.
- Document the methodology and repeat annually.
Done consistently, this process gives you pay ranges that are grounded in government-grade data, auditable, and ready to publish in a pay-transparency posting — without requiring a compensation consultant or an enterprise-tier benchmarking platform.
If you're ready to move from manual OEWS lookups and spreadsheet band-building to a structured tool that maps SOC codes, applies percentile anchors, and outputs formatted band documentation, see how Job Band Builder approaches the process — or start a free trial and run your first band against live OEWS data. ```
Ready to go beyond the guide?
Build a defensible, BLS-benchmarked band structure in under 30 minutes.