Back to blog

How to Calculate Labor Cost per Job

9 minutes read

Key takeaways

  • Labor cost per job equals hours logged against the job multiplied by a fully burdened hourly rate, not the base wage.
  • Burden rate is total annual burden costs divided by total annual wages; a $25/hour machist with $14,700 of burden costs $32/hour.
  • Payroll taxes, workers comp, and benefits belong in the burdened wage; rent, utilities, and depreciation belong in a separate overhead rate.
  • Overtime hours must be costed at 1.5x the regular rate plus burden, or jobs that run into Saturday hours will look cheaper than they are.
  • Actual hours by job number from shop-floor clock-in data keep the calculation honest; estimated timesheets make per-job labor cost a guess.

To calculate labor cost per job, multiply the hours logged against that job by a fully burdened hourly rate: base wage plus payroll taxes, benefits, and shop overhead. Most shops price off the wage alone and understate labor cost by 30-50%. This walkthrough builds that burdened rate step by step, then charges it to one job on a real work order.

What counts as labor cost beyond the hourly wage?

Labor cost per job is gross wages plus payroll taxes, workers comp, benefits, and paid time the employee was not on a machine. If you cost jobs at the hourly wage alone, you understate labor cost by a wide margin and your job costing is wrong from the start.

Direct wages vs gross wages

Direct wages are what the employee earns on the job number. Gross wages are direct wages plus overtime premiums and any shift differential. Both come straight from your time entries, which is why accurate clock-in/clock-out by job matters before any math starts.

Payroll taxes and workers comp

Employers pay FICA (6.2% Social Security plus 1.45% Medicare) and FUTA on top of wages, per IRS guidance on employment taxes. Add your state unemployment rate and your workers comp class rate.

Benefits and paid time off

Health insurance, PTO, and shop-wide paid hours (safety meetings, cleanup) get spread across productive hours as a burden rate. Shops that skip this end up quoting at direct wage only; a tool like MinuteMill captures the hours, and where it fits against alternatives like Hubstaff is covered at https://minutemill.com/vs/hubstaff.

How do you calculate a fully burdened hourly rate?

The burden rate formula

Start with the wage, then add everything you pay on top of it: payroll taxes, workers' comp, benefits, and paid time off.

Burden rate = total annual burden costs ÷ total annual wages

Then fold that into the hourly rate:

Burdened hourly rate = hourly wage × (1 + burden rate)

Worked burden rate example

Say a machinist earns $25/hour, about $52,000 a year. Add typical burden costs:

CostAnnual amount
Payroll taxes (FICA, FUTA, SUTA)$4,100
Workers' comp$2,600
Health insurance share$6,000
Paid time off$2,000
Total burden$14,700

Burden rate = $14,700 ÷ $52,000 = 0.28, or 28%. Burdened hourly rate = $25 × 1.28 = $32/hour.

Why burden changes the picture

A 28% gap is the difference between quoting a job at break-even and quoting it at a loss. If your shop runs lighter on benefits or heavier on workers' comp, your number moves, so run it with your own figures. Once you have a burdened rate per employee, you can multiply it by labor hours per job to get true labor cost. Tools like MinuteMill track those hours by job and employee on the shop floor; see how it compares to Workyard (https://minutemill.com/vs/workyard) if you are weighing options.

How do you allocate labor cost to a specific job?

The allocation itself is simple arithmetic: burdened hourly rate × hours logged against that job number. If your burdened rate is $34.20 and an employee logged 3.5 hours on work order #2214, that job carries $119.70 of labor cost. The hard part is getting the hours right, because the job number only appears if the employee actually clocked in and out on the right work order as they moved around the shop floor.

Hours by job number

Each time entry needs three fields: employee, job number, and start/stop. With MinuteMill, employees tap start, stop, or switch on their phones, so the hours land on the job number in real time instead of being estimated later. That matters because even good employees estimating hours after the fact introduces costly errors (Datamation). If you're comparing tools, our ClockShark comparison covers how shop-floor time entry differs from field-service setups.

Handling corrections and missed clock-ins

Real shops need edits. An employee forgets to stop the timer, or clocks in under the wrong job number. Your process should be: make the correction the same day, require a reason with the edit, and keep the original entry visible. Then re-run the allocation so the labor cost lands on the correct job before it reaches job costing or payroll.

What overhead should be included in labor cost per job?

Keep overhead in a separate rate

You do not need to stuff every shop cost into your labor rate. The cleanest setup for a small shop is two numbers: a fully burdened hourly wage (base pay plus payroll taxes and benefits) and a separate shop overhead rate applied per labor hour. Keeping them apart means you can raise the overhead rate when rent or equipment costs change without touching anyone's pay math.

What belongs where

Put payroll taxes, workers' comp, and benefits into the burdened wage. Put rent, utilities, machine depreciation, insurance, and consumables into the overhead rate. If a cost exists whether or not anyone is on the floor, it is overhead; if it only exists because someone clocked in, it belongs in the wage.

This split matters for how you collect the inputs. Your burdened wage comes straight from payroll figures, while the overhead rate comes from your annual shop costs divided by expected labor hours. MinuteMill tracks the labor hours by job and employee side (how it works); the overhead rate stays a spreadsheet calculation you revisit yearly. One honest shortcoming: it will not compute your overhead rate for you, so budget an hour a year to do that math yourself.

Worked example: labor cost for one job, start to finish

The inputs

Say you pay a machinist $25/hour. Payroll taxes run 10% of wages, health insurance works out to $3/hour, and shop overhead (rent, equipment, supervision) is allocated at $12 per direct labor hour. The job, work order #1042, took 18 direct hours, 2 of them past 40 for the week.

The math, line by line

Base wage is $25 × 18 = $450. Add payroll taxes: $450 × 10% = $45. Add benefits: $3 × 18 = $54. Add overhead: $12 × 18 = $216.

That totals $765 before overtime. Overtime is where shops slip: under the FLSA, hours past 40 in a workweek must be paid at 1.5× the regular rate, and the regular rate includes bonuses and shift differentials, not just base wage (US Department of Labor, FLSA overtime guidance). So the 2 overtime hours cost $25 × 1.5 × 2 = $75 in wages, plus the same taxes, benefits, and overhead multiplier applied on top, roughly $112 fully loaded instead of the $50 a straight-time estimate gives. Job #1042's total labor cost lands near $827, or about $45.90 per hour on the job.

What the number tells you

If you quoted #1042 at 18 hours × $25, you undercharged by more than $350. Run every job through this same arithmetic and your quotes stop guessing. MinuteMill gives you the hours side, clock-in and clock-out by job number, exportable as CSV for payroll, so the inputs stay honest; see more on the MinuteMill blog.

How does job time tracking data feed the calculation?

Every number in the burdened rate math is a rate times hours, so the hours have to be real. Phone clock-in and clock-out on the shop floor gives you labor hours tied to a job number as the work happens, not reconstructed later.

Why estimated hours break job costing

When employees fill in timesheets from memory, jobs that ran long absorb hours from jobs that ran short, and the per-job labor cost you calculate is a guess wearing a spreadsheet's clothes. Estimates also hide the forgot-to-stop problem: a timer left running on the wrong job distorts both jobs' costs.

What the tracking layer needs to do

It needs one-tap clock-in and clock-out per job number, a correction trail with a reason when someone fixes an entry, and a CSV export so the hours land in whatever payroll system you already use. Weekly and monthly hour totals per employee help everyone check the math before payroll runs.

Where MinuteMill fits, and where it stops

MinuteMill covers exactly that layer: employees tap start, stop, or switch on their phones, and you export hours by job and employee to payroll. It does not calculate your burden rate or run payroll, so you plug the exported hours into the formulas above.

How do you use labor cost per job to price work and spot unprofitable jobs?

Actual vs estimated

Quote jobs using your burdened hourly rate and estimated hours, then compare against actual hours by job once the work runs. If a job quoted at 40 labor hours takes 55, your labor cost per job is roughly 37% higher than planned, and the gap shows up immediately in job costing instead of at year-end. Shops that rely on estimated hours or reconstructed timesheets miss this entirely; even good employees estimating hours after the fact introduce costly errors (Datamation).

Repricing repeat work

When a repeat work order comes back from a customer, pull the actual labor cost from the last run and price from that number, not the original estimate. Jobs that lose money twice are losing money on purpose. MinuteMill gives you actual labor hours by job and employee, so the comparison takes minutes.

What mistakes do shops make when calculating labor cost per job?

Four errors show up again and again. First, using the wage rate alone: a $22/hour machinist costs the shop closer to $30 once payroll taxes, insurance, and benefits are added, so every job cost you quote is understated by a third or more.

Second, using straight time only. If a job runs into Saturday hours, those hours cost 1.5x before burden, and the job cost should reflect that.

Third, backfilled timesheets. When employees estimate hours long after the fact, the numbers drift, and job costing inherits the drift. Tap-in/tap-out on the shop floor, with corrections requiring a reason, keeps the data honest.

Fourth, ignoring the overtime mix. Two jobs can show identical hours but different costs if one consumed the overtime hours.

MinuteMill handles the timing and correction side; burden rates and overtime multipliers still come from your payroll numbers.

FAQ

Is labor cost per job the same as direct labor cost?

No. Direct labor cost is the wage earned on the job number, sometimes with overtime premiums included. Labor cost per job uses the fully burdened rate: direct wages plus payroll taxes, workers comp, and benefits spread across productive hours. Costing a job on wages alone understates the true number by 30-50%, so the two figures produce very different quotes.

How do I handle salary employees in a per-job labor cost calculation?

Convert the salary to an hourly figure first: annual salary divided by expected annual hours worked. Then apply the same burden additions, payroll taxes and benefits, to that hourly figure. Charge the burdened rate to jobs based on the hours the salaried employee logs against each job number, so a shop foreman's time lands on the work orders they touch.

What is a typical burden rate for a small shop?

Roughly 25-35% of wages is common, but your number depends on your own costs. In the worked example in this article, $14,700 of burden on $52,000 of wages came out to 28%. Health insurance share and workers comp class rate move the total the most, so run the formula with your own payroll figures rather than borrowing a benchmark.

Can I export hours by job to my payroll provider or QuickBooks?

Yes, via CSV. MinuteMill tracks clock-in and clock-out by job number and employee, then exports the hours so you can import them into whatever payroll system you already run. It does not calculate burden rates or process payroll itself; the export gives you the hours side, and you apply the burdened rate math in payroll or a spreadsheet.