JobBands.comJob Band Builder
Benchmarking & Market Data

How to Match Your Jobs to SOC Codes for Accurate Benchmarking

Job Band Builder Team10 min read

Why the SOC Code You Pick Determines Whether Your Benchmarks Mean Anything

Picture this: your company has a role called "Talent Acquisition Partner." You're building salary bands for the first time, you pull up the BLS Occupational Employment and Wage Statistics tool, and you search for that title. Nothing comes back. So you scroll until something looks close — "Human Resources Specialists" — and you use that median as your anchor.

Six months later, a recruiter candidate counters your offer with a number 18% higher than your midpoint. She shows you what recruiting coordinators at her last company earn. Your band wasn't wrong because your math was off. It was wrong because "Human Resources Specialists" covers a broad population that includes HR coordinators, policy administrators, and benefits processors — not specialist-level recruiting professionals. You benchmarked the wrong occupation entirely.

The SOC code is the bridge between your internal job title and the federal wage data that makes a salary band defensible. Get the code right and your bands reflect the actual labor market. Get it wrong and you're building structure on a faulty foundation — one that will surface in lost offers, compression complaints, or pay-equity challenges. This article gives you a practical method to match jobs to SOC codes accurately, every time.


What the Standard Occupational Classification System Actually Is

The Standard Occupational Classification (SOC) system is the federal taxonomy that organizes every paid job in the U.S. economy into a consistent hierarchy. The Bureau of Labor Statistics uses SOC codes as the backbone of the Occupational Employment and Wage Statistics (OEWS) program, which produces annual wage estimates for approximately 830 occupations across the nation, all 50 states, and roughly 530 metropolitan and nonmetropolitan areas, drawing on a sample of approximately 1.1 million establishments.

That coverage is what makes OEWS the most practically useful free benchmarking dataset available to an HR team at a 25–250-person company. But the data is organized by SOC code, not by your job titles — which is why accurate matching is the prerequisite for everything else.

The hierarchy has four levels:

  1. Major group — broad occupational domains, identified by a two-digit prefix (e.g., 13-0000: Business and Financial Operations)
  2. Minor group — a subdivision of the major group (e.g., 13-1070: Human Resources Workers)
  3. Broad occupation — narrows further (e.g., 13-1071: Human Resources Specialists)
  4. Detailed occupation — the most specific level, where SOC codes end in a non-zero digit (e.g., 13-1141: Compensation, Benefits, and Job Analysis Specialists)

OEWS wage data exists at the detailed-occupation level where sample size permits. For some roles — particularly in smaller specialty areas — BLS publishes data only at the broad-occupation level. Knowing this helps you understand when the most specific code available is still a reasonable match, and when it is a proxy.

Benchmarking accuracy begins with taxonomic accuracy. A wage estimate is only as useful as the occupational definition it describes.


The Four-Step Method to Match Jobs to SOC Codes

Step 1 — Start with the BLS SOC search tool, not your job title

Resist the temptation to type your internal job title directly into the OEWS data explorer. Internal titles vary enormously across companies ("Revenue Operations Analyst," "Commercial Finance Partner," "FP&A Specialist" can all describe overlapping work), and BLS doesn't catalog those variations. Instead, go to the BLS SOC search tool at bls.gov/soc and search by the work performed, not the title.

Describe what the employee actually does in functional terms:

  • Analyzes pay equity and recommends compensation ranges → likely 13-1141 Compensation, Benefits, and Job Analysis Specialists
  • Writes and maintains employment policies and handles employee relations issues → likely 11-3121 Human Resources Managers (if managing) or 13-1071 Human Resources Specialists (if individual contributor)
  • Recruits, screens, and coordinates hiring → likely 13-1071 Human Resources Specialists or, for dedicated recruiting leads, 13-1074 Farm Labor Contractors is clearly wrong — always read the definition, not just the title

The title is a hint. The definition is the source of truth.

Step 2 — Read the full SOC definition before confirming a match

Every SOC code has an official definition that lists what workers in that occupation do and, critically, what is excluded. BLS publishes the full 2018 SOC definitions at bls.gov/soc/2018/soc_2018_definitions.pdf. Before you lock in a code, read three things:

  1. The occupational definition — the summary description of the work.
  2. Illustrative examples — specific job titles BLS associates with this code.
  3. Exclusions — roles specifically not covered (e.g., "Compensation Managers" are excluded from 13-1141 and have their own code, 11-3111).

If your role's core duties map to the definition and it appears in the illustrative examples, you have a strong match. If your role straddles two definitions, choose the code that best represents the primary duty — the work that accounts for the majority of time and the highest-value output.

Step 3 — Cross-check the wage data at neighboring codes before committing

Once you have a candidate SOC code, pull the wage data from the OEWS explorer (bls.gov/oes) for your state or metro area and also pull the one or two adjacent codes that were close matches. Compare the 25th, 50th (median), and 75th percentile wages.

If adjacent codes produce substantially different wage profiles, that divergence is a signal — it means the taxonomy is doing meaningful work and you need to be precise. If the profiles are close, a reasonable match at either code will yield defensible bands.

This step also surfaces the "wrong-direction" error. A common one: matching a senior individual contributor to a managerial code because the managerial title sounds more prestigious, which inflates the benchmark and creates a midpoint the company cannot sustain or justify. The OEWS data for a management code will reflect a population that includes experienced managers at large organizations; using it as a target midpoint for an IC role at a 60-person company sets an anchor that will create compression the moment you hire anyone above that role.

For more on reading the percentile columns once you have the right code, see our guide to reading wage percentiles from OEWS data.

Step 4 — Document your match rationale

This step is the one most teams skip, and it is the one that saves them the most time in year two. For each role, record:

  • The SOC code selected
  • The primary duty language from the definition that justified the match
  • The codes you considered and rejected, with a one-line reason
  • The date the match was confirmed (SOC definitions are updated on a defined cycle; the current standard is SOC 2018)

This documentation becomes your audit trail when a manager disputes a salary band ("why is our Software Developer benchmarked against 15-1252 and not 15-1299?"), when you update bands annually, and when a pay-equity audit asks how your benchmarks were constructed.


Common Matching Mistakes — and How to Avoid Them

Anchoring on title similarity instead of duty alignment. "Operations Manager" sounds like a match for 11-1021 (General and Operations Managers), but if your Operations Manager spends 80% of their time on logistics scheduling, a better match may be 11-3071 (Transportation, Storage, and Distribution Managers). Title-first matching is the most common source of benchmark drift.

Using a catch-all code when a specific one exists. SOC 15-1299 ("Computer Occupations, All Other") is a residual category for roles that genuinely don't fit anywhere in the software/IT taxonomy. Many companies use it as a default for any technical role they can't immediately place. Before using any "All Other" code, work through the specific codes in that minor group systematically. OEWS data for residual codes tends to have higher variance because it pools a heterogeneous population.

Matching to a code with suppressed wage data and not recognizing it. BLS suppresses OEWS estimates when sample size is insufficient to produce a reliable estimate — you'll see ** in the data table instead of a number. If your target code is suppressed for your state or metro area, move up one level in the hierarchy to the broad occupation, check whether national data is available, or use a larger geographic area as a proxy. None of these are perfect substitutes, but they are better than fabricating a number.

Confusing the SOC hierarchy with a job-leveling framework. SOC codes describe what work is done, not how senior the worker is. The difference between a Band 2 and Band 4 HR Generalist at your company will not be captured by two different SOC codes — both may correctly map to 13-1071. Level differentiation comes from how you position within the wage range (e.g., at the 25th percentile vs. the 75th) and from your internal band structure. For a full walkthrough of that process, see our guide on how to create salary bands.


A Worked Example: Matching a "Payroll & Benefits Coordinator" Role

Suppose you have a role called "Payroll & Benefits Coordinator" at a 90-person manufacturing company in Ohio. The employee processes semi-monthly payroll, administers the 401(k) and health plan enrollments, and handles employee questions on benefits. Let's walk the four steps.

Step 1 — Search by work performed. The primary duties split across two areas: payroll processing and benefits administration. Search for "payroll" and "benefits" at bls.gov/soc.

Step 2 — Read the definitions.

  • 43-3051 Payroll and Timekeeping Clerks — compile and post wage data; prepare payroll checks. This is transactional payroll processing.
  • 13-1141 Compensation, Benefits, and Job Analysis Specialists — administer employee benefits programs, evaluate jobs, and conduct pay equity analyses.
  • 13-1071 Human Resources Specialists — broadly covers HR generalists who may handle benefits as one of several duties.

The role in question is primarily a coordinator-level position executing benefits enrollment and payroll runs — not designing benefit programs or conducting job analysis. 43-3051 fits the payroll processing duty; 13-1141 overshoots on the analytical and design dimensions. A strong case can be made for 43-3051 if payroll is the dominant duty, or for 13-1071 if the HR generalist character of the role (managing employee inquiries, liaising with the broker) is primary. The documentation in Step 4 captures this judgment call explicitly.

Step 3 — Compare wage profiles. Pull 43-3051 and 13-1071 for Ohio. If the Ohio median for 43-3051 is meaningfully lower than for 13-1071, and your role genuinely spans both, your midpoint decision carries real financial consequence — exactly why you document the primary-duty rationale.

Step 4 — Document. Record both codes considered, the primary-duty reasoning, and the final selection. If the role expands toward more analytical benefits work in future, the record tells the next person exactly when and why a code re-evaluation is warranted.


Using SOC Codes Alongside Canadian NOC Codes

If you have employees in Ontario or British Columbia, BLS OEWS data does not apply to those roles. The Canadian equivalent is the National Occupational Classification (NOC) system, maintained by Statistics Canada, which structures occupations by skill type and skill level rather than by industry sector. The matching logic is similar — read the definition, align on primary duties, document the rationale — but the taxonomy and the source data (Statistics Canada Table 14-10-0417-01) are distinct from the SOC/OEWS framework.

For a full walkthrough of the NOC system and Canadian wage benchmarking, see our guide to Statistics Canada NOC benchmarking.


From SOC Code to a Defensible Salary Band

Matching jobs to SOC codes is not the destination — it is the prerequisite. Once you have the right code, you can pull reliable wage percentiles from OEWS, choose a competitive positioning (typically 50th–75th percentile depending on your talent strategy and budget), and build a min/mid/max band with a documented, reproducible rationale.

That full process — selecting a midpoint, calculating range width, building multi-level band structures — is covered in our complete guide to job band structure and our step-by-step walkthrough on using BLS OEWS data for benchmarking.

Job Band Builder automates the SOC-to-OEWS pull so you can confirm a code match and generate a draft pay band in the same workflow — no manual data exports, no formula errors, no suppressed-data surprises you miss because you're working in a spreadsheet. If you're ready to move from a manual matching process to a structured, auditable system, start a free trial at app.jobbands.com/signup. ```

Ready to go beyond the guide?

Build a defensible, BLS-benchmarked band structure in under 30 minutes.