NOC Codes vs. SOC Codes: Mapping Occupations Across the Border
Canada uses NOC codes; the US uses SOC codes. Here's how to map the same role across both for bi-national ranges.
Rovaryn Digital · June 18, 2026

Why Your Canadian and US Salary Ranges Probably Don't Match — and What to Do About It
Your Denver-based software engineering team is hiring. So is your Vancouver office — same level, same scope, same reporting line. You open the BLS Occupational Employment and Wage Statistics tool and find the right SOC code in about three minutes. Then you try to replicate the exercise in Statistics Canada's wage database and realize the number your analyst pulled doesn't quite map to the same role. The Canadian code is structured differently, the wage table is in a different format, and no one on the team is certain they're comparing equivalent occupations.
This gap is not a data-quality problem. It is a taxonomy problem: Canada and the United States classify occupations using two entirely different systems — the National Occupational Classification (NOC) and the Standard Occupational Classification (SOC) — and they were built independently, for different purposes, with different structures. Treating them as interchangeable produces ranges that are not grounded in the right benchmark data. In pay-transparency jurisdictions — and both British Columbia and Ontario now have active posting requirements — a range that can't be tied to a defensible methodology is a liability, not an asset.
By the end of this article you will understand how the two systems are structured, where they overlap and diverge, and how to build a repeatable mapping workflow that lets you anchor the same internal role in both datasets for a bi-national salary range.
What the NOC and SOC Systems Actually Are
NOC — National Occupational Classification is Canada's official framework for organizing occupational information. Statistics Canada and Employment and Social Development Canada (ESDC) jointly maintain it. The current version, NOC 2021, introduced a five-tier hierarchy: broad occupational category → major group → sub-major group → minor group → unit group. Unit groups are identified by five-digit codes (e.g., 21232 for software developers and programmers). The NOC is used to classify occupations in the Census, the Labour Force Survey, and — critically for compensation work — the Employee Wages by Occupation dataset published by Statistics Canada.
SOC — Standard Occupational Classification is the US government's equivalent framework, maintained by the Bureau of Labor Statistics and the Office of Management and Budget. The current revision, SOC 2018, organizes occupations into a four-tier hierarchy: major group → minor group → broad occupation → detailed occupation. Detailed occupations carry six-digit codes (e.g., 15-1252 for software developers). The BLS Occupational Employment and Wage Statistics (OEWS) program — the source of the national and state-level wage percentiles used in salary-range methodology — is built entirely on SOC 2018 codes.
Neither system is a translation of the other. They were developed by different governments for different national labour market contexts. That means you cannot assume a five-digit NOC code and a six-digit SOC code refer to the same scope of work just because the job titles sound similar.
How the Two Taxonomies Differ in Structure
Understanding four structural differences prevents the most common mapping errors.
Hierarchy depth. SOC 2018 has four tiers; NOC 2021 has five. The extra tier in NOC gives it more granularity at the sub-major group level, which means a single SOC broad occupation can span two or more NOC minor groups — and vice versa.
Code length and format. SOC codes are always six digits, formatted with a hyphen after the first two (e.g., 15-1252). NOC 2021 codes are five digits, with no hyphen in the standard presentation (e.g., 21232). If you are building a crosswalk in a spreadsheet, store both as text strings, not numbers — leading zeros matter in some codes, and number formatting will silently corrupt them.
Skill-level vs. functional grouping. Earlier NOC versions (NOC 2016 and before) organized occupations partly by a "skill level" dimension (A through D, plus 0 for management), which was visible in the code structure. NOC 2021 replaced that with a "Training, Education, Experience and Responsibilities" (TEER) dimension, embedded in the second digit of the five-digit code. SOC uses no equivalent skill-level dimension — it groups occupations purely by the nature of work performed. This matters when you are mapping: a managerial role and a technical specialist role that share a job family may occupy adjacent NOC unit groups but very different SOC detailed occupations.
Wage data availability by geography. BLS OEWS produces annual estimates for all 50 states, 400+ metropolitan statistical areas, and the national level — all keyed to SOC codes. Statistics Canada's Employee Wages by Occupation (NOC) dataset covers national, provincial, and some sub-provincial geographies — but the depth of geographic detail available at the unit-group level varies by NOC code and reference year. Before you build a provincial range, confirm that the specific unit group you need has a publishable provincial estimate in the current reference year; for some low-employment unit groups, Statistics Canada suppresses the estimate to protect confidentiality.
noc codes vs soc codes: A Side-by-Side Mapping Example
The clearest way to illustrate the structural gap is with a concrete role. Take a software developer — a common bi-national hire.
| Dimension | US (BLS SOC 2018) | Canada (NOC 2021) |
|---|---|---|
| Code | 15-1252 | 21232 |
| Title | Software Developers | Software developers and programmers |
| Hierarchy tier | Detailed occupation (tier 4 of 4) | Unit group (tier 5 of 5) |
| Wage data source | BLS OEWS, May 2024 release | Statistics Canada Employee Wages by Occupation (NOC) |
| National median | $133,080 USD (BLS OOH, May 2024) | [See Statistics Canada NOC dataset — confirm current figure and reference year at source] |
| Currency | USD | CAD |
| Geographic detail | National + 50 states + 400+ MSAs | National + provincial (availability varies) |
BLS OEWS figures: BLS Occupational Outlook Handbook, May 2024. Wage data for SOC 15-1252 reflects national estimates. Readers should confirm the current release at bls.gov/oes.
Source: Statistics Canada, Employee Wages by Occupation (NOC). Reproduced and distributed on an "as is" basis with the permission of Statistics Canada. Readers should confirm current NOC wage figures at https://open.canada.ca/data/en/dataset/f0f63701-d4bd-416b-8ed2-7a09f74abc6e.
The mapping looks clean here — but it often does not. Software developer is a relatively well-bounded occupation in both systems. The challenge increases for roles that span functional areas (e.g., a "People Operations Manager" who does both HR management and HRIS administration), for emerging roles with no direct precedent in either taxonomy, and for generalist roles common in small businesses that sit at the intersection of two or three NOC unit groups or SOC detailed occupations.
A Repeatable Workflow for Bi-National Occupation Mapping
The goal is not a perfect one-to-one crosswalk — in many cases that does not exist. The goal is a documented mapping decision that you can reproduce, explain to counsel, and update when either taxonomy changes.
Step 1: Anchor in job duties, not job titles. Internal job titles are not standardized. "Senior Associate" means something different in professional services, financial services, and a tech startup. Before you look up any code, write two to four sentences describing the core duties of the role: what the worker does most of the time, what decisions they make, what they supervise. This duty description is what you are classifying, not the title on the offer letter. For a deeper walkthrough of the US side of this step, see How to Map SOC Codes to Job Titles.
Step 2: Find the SOC code using BLS resources. Use the BLS SOC search at bls.gov/soc and the OEWS query tool at bls.gov/oes to find the detailed occupation whose definition best matches the duty description. Note the six-digit code, the definition, and the occupations explicitly included and excluded in the BLS notes for that code — those include/exclude lists are the most reliable boundary markers in the system.
Step 3: Find the NOC unit group using Statistics Canada resources. Navigate to the Statistics Canada NOC 2021 classification structure (www23.statcan.gc.ca/imdb/p3VD.pl?Function=getVD&TVD=1297224). Search by keyword and read the "Lead statements" and "Example titles" in the unit group — these serve the same boundary-marking function as the BLS include/exclude lists. Do not rely on keyword matching alone; two unit groups can share a keyword but describe very different scopes of work. For a guide to pulling wage data once you have your NOC code, see Statistics Canada NOC Wage Data Guide.
Step 4: Document the mapping decision in writing. Record: internal job title, duty description used, SOC code selected and why, NOC unit group selected and why, any alternative codes considered and ruled out, and the date of the mapping. This document is what your employment attorney asks for when a pay-transparency audit begins. If the role genuinely spans two NOC unit groups, document that judgment call — explain which unit group better captures the majority of the work, and note the alternative.
Step 5: Pull wage data from each source independently. US wages come from BLS OEWS (keyed to the SOC code, reported in USD). Canadian wages come from the Statistics Canada Employee Wages by Occupation dataset (keyed to the NOC unit group, reported in CAD). Never blend or average these two series. Present them as two separate benchmarks in two separate currencies. A bi-national range document should have two sections: one for each country, each with its own data source, reference year, geography, and currency notation. For the full methodology of building a range once you have the wage data in hand, see How to Build a Salary Range.
Pay Transparency Adds a Deadline to This Work
Documenting your NOC-to-SOC mapping is not purely a compensation-methodology exercise. It is also a compliance exercise in every jurisdiction that mandates posted salary ranges.
British Columbia's Pay Transparency Act has required employers to include an expected salary or wage — or a range — on all publicly advertised postings since November 1, 2023. Open-ended ranges ("$20/hr and up") are explicitly prohibited. Ontario's rules take effect January 1, 2026, requiring employers with 25 or more employees to disclose expected compensation or a range, with the additional constraint that a posted range cannot exceed $50,000 unless the role or the top of the range pays over $200,000 annually. In both provinces, a posted range with no documented methodology is difficult to defend if your compliance records are ever reviewed.
For a full breakdown of the British Columbia requirements, see British Columbia Pay Transparency Act. Always confirm the current rules with the BC Pay Transparency office, the Ontario Ministry of Labour, or qualified employment counsel before acting — requirements and thresholds can change.
Where the Salary Range Builder Workbook Fits In
If your team is building bi-national ranges manually, the mapping workflow above is exactly what the Salary Range Builder Workbook (Excel) is structured around. The workbook includes dedicated fields for both the SOC code and the NOC unit group, space to document the mapping rationale, and separate tabs for US and Canadian benchmark inputs — keeping the two wage series and their currencies cleanly separated throughout the build. It is a practical starting point if you are working through the mapping process for the first time or want a documented template to hand to counsel.
For a broader view of all the compensation methodology resources on this site, the Salary Range Resource Hub is the right place to start.
Stay Current as Both Taxonomies Evolve
NOC 2021 is a significant structural revision from NOC 2016 — the five-digit unit group codes are not backward-compatible with the four-digit codes in the previous version, and any crosswalk built before 2022 needs to be re-verified. The BLS conducts periodic SOC revisions as well; the current version is SOC 2018, and the BLS SOC Policy Committee publishes revision updates at bls.gov/soc. If you are maintaining a compensation structure over multiple years, build a taxonomy review into your annual range-update cycle — treat a code change the same way you would treat a change in a pay-transparency law: something to catch before your next posting cycle, not after.
Subscribe to the Salary Range Builder newsletter for plain-English updates when either taxonomy publishes a revision, when BLS OEWS releases new occupation percentile data, or when a Canadian province updates its pay transparency posting requirements. Use the signup form below to stay on the list.
Get new guides in your inbox
One email when a new article goes live. Unsubscribe with one click.


