Direct Labor Hours: How to Find and Calculate Them
Direct labor hours are the hours your crew spends working on a specific job. Find them by taking the hours each person actually worked and keeping only the time attributable to a job — excluding shop time, driving, training, and paid leave. The formula is direct labor hours = total hours worked − indirect hours. CRMb counts them from the hours your crew punches against each job in Punch, so the figure comes from a timesheet rather than a recollection.
Almost every number that tells you whether a job made money sits on top of this one. Labor cost per job, your overhead rate, your margin, your bid for the next job of the same type — all of them start with "how many hours went into this?" Get that number from memory and every figure downstream inherits the error.
What counts as a direct labor hour
A direct labor hour is time spent by a person on work a customer is paying for, on an identifiable job. If you can point at a job and say "this hour went there," it is direct.
Direct labor hours:
- Framing, wiring, planting, cleaning, installing — the work itself
- Job-site setup and cleanup for that job
- A site visit to diagnose a problem you were called out for
- Rework on a specific job, even when you are not billing for it
Indirect labor hours:
- Shop time: loading the truck, maintaining tools, organizing stock
- Driving between jobs (see how to charge for drive time — billable is a separate question from direct)
- Estimating, quoting, and sales calls
- Training, safety meetings, and admin
- Paid time off, holidays, and idle time between jobs
The line that trips people up: indirect does not mean unpaid, and direct does not mean billable. You pay for a safety meeting, and it is still indirect. You eat the cost of a warranty callback, and those hours are still direct — they belong to that job, which is exactly why you want them counted there. A job that needed eight hours of free rework is a job that told you something about your pricing.
The direct labor hours formula
The calculation is subtraction, once the hours are categorized:
Direct labor hours = total hours worked − indirect hours
Per employee, per period:
Direct labor hours = hours on jobs (job A + job B + job C …)
And the ratio worth watching:
Direct labor hour ratio = direct labor hours ÷ total paid hours
That ratio is your labor utilization. A crew at 85% is spending most of its paid time on customer work. A crew at 55% is being paid for a lot of hours that no job is carrying, which is either a scheduling problem, a travel problem, or a pricing problem — and the ratio tells you which to go look at. The same idea, measured per person, is crew utilization rate.
How to find direct labor hours: a worked example
One technician, one week.
| Activity | Hours | Direct? |
|---|---|---|
| Job 101 — install | 14 | Direct |
| Job 102 — service call | 9 | Direct |
| Job 103 — warranty rework | 3 | Direct |
| Driving between sites | 6 | Indirect |
| Shop: restocking the truck | 4 | Indirect |
| Safety meeting | 2 | Indirect |
| Total paid | 38 | — |
Direct labor hours: 14 + 9 + 3 = 26.
Indirect hours: 6 + 4 + 2 = 12.
Direct labor hour ratio: 26 ÷ 38 = 68%.
Two things fall out of that table. First, Job 103's three hours of free rework are still direct hours — they cost real money and they belong to Job 103, so the job's true margin includes them. Second, 12 of 38 paid hours were not on any job. If your pricing assumes 38 billable hours a week from this technician, your pricing is wrong by about a third, and no amount of markup on materials fixes it.
Why direct labor hours are the base for overhead
Once you know your direct labor hours, you have the denominator most contractors use to spread overhead across jobs. Total overhead for a period, divided by direct labor hours in that period, gives an overhead rate per direct labor hour:
Overhead rate = total overhead ÷ direct labor hours
At $9,000 of monthly overhead and 500 direct labor hours, that is 9,000 ÷ 500 = $18 per direct labor hour. A job with 26 direct hours then carries 26 × 18 = $468 of overhead before profit. The full method is in how to calculate your overhead rate.
This is the reason an inflated hours figure is so expensive. Count indirect time as direct and your denominator grows, your overhead rate per hour shrinks, and every job looks like it carries its share when it does not. The business runs at a loss while the individual jobs all appear profitable — a pattern that usually surfaces a year late, at tax time.
Direct labor hours are not paid hours, and not billed hours
Three different numbers get called "hours," and conflating them is the most common error here:
- Paid hours — everything on the timesheet, direct and indirect, 38 in the example above.
- Direct labor hours — the subset attributable to jobs, 26.
- Billed hours — what the customer was invoiced for, which on a fixed-price job may be zero hours and one lump sum.
Payroll runs on paid hours. Job costing runs on direct labor hours. Invoicing runs on the contract. A fixed-price job still consumes direct labor hours even though the customer never sees an hourly figure, and those hours are exactly how you learn whether the fixed price was any good. For the cost side, see how to calculate labor cost per job.
Turning direct labor hours into cost
Hours are a quantity. To cost a job you need the hours multiplied by what an hour of that person actually costs you — the loaded, or burdened, rate. The bare wage is not it: payroll taxes, workers' compensation, and benefits typically add 15% to 30% on top.
Direct labor cost = direct labor hours × loaded hourly rate
At 26 direct hours and a $42 loaded rate, the job carries 26 × 42 = $1,092 of labor, plus its overhead share. Work the loaded rate out properly in how to calculate labor burden rate — calculating burden is where most of the error in labor costing lives, not in the hours.
Capturing the hours without a paper timesheet
The formula is easy. Getting trustworthy inputs is the hard part, because direct labor hours have to be recorded against a job while the work happens. Reconstructed on Friday from memory, they round to comfortable numbers and quietly understate the jobs that ran long — which are the only jobs with anything to teach you.
CRMb shares its backend with Punch, the time-tracking app. A crew member punches in at the job site from their phone, or from a shared iPad on the wall, and those hours land against that job. The job's labor cost is then built from real punched time at your loaded rate, and Reports put the margin you actually earned next to the margin you quoted. Capacity shows the scheduled hours ahead, so you can see the gap between hours you have sold and hours you can staff.
That closes the loop the whole exercise exists for: the direct labor hours from the last job of a type become the estimate for the next one. See how to estimate labor hours for a job for the forward-looking half, and post-job profitability review for the backward-looking one.
Labor hour calculation: how to calculate labour hours on a job
"Labour hours" and "labor hours" mean the same thing: the number of person-hours a piece of work takes. The calculation is people multiplied by time, not clock time on the site.
Labor hours = number of workers × hours each worked
Three people on a site from 7:00 to 3:30 with a 30-minute unpaid lunch each worked 8 hours, so the day used 3 × 8 = 24 labor hours, even though the job only occupied one 8-hour day on the calendar. Mixed crews add up per person: a lead on site for 8 hours plus two helpers for 6 hours each is 8 + 6 + 6 = 20 labor hours.
For a whole job, add the labor hours from every day the job ran:
| Day | Crew | Hours each | Labor hours |
|---|---|---|---|
| Monday | 3 | 8 | 24 |
| Tuesday | 3 | 8 | 24 |
| Wednesday | 2 | 5 | 10 |
| Job total | — | — | 58 |
Those 58 hours are the job's direct labor hours, as long as each person's time on the site was job work. Driving to the site, loading the truck at the shop, and the morning meeting stay out, as described above.
Two calculation errors are common. The first is counting crew-days instead of person-hours: "the job took three days" says nothing about cost until you know how many people were there and for how long. The second is using scheduled hours instead of worked hours. A day scheduled for 8 hours that ran to 10 is 10 hours of cost, and it is exactly the overrun you need to see.
Estimating labor hours before the job starts
The labor hour calculation above looks backward, at a job already done. Estimating labor hours looks forward, and it works best when it is built from the backward-looking numbers:
- Break the job into tasks you can measure: square feet of drywall hung, fixtures installed, windows cleaned, beds planted.
- For each task, use your production rate from past jobs: labor hours per unit.
- Multiply units by the rate, then add setup, cleanup, and a realistic allowance for the site.
- Divide by crew size only when you need a calendar duration. The cost is in the labor hours, not the days.
A deck that needs 120 square feet of decking at a past rate of 0.25 labor hours per square foot is 120 × 0.25 = 30 labor hours of decking before framing and railings. The full method, with trade-by-trade examples, is in how to estimate labor hours for a job. The production rates themselves come from the direct labor hours you recorded on finished jobs, which is why capturing them accurately matters for the next quote as much as for the last one.
Frequently asked questions
How do you find direct labor hours?
Take each person's hours for the period and keep only the time booked to a job — the work itself, job-site setup and cleanup, site visits, and rework. Subtract everything else (driving, shop time, estimating, training, paid leave) as indirect. The cleanest way to find them is to record hours against a job as the work happens, so the split is already made when you need the number.
What is the direct labor hours formula?
Direct labor hours = total hours worked − indirect hours. Equivalently, add up the hours booked to each individual job. To get the utilization view, divide direct labor hours by total paid hours.
What is the difference between direct and indirect labor?
Direct labor is work attributable to a specific job a customer is paying for. Indirect labor supports the business without belonging to any one job — shop time, driving, estimating, admin, training, and paid leave. Both are real costs you pay; only direct labor can be assigned to a job, which is why indirect labor is recovered through your overhead rate instead.
Are direct labour hours the same thing as direct labor hours?
Yes — "labour" is the British and Canadian spelling, "labor" the American one. The concept, the formula, and the accounting treatment are identical.
Is drive time a direct labor hour?
Usually not. Travel between sites is normally indirect, recovered through your overhead rate, because it supports the day rather than belonging to one job. Some contractors do book travel directly to a job when a site is unusually remote and the trip exists only for that job. Either treatment works as long as you apply it consistently — inconsistency is what makes period-over-period comparisons meaningless.
Does rework count as direct labor?
Yes. Hours spent fixing a job belong to that job even when you are not billing for them, because the point of job costing is to learn what a job truly cost. Burying warranty rework in indirect time makes the original job look more profitable than it was and hides a quality or estimating problem worth finding — see how to track callback and warranty costs.
What is a good direct labor hour ratio?
It varies by trade and how much travel the work requires, but many field-service businesses run between 60% and 80% of paid hours as direct. What matters more than the benchmark is the trend: a ratio drifting down means more paid time is going to things no job is carrying, and your pricing has to cover it either way.
How do direct labor hours affect my bid?
They set the labor line and, through your overhead rate, a share of the overhead line too. Bidding from optimistic hours understates both at once, which is why bids built on real hours from finished jobs of the same type beat bids built on memory. See how to bid a construction job.
How do you calculate labour hours?
Multiply the number of workers by the hours each one worked, then add up every day of the job. Three people working 8 hours is 24 labour hours. Count person-hours, not calendar days, and use the hours actually worked rather than the hours scheduled.
What is the difference between labor hours and crew-days?
A crew-day is a calendar day with a crew on site. Labor hours count each person's time separately. A three-person crew working an 8-hour day is one crew-day but 24 labor hours, and the cost of the job follows the labor hours.
How do I estimate labor hours for a job I have not done before?
Break the work into measurable tasks, apply production rates from the closest jobs you have done, and add setup and cleanup. Then track the actual hours closely on that first job, because it becomes the rate for every similar job after it.
Getting started with CRMb
Direct labor hours only work as a management number when they are captured as the work happens. CRMb builds job labor from the hours your crew punches in Punch at your loaded rate, shows the margin those hours actually produced in Reports, and carries the result into your next estimate.
Start a 14-day free trial and cost your next job from hours you can point at.