Every federal contract is tagged with a NAICS code. That single six-digit number controls who can bid, whether the contract is reserved for small businesses, and which set-aside programs apply. Pick the wrong codes when you register on SAM.gov and you simply will not see opportunities you could otherwise win. Pick the right ones and the system surfaces work that fits what you actually do.
This guide walks through what NAICS codes are, why they govern federal procurement, how to choose the codes that fit your business, and the practical traps to avoid—including the vintage problem in SAM.gov data and the procurement-pattern codes that Contracting Officers use in practice.
What NAICS codes are
NAICS stands for the North American Industry Classification System. It is a six-digit code used to classify a business by what it produces or sells. The system is maintained jointly by the United States, Canada, and Mexico and is updated on a five-year cycle. For federal contracting today, two vintages still matter: 2017 (used on legacy and ongoing awards) and 2022 (used on most new procurements). More on the vintage problem below.
The six digits are not arbitrary. They form a strict hierarchy:
- 2-digit sector—e.g.
51Information - 3-digit subsector—e.g.
513Publishing Industries - 4-digit industry group—e.g.
5132Software Publishers - 5-digit industry—e.g.
51321Software Publishers - 6-digit national industry—e.g.
513210Software Publishers (U.S. national level)
Federal contracting uses the full six digits. The first five are the same across the three NAFTA/USMCA countries; the sixth digit captures country-specific differences.
Why NAICS codes matter for federal contracts
When a Contracting Officer writes a solicitation, they pick one NAICS code that best describes the work. That choice has three downstream effects:
- Eligibility.Many opportunities are filtered by NAICS—either as a hard requirement (you must have the code registered in SAM.gov) or as a soft filter (search engines and matching tools key off it). On this site you can filter the federal contract feed by NAICS directly.
- Size standard.Each NAICS code maps to a small business size threshold set by the SBA. The threshold attached to the contract’s NAICS determines whether you count as “small” for that specific opportunity.
- Set-aside eligibility. Most federal set-asides (8(a), HUBZone, SDVOSB, WOSB, and small business) require you to be small under the contract’s NAICS—not just “small in general.”
NAICS also appears on every public procurement notice, so it shows up across every stage of the federal notice lifecycle—from Sources Sought through Award.
How to find your NAICS code(s)
Most companies fall under several codes, not one. The goal is to identify every code under which you can credibly deliver work, then register all of them.
Method 1: Census NAICS search
The official lookup lives at census.gov/naics. Search by keyword (“software,” “HVAC maintenance,” “technical writing”) and the system returns matching six-digit codes with definitions and examples.
Method 2: Reverse-engineer from past contracts
More useful in practice: look at past federal awards in your space and note which NAICS codes the Contracting Officers actually used. Two companies that do nearly identical work often get filed under different codes depending on the buying agency’s preference. Search public award data for a few competitors and you’ll see a cluster of three to six codes—that cluster is the real-world set you should register under.
Method 3: Read the SBA size-standards table
The SBA publishes a single PDF (the “Table of Small Business Size Standards”) that lists every NAICS code with its threshold. Skimming the codes near yours often reveals adjacent industries you also serve.
The 2017 vs 2022 vintage problem
NAICS is revised every five years. The 2017 and 2022 revisions are both still alive in federal data: SAM.gov retains 2017 codes on legacy contracts and registrations that haven’t migrated, while newer solicitations increasingly use 2022 codes. If you only register under one vintage, you may miss filtered searches against the other.
The cleanest example is software publishing:
- 511210— Software Publishers (2017 vintage)
- 513210— Software Publishers (2022 vintage)
Same industry, renumbered. A vendor that only carries 513210 will be invisible to procurement systems still filtering on 511210, and vice versa. The fix is mechanical: register under both.
Another common renaming: 517311 Wired Telecommunications Carriers (2017) became 517111 Wired Telecommunications Carriers (2022). Telecom vendors should carry both.
Until SAM.gov fully migrates legacy records to 2022 codes—which is a multi-year process—assume any code with a 2017-to-2022 change needs to be registered under both vintages.
Size standards: how NAICS determines if you’re a “small business”
Each NAICS code is tied to a size standard set by the Small Business Administration. The standard is either revenue-based (averaged over the last five completed fiscal years) or employee-count-based, depending on the industry.
This matters because most federal small business set-asides require you to be small under the NAICS code attached to the specific contract you’re bidding on. You can be small under one NAICS and large under another—and that determination is made contract by contract.
A few well-known thresholds:
| NAICS code | Industry | Size standard |
|---|---|---|
| 541512 | Computer Systems Design Services | $34M average annual revenue |
| 541330 | Engineering Services | $25.5M average annual revenue (approx.) |
| 541611 | Administrative Management Consulting | $24.5M average annual revenue (approx.) |
| 513210 | Software Publishers | $47M average annual revenue (approx.) |
| 336411 | Aircraft Manufacturing | 1,500 employees |
| 237310 | Highway, Street, and Bridge Construction | $45M average annual revenue (approx.) |
Two things to notice. First, the thresholds are not uniform—manufacturing codes typically use employee counts (often 500 to 1,500 employees), while services codes use revenue (most fall between $9M and $47M). Second, the numbers change. SBA adjusts them periodically for inflation; always check the current SBA size standards table before relying on a specific figure.
Procurement-pattern matching: what Contracting Officers actually use
This is the part most NAICS guides skip, and it’s the most valuable thing in this article.
The NAICS code on a contract is whatever the Contracting Officer decided fit best—and contracting offices have habits. The code that most accurately describes your product is often not the code the agency files the procurement under.
The clearest example is SaaS:
- A pure-play software publisher is, on paper, 511210 (2017) or 513210 (2022).
- But a large share of federal SaaS and IT procurements get filed under 541512Computer Systems Design Services, because federal IT shops are organized around “systems design” and that’s the code they’re used to using.
- Some get filed under 541519 Other Computer Related Services or 541511 Custom Computer Programming Services, depending on the agency.
The same pattern holds elsewhere. Education-focused software often appears under 611710 Educational Support Services or 611420 Computer Training rather than the software codes. Cybersecurity products show up under 541512 or 541519 far more often than under any security-specific code. Cloud infrastructure resellers often land under 518210 Computing Infrastructure Providers, but also under 541519.
The takeaway: don’t just register under the code that best describes your product. Register under the codes the buying agencies actually use to procure your product. Those are usually a superset. Reading actual solicitations is the fastest way to learn which codes your buyers prefer—our guide to reading a federal RFP covers what to look for in Sections C and M.
NAICS on SAM.gov: the practical workflow
SAM.gov— the System for Award Management—is where the federal government stores your NAICS codes. The registration flow asks you to designate one primary NAICS plus any number of additional codes.
The primary code is mostly for reporting and self-classification. It doesn’t restrict what you can bid on. What matters for bidding is the full list: when a Contracting Officer files a solicitation under NAICS X, your business is eligible (assuming size and other requirements check out) if X is on your registered list.
Practical workflow when you register on SAM.gov:
- List every code that describes work you can credibly deliver today.
- Add the procurement-pattern codes for your industry (541512 for most IT vendors, etc.) even if they aren’t the most precise fit.
- For every code with a 2017/2022 rename in your space, register both vintages.
- Designate the single code that best represents your core revenue as the primary.
- Re-check your list every year. Both your business and the NAICS table change.
Common mistakes
1. Registering under too few codes
The most common mistake. Companies pick the two or three codes that most precisely describe their product and stop there. They never see the contracts filed under adjacent or pattern-based codes.
2. Registering under codes you can’t actually deliver
The opposite mistake. Carrying NAICS codes for work you can’t perform doesn’t magically qualify you to bid—and if you win a contract you can’t deliver, you have a much worse problem than a missed opportunity. Be honest about scope.
3. Ignoring the 2017/2022 vintage mismatch
511210 and 513210 are the same industry, but they’re different records in SAM and different filters in search systems. Carrying only one cuts your visibility in half. Same with 517311 / 517111 and the other renamed codes.
4. Ignoring procurement-pattern codes
If you sell SaaS and you’re not registered under 541512, you are invisible to a large share of federal SaaS demand. The code that best describes your business and the code the government uses to buy your business are not always the same code.
5. Treating the primary NAICS as load-bearing
Your primary NAICS code matters for self-reporting and for some certifications, but it does not limit which contracts you can bid on. The full registered list is what counts during eligibility checks.
Putting it together
NAICS codes are the routing layer of federal procurement. They decide which contracts show up in your search results, which thresholds determine whether you’re “small,” and which set-asides you can compete for. The mechanics are simple—six digits, an SBA threshold, a SAM.gov registration—but the practical details (vintage mismatches, procurement-pattern codes, contract-by-contract size determinations) are where most vendors lose visibility they didn’t know they had.
Get the list right and federal demand starts showing up. You can search current opportunities filtered by NAICS to see what’s active in your codes today.