How to Calculate Labor Cost for a Construction Job
I run a remodeling company and built a job costing app, and this is the number that burned me early: I priced labor off the paycheck number, not the real one. A guy making $22 an hour does not cost the company $22 an hour. He costs more, and if a bid is built on the wage alone, the gap between the two numbers comes straight out of your profit. This post walks through building the real number, by hand, so you know exactly where every dollar of the gap comes from instead of trusting a multiplier someone told you once.
The components of a loaded labor rate
Five things sit on top of the bare wage. None of them is optional, and none of them has a number I can hand you — they are specific to your state, your payroll provider, and your comp policy. What I can hand you is the list, so nothing gets left off.
| Component | What it is | Where the number comes from |
|---|---|---|
| Base wage | What the check says — the worker's hourly pay. | Your payroll records. |
| Employer payroll taxes | Social Security, Medicare, and federal and state unemployment insurance — the employer share, on top of the wage. | Current rates from the IRS and your state; these change, so pull them fresh rather than reusing last year’s. |
| Workers' compensation | Insurance required in most states, priced per $100 of payroll and varying by trade and claims history. | Your policy's rate per $100 of payroll — call your carrier or read the declarations page, do not guess. |
| Paid non-billable time | Hours you pay for that no client is invoiced for: drive time, load-out, the shop morning, and the lunch rule below. | Your own timesheets over a real month, not a good week. |
| Tools, PPE, and consumables | Blades, batteries, gloves, fuel for tools, and the gear that wears out on the worker's jobs. | What you actually spend per crew member per year, divided into an hourly figure. |
Building the rate for a $22/hour crew member
Here is the method with one worker as a labelled example — $22 an hour, hourly pay, a real crew member shape, made-up numbers so you can see how the pieces stack. Do not reuse these percentages; run your own from your payroll and comp policy.
Step 1 — base wage. $22.00 an hour. That is the number on the check and the only number a wage-only bid ever accounts for.
Step 2 — employer payroll taxes.Social Security, Medicare, federal unemployment, and state unemployment are the four categories that make up the employer share. The rates change and vary by state, so pull the current ones from the IRS and your state's unemployment agency before you build your own number — do not print a percentage here as if it applies to every reader. For this example, say the employer share works out to a flat dollar figure of $2.10 an houronce you run your own payroll provider's numbers. Running total: $24.10.
Step 3 — workers' compensation.Your comp policy prices coverage per $100 of payroll, and that rate depends on your trade classification and your claims history — a roofer's rate and a finish carpenter's rate are not close to the same number. Call your carrier or read the declarations page on your policy; do not borrow a rate from a blog post, including this one. For this example, say your policy's rate works out to $1.60 an hourfor this worker's classification. Running total: $25.70.
Step 4 — paid non-billable time. This is the one contractors most often leave out, because it does not show up as a line item anywhere — it shows up as a gap between paid hours and billed hours at the end of the month. Drive time between jobs, loading and unloading the truck, and the supply run are all paid hours that no invoice covers. Lunch is a separate rule and it matters: unpaid lunch is deducted from the day before overtime is calculated, and it is never deducted by default — a worker is paid for lunch unless your policy says otherwise and everyone knows it. If this worker averages 45 minutes a day of paid drive and load-out time on an 8-hour day, that is roughly 9.4% of paid time that never gets billed. Spread across the billable hours, that raises the effective cost of each billable hour by about $2.70. Running total: $28.40.
Step 5 — tools, PPE, and consumables. Blades, batteries, gloves, fuel for saws and compressors, and the gear that a crew member goes through on your jobs. Take your annual spend on this per crew member and divide it by the hours they work in a year. For this example, say that comes out to $0.80 an hour. Running total, the loaded hourly rate: $29.20.
That is a $22.00 wage carrying a $29.20 loaded rate in this labelled example — every dollar of the $7.20 gap tied to a named category above, not a multiplier pulled from nowhere.
Overtime and the weekly threshold
Overtime changes the wage side of the math, and it is worth naming here because a lot of labor-cost estimates quietly assume flat pay all year and then get surprised in a busy month. Weekly overtime tracking is opt-in in a system like Job Cost Pro — flat pay is the default, and a company turns on overtime rules deliberately rather than having them forced on every crew. If your crew runs weeks over 40 hours regularly, build that into your labor cost estimate rather than pricing every hour at straight time and finding the gap later. And remember the lunch rule above: unpaid lunch comes off the day's hours before overtime is calculated, never after, and never automatically unless the policy says so.
Day-rate crews: the real hourly is a division problem
Not every crew is paid hourly. Some subs and some crew members work a day rate — a flat amount for the day regardless of hours. The loaded-rate method above still applies; you just have to find the true hourly first. Day rate ÷ hours actually worked = the true hourly rate. A $280 day rate on a day that ran 7 hours is a $40/hour true rate. The same $280 day rate on a day that ran 10 hours because the job ran long is a $28/hour true rate — a very different number for the exact same pay. This is why tracking the actual hours a day-rate crew works matters even when you are not paying by the hour: without it, you cannot tell whether a day rate is a good deal or a bad one on any given job. In a system that supports day-rate pay, those days should wait for owner approval before they post, so a day never gets paid twice and the hours behind the rate get reviewed, not just assumed.
Applying the rate to a job
Once you have a loaded rate, put it to work on an actual job. Take a 40-hour job — one worker, one week, the $22 wage example from above.
| Basis | Rate | 40 hours | What it means for the bid |
|---|---|---|---|
| Bare wage | $22.00/hr | $880 | What the paycheck costs — not what the job costs you. |
| Loaded rate | $29.20/hr | $1,168 | What the hour actually costs once taxes, comp, non-billable time, and tools are counted. |
| Gap | $7.20/hr | $288 | What a wage-only bid underprices on this one worker, this one week, in this example. |
Scale that gap across a crew and a season and it stops being a rounding error. A $288 weekly shortfall on one worker is a real number on a single job — multiply it by every worker, every week, all year, and it is the difference between a company that reports a profit at tax time and one that does not, even though every individual job's invoice looked fine along the way.
The "$20/hour employee costs more than $20" question
This question gets asked constantly, and the honest answer is a method, not a number. A common rule of thumb people repeat is that a wage-only employee costs somewhere around 1.25–1.4× the base wage once everything is loaded in — treat that as a rumor worth checking, not a statistic to build a bid on. Your real multiplier depends on your state's unemployment rate, your comp classification, how much non-billable time your crew actually carries, and how much you spend on tools per worker. Run the five-step build above with your own numbers and you will get your own multiplier — it might be close to that range, or it might not be, and either way it will be true instead of borrowed.
What "30% labor" means
"30% labor" describes labor as a share of total job cost — if a job costs $30,000 to build and $9,000 of that is labor (loaded, not bare wage), labor is running at 30% of the job. That share varies a lot by trade. A framing or demo-heavy job leans labor-heavy because there is not much material cost to offset it against. A job with expensive fixtures, tile, or cabinetry can carry a much lower labor share even with the same crew hours, because the material line grows while the labor line stays flat. There is no single correct percentage across trades — the number is worth tracking per job and per trade so you know what "normal" looks like for your own work, not someone else's.
Why crews get estimated wrong
Almost every labor overrun I have seen — mine included — traces back to hours that were never planned for and never logged where they belonged. Drive time between three stops in one morning. A second trip because a delivery showed up short. Hours that got worked but never made it onto a timesheet because the crew went straight to the next job instead of writing anything down. None of that shows up in a loaded-rate calculation built on planned hours — it only shows up when you compare the plan to what actually happened, and by then the bid is locked.
Tracking actual hours per job with a one-tap jobsite clock
The fix is not a better spreadsheet — it is capturing the real hours as they happen. Job Cost Pro prompts a worker to clock in and out with one tap when they arrive at or leave a jobsite; a fully automatic version of that exists too, but it is opt-in and consent-gated — the worker sees a disclosure, agrees to it, gets a two-hour undo notice on every automatic clock event, and it only runs during the company's work hours. Either way, the hours land against the right project instead of a memory at the end of the week, so the loaded rate you built above gets multiplied by real hours, not estimated ones, and the job's labor cost shows where it actually stands while you can still do something about it. See how the clock-in flow itself works in construction time clock for small crews — this post is about the math; that one is about the tool.
Once real hours are captured, the loaded rate you built above turns into a real cost per job instead of a planning estimate — see how to calculate the total cost of a job for where labor fits alongside materials and overhead, and run your own numbers with the labor cost calculator. Overhead is its own piece of the price — see the overhead and profit calculator for that half. And once the hours and the receipts are both captured, the bookkeeping side gets a lot shorter — contractor bookkeeping covers what comes after the job is done.
Job Cost Pro is free on the App Store — 3 projects, 50 receipts a month, full AI receipt scanning, voice capture, no card required. Crew time clock and pay features are on the Contractor tier. Get it here.
One last thing, said plainly: this is not tax or payroll advice. I am a contractor who got tired of guessing at his own labor numbers, not your CPA or your payroll provider. The percentages in the worked example above are illustrative — pull your own tax rates from the IRS and your state, and your own comp rate from your policy, before you price a single bid off any number in this post.
FAQ
What is the formula for labor cost?
Labor cost equals the base wage plus employer payroll taxes, workers’ compensation, paid non-billable time, and tools and consumables, all divided across the hours actually worked. That total is the loaded (or burdened) hourly rate. Multiply it by the hours a job will take to get the job’s real labor cost — not the bare wage times hours.
How much does a $20 an hour employee cost an employer?
More than $20, but the exact number is not a fixed multiplier — it is the wage plus your state’s payroll tax rates, your workers’ comp policy rate, your crew’s non-billable time, and your tool spend per worker. A common rule of thumb people repeat is 1.25–1.4× the base wage; treat that as a rumor to check, not a statistic to bid on. Run the five components yourself for a real answer.
How do I estimate labor cost for a job?
Build your loaded hourly rate once (wage plus taxes, comp, non-billable time, and tools), then multiply it by the hours you expect the job to take. For a day-rate crew, first divide the day rate by the hours actually worked to get a true hourly rate, then use that. Track actual hours against the estimate so next time’s estimate gets closer to real.
What does 30% labor mean?
It means labor — priced at the loaded rate, not the bare wage — makes up 30% of a job’s total cost. The share varies by trade: labor-heavy work like framing or demo runs a higher labor percentage, while jobs with expensive materials like tile or cabinetry can run a lower one even with the same crew hours, because the material line is bigger.
How do I track actual labor hours per job?
A one-tap jobsite clock is the most reliable way — Job Cost Pro prompts a worker to clock in and out on arrival and departure, with a fully automatic, opt-in, consent-gated option available too. Hours land against the right project as they happen instead of getting reconstructed from memory at the end of the week, so the job’s real labor cost shows up while there is still time to act on it.