
Aug 25, 2026 ● hireCNC
CNC Machinist Pay: What Shops Are Actually Posting
Most pay pages you’ll find are built the same way. Somebody takes a government average, rounds it off, and writes a thousand words around it.
I run a job board for machinists. So I did something simpler: I went through every job on it and pulled the pay range out of the ad.
That’s 405 live postings I could read. 306 of them name a number. Here’s what those numbers say.
Last checked: August 2026. We re-run this quarterly and change the figures when they move.
The short answer
Across 261 shop-floor postings with pay attached, the middle of the range is $33.50 an hour.
The typical ad runs $28.00 to $38.65. About a ten-dollar spread, which tells you the range is doing real work — it’s the gap between somebody who can run the job and somebody who can set it up and fix it.
A quarter of postings sit below $29 in the middle of their range. A quarter sit above $40.
What the jump between jobs is actually worth
This is the part I’d want if I were a machinist, and it’s the part nobody can publish without a board full of ads.
| Role | Postings | Median |
|---|---|---|
| CNC operator | 9 | $23.50 |
| Mill (VMC / HMC) | 43 | $30.50 |
| Swiss | 22 | $32.00 |
| Lathe / turning | 20 | $32.63 |
| Setup machinist | 39 | $33.00 |
| Grinder | 9 | $33.00 |
| CNC machinist (general) | 50 | $33.50 |
| Quality / inspection | 15 | $34.00 |
| CNC programmer | 48 | $39.75 |
| Manufacturing engineer | 18 | $47.79 |
Operator to setup is about $9.50 an hour. Setup to programmer is another $6.75.
Put together, that’s roughly $16 an hour between running a machine somebody else set up and programming the job yourself. On a 2,080-hour year, call it $34,000.
That’s the whole argument for learning setup. It’s not a title change, it’s the biggest raise available to you, and it’s available at almost every shop on this list.
Two things I’d point out about that table.
The operator number is built on nine postings. Treat it as a direction, not a decimal. Most shops don’t advertise operator roles on a machinist board — they hire those locally.
Swiss doesn’t show a premium here, and I expected it to. Swiss postings run $26.07 to $38.00 at the median against $26.50 to $37.65 for general machinist work. Essentially the same. I’ve said before that Swiss pays better, and on our own posted ranges I can’t support that. Either the premium shows up after the offer rather than in the ad, or the shops paying it are the ones not printing a number. I’d rather tell you that than round the number in a direction that suits the story.
By state
Shop-floor roles only, states with at least six postings:
| State | Postings | Median |
|---|---|---|
| California | 40 | $40.00 |
| Illinois | 12 | $39.25 |
| New Jersey | 8 | $38.00 |
| Massachusetts | 20 | $35.00 |
| Virginia | 7 | $34.00 |
| Indiana | 13 | $33.00 |
| Connecticut | 23 | $33.00 |
| Michigan | 23 | $32.50 |
| Kentucky | 6 | $32.50 |
| Pennsylvania | 10 | $31.75 |
| North Carolina | 6 | $31.50 |
| Wisconsin | 15 | $30.50 |
| Texas | 19 | $30.00 |
| Ohio | 11 | $27.50 |
| Minnesota | 7 | $25.77 |
California is $14 an hour clear of Minnesota, and that’s before you think about what a house costs in either place. Don’t read this column as where to move. Read it as what to ask for once you know where you’re going.
One that stuck out. Minnesota is bottom of this table and it’s also where we see the most Swiss work. More demand than anywhere and the lowest posted pay on the board. I don’t have a clean explanation. If you run a shop in Minnesota, that gap is your hiring problem in one number.
How this compares to the government figure
The Bureau of Labor Statistics puts the median machinist at $56,150 a year — about $26.99 an hour — as of May 2024. Machinists and tool and die makers together come in at $27.74 an hour.
Our board says $33.50.
That’s roughly 24% higher, and I want to be straight about why, because it isn’t because shops on our board are unusually generous.
BLS measures what the whole existing workforce earns, including everybody who’s been in the same seat for eleven years without asking for a raise. A job ad measures what an employer will offer when they’re actively short a person and competing for them.
Those are two different numbers. The gap between them is roughly the cost of not moving.
Worth knowing alongside that: BLS has machinist employment declining 2% through 2034, with about 34,200 openings a year — and every one of those openings from people leaving the trade, not from growth. That matches what I see. The shortage isn’t a boom. It’s retirement.
Three quarters of shops post a number. Post the number.
306 of 405. The field is optional on our board and 76% fill it in.
I mention it because the shops that skip it usually think they’re keeping their options open, and what they’re actually doing is losing the reader.
A machinist scrolling job ads at 9pm has been told “competitive pay” a hundred times. He knows it can mean anything. So when there’s no number he does the safe thing and assumes it’s less than he’s making now, and he keeps scrolling. You never hear from him and you never find out why.
You’re not protecting your negotiating position. You’re paying to be skipped.
And if you’re worried the number is low — that’s not a posting problem. That’s the actual problem, and hiding it costs you the applicants who’d have taken it anyway.
If you’re a machinist: ask the number in the first conversation. Not the third. And when you get to the interview, these are the questions shops actually ask.
What I’d do with this page
If you’re looking: find your role in the first table, find your state in the second, and take the higher of the two as your number. If your current rate is under both, you have a straightforward conversation to have — either where you are or somewhere else.
If you’re hiring: find your state’s median. If your range tops out below it, that’s why the seat has been open five months. It isn’t the job market.
How I got these numbers
Every live job posting on hireCNC as of August 2026 — 412 of them — read directly for the pay range in the ad. 405 parsed. 306 named a figure. Annual salaries converted at 2,080 hours. Every figure above is the midpoint of a posted range, and every group shows how many postings it rests on so you can weigh it yourself.
Two caveats I’d want if I were reading this. 32 of the 261 employers picked a five-dollar band from a dropdown rather than typing a range, so those are less precise than the rest. And a job board sees the shops that advertise — it doesn’t see the shop down the road that hires by word of mouth.
No survey, no panel, no estimates. If a number here is wrong, it’s because an employer typed it wrong, and you can go read the ad.
hireCNC lists CNC machining jobs across the U.S. and Canada, and runs the MACHINIST group — the largest machinist community on Facebook.


