Most contractors are undercharging, and they don't know it. The fix is a single math correction: stop using markup and margin as if they mean the same thing, because they don't, and confusing them is costing you real money on every job. A 33% markup feels like a healthy number until you do the math and realize it only produces a 25% gross margin. To hit a true 45–50% gross margin, you need to apply a markup of 80–100% over your direct costs.
That gap is not a rounding error. On a $40,000 kitchen remodel, the difference between a 25% margin and a 45% margin is roughly $8,000. That money either lands in your pocket or it evaporates into overhead you forgot to price.
Key takeaways
- Markup and margin are calculated differently. A 33% markup equals a 25% margin, not 33%.
- To hit a 45% gross margin, you need to apply an 81% markup over your direct costs. For 50%, the markup is 100%.
- Most contractors underprice because they add a markup percentage to costs without checking what margin that actually produces.
- Your target margin must cover overhead first. Profit is what remains after overhead is paid, not before.
- One formula fixes this for every future bid: Selling Price = Direct Costs divided by (1 minus your target margin as a decimal).
What is the difference between markup and margin?

Markup is the percentage you add on top of your costs. Margin is the percentage of your selling price that is profit. They use the same dollars but measure against different baselines, which is why they produce different numbers.
Here is a concrete example:
- Your direct costs on a job: $1,000
- You apply a 50% markup: $1,000 x 1.50 = $1,500 selling price
- Your gross margin: $500 profit divided by $1,500 price = 33.3%
You marked up by 50%. Your margin is 33%. You did not hit 50% margin. That is the trap.
The table below shows how markup and margin relate across the range most contractors work in:
| Markup % | Selling Price (on $1,000 cost) | Gross Margin % |
|---|---|---|
| 25% | $1,250 | 20% |
| 33% | $1,330 | 25% |
| 43% | $1,430 | 30% |
| 54% | $1,540 | 35% |
| 67% | $1,670 | 40% |
| 81% | $1,810 | 45% |
| 100% | $2,000 | 50% |
Read that table carefully. If you have been quoting jobs at "40% markup" thinking you are making 40% margin, you are actually pocketing 28.5 cents on every dollar of revenue, not 40 cents. Over a full year at $600,000 in revenue, that is roughly $69,000 in missing profit.
What do you need before you calculate anything?
Before you can price a job correctly, you need three numbers in front of you. These are your prerequisites. Skipping any one of them makes the whole calculation wrong.
1. Your true direct costs. This means all labor (including burden: payroll taxes, workers' comp, benefits), all materials, all subcontractor costs, and any equipment rental tied to the specific job. Labor burden typically runs 28–35% on top of the base wage. If your carpenter earns $28/hour and you bill him at $28, you are already losing money before the first nail goes in.
2. Your annual overhead. Overhead is every cost your business carries whether you have a job running or not: office rent, insurance, truck payments, phone, software, accounting, your own salary if you are working in the business and not just on it. Add up 12 months of those costs. Divide by your projected annual revenue. That percentage is your overhead burden, and it must be covered by every job you sell.
3. Your target net profit. After overhead is paid, what do you want left over? Most healthy contracting businesses target 8–15% net profit. Remodelers and specialty trades often run higher. This is separate from overhead recovery. Both need to be built into your price.
Step 1: Add up your true direct costs, line by line

This is where most estimates go sideways. Contractors often capture materials and rough labor hours, then miss the details that bleed the job.
For a concrete example, take a bathroom remodel:
| Cost Category | Amount |
|---|---|
| Materials (tile, fixtures, drywall, etc.) | $4,200 |
| Labor: 3 tradespeople x 40 hrs x $32/hr | $3,840 |
| Labor burden (30% of base labor) | $1,152 |
| Subcontractor: licensed electrician | $850 |
| Subcontractor: plumber rough-in | $1,100 |
| Dump fees and small tools/consumables | $220 |
| Total Direct Costs | $11,362 |
Notice that labor burden alone added $1,152 to the cost. Contractors who skip burden are essentially paying that $1,152 out of their own pocket at the end of the year.
Do this exercise for your last three completed jobs. Compare what you estimated to what you actually spent. The gap is your leak, and it is almost always in labor hours and burden.
Step 2: Calculate your overhead rate and add it to the job cost

Overhead is not profit. It is the cost of being in business. If your overhead is not recovered through job pricing, you are spending down your profit or your credit line to keep the lights on.
Here is how to calculate your overhead rate:
- Add up all annual overhead costs. For a small remodeling contractor, this might be $180,000 per year.
- Divide by projected annual revenue. If you plan to do $750,000 in work: $180,000 divided by $750,000 = 24% overhead rate.
- Multiply your direct job cost by that rate to get the overhead allocation for that job.
Using the bathroom remodel example above:
- Direct costs: $11,362
- Overhead allocation (24%): $11,362 x 0.24 = $2,727
- Total job cost including overhead: $14,089
This is your real cost to complete that job. Not $11,362. The difference is $2,727 that you need to earn back before you see a single dollar of profit.
Step 3: Set your target gross margin and calculate the correct markup
Now you have a real cost figure. The next step is deciding what gross margin you need and working backward to the correct selling price.
The formula is:
Selling Price = Total Job Cost divided by (1 minus Target Gross Margin)
For a 45% gross margin on the bathroom job above:
- Total job cost: $14,089
- Selling Price = $14,089 divided by (1 minus 0.45) = $14,089 divided by 0.55 = $25,616
For a 50% gross margin:
- Selling Price = $14,089 divided by (1 minus 0.50) = $14,089 divided by 0.50 = $28,178
Check the markup those prices imply:
- At 45% margin: ($25,616 minus $14,089) divided by $14,089 = 81.8% markup
- At 50% margin: ($28,178 minus $14,089) divided by $14,089 = 100% markup
There is your answer. Doubling your costs gets you to 50% gross margin. That is not gouging. That is running a real business.
Step 4: Verify that your gross margin actually covers overhead and produces net profit
Gross margin and net profit are not the same thing. Gross margin is what remains after direct costs. Net profit is what remains after overhead is also paid.
If your gross margin is 45% and your overhead rate is 24%, your net profit is approximately 21%. That is a healthy contracting business.
If your gross margin is 25% (which is what a 33% markup produces) and your overhead rate is 24%, your net profit is roughly 1%. One bad job, one warranty callback, one slow pay month, and you are upside down.
| Target Gross Margin | Overhead Rate | Approximate Net Profit |
|---|---|---|
| 25% | 24% | ~1% |
| 35% | 24% | ~11% |
| 45% | 24% | ~21% |
| 50% | 24% | ~26% |
Target the 45–50% gross margin range and your business can absorb surprises, fund equipment, and pay you what your skills are worth.
Step 5: Apply the formula consistently on every bid, not just the big ones
The math does not change based on job size. A 200-amp panel swap for $3,200 in materials and labor needs the same margin discipline as a $200,000 addition. Small jobs often have higher overhead per dollar of revenue because mobilization, drive time, and administrative work do not scale down proportionally.
Build the formula into a simple spreadsheet or estimating template:
- Enter all direct costs line by line.
- Multiply total direct costs by overhead rate to get overhead allocation.
- Add direct costs and overhead allocation to get total job cost.
- Divide total job cost by (1 minus target margin) to get your selling price.
- Present the selling price to the customer. The markup percentage is internal. Customers buy the price, not your cost structure.
One practical note: your overhead rate should be updated at least once a year. If your business grew or your costs changed, last year's rate is wrong, and a wrong overhead rate quietly destroys every bid you build on top of it.
Troubleshooting: Why is my margin still coming in lower than my target?
Even with the right formula, three problems show up repeatedly on the backside of jobs.
Labor hours ran over estimate. This is the most common margin killer. If you estimated 40 hours and it took 55, your labor cost jumped 37.5% with no price increase. Fix: log actual hours on every job for 90 days and compare to estimates. Adjust your productivity rates accordingly.
Material costs changed after bid. Lumber, copper pipe, and HVAC equipment prices move. If you bid a job in March and start it in July, material costs may have shifted 10–20%. Include a material price escalation clause in your contracts on any job that does not start within 30 days of the bid date.
Overhead rate was based on optimistic revenue. If you estimated $750,000 in annual revenue but only hit $550,000, your overhead rate was wrong. Every job you sold was underpriced. Recalculate your overhead rate quarterly based on actual revenue pace, not projections.
Advanced tip: Build a margin floor, not just a target
A margin target tells you what you are aiming for. A margin floor tells you the minimum you will accept before you walk away from the job.
Most healthy contracting businesses set a floor at 35–38% gross margin. Any bid that cannot hit that floor after accurate costing either gets declined or gets repriced. Winning a job at 20% margin when your overhead eats 24% is not a win. It is a scheduled loss.
This is harder to hold when work is slow. But the contractor who takes every low-margin job to stay busy is often the same contractor who cannot make payroll in October. Know your floor and treat it like a structural requirement, not a suggestion.
Frequently asked questions
What construction markup percentage should I be using as a general contractor?
Most general contractors need a markup of 67–100% over direct costs to hit a healthy gross margin. The right number depends on your specific overhead rate. Calculate your annual overhead, divide by projected revenue, and use the formula: Selling Price = Total Cost divided by (1 minus target margin). A 45% target margin requires an 81% markup. Do not pick a markup percentage from a forum. Calculate it from your own numbers.
Is a 50% gross margin realistic in construction, or will I lose every bid?
A 50% gross margin is realistic, especially in remodeling, specialty trades, and service work. Production homebuilders operate on thinner margins because of volume. A remodeling contractor doing $1.5 million in revenue with strong systems routinely runs 45–52% gross margin. Customers do not see your markup. They compare your total price to other quotes. Win on value, communication, and reliability, not by cutting margin.
How do I handle overhead and profit on subcontractor costs?
Subcontractor costs are direct costs, so they belong in your direct cost total before you apply your markup. You are managing, coordinating, and warranting that work, which consumes overhead. Apply your full overhead rate and profit margin to sub costs the same way you apply them to labor and materials. Marking up subs at a lower rate than your own labor is a common mistake that erodes overall project margin.
What is the difference between gross margin and net profit for a contractor?
Gross margin is revenue minus direct job costs (labor, materials, subs). Net profit is gross margin minus overhead. If your gross margin is 45% and overhead is 22% of revenue, your net profit is approximately 23%. Gross margin tells you how well individual jobs are priced. Net profit tells you how well your whole business is running. You need to track both.
Should I show my markup or margin breakdown to customers?
No. Provide a clear, itemized price: what the work includes, what it costs total, and what the payment terms are. Your cost structure is proprietary business information. Customers who ask to see your markup are usually shopping price, not value. If a customer demands cost-plus pricing with an open book, that is a business decision you make deliberately, not a default you fall into because they asked.
How do I know if my overhead rate is accurate?
Pull your last 12 months of bank and credit card statements. Add up every cost that was not a direct job expense: rent, insurance, vehicle payments, phone, software, accounting, your owner salary, advertising. That total is your overhead. Divide it by your revenue over the same period. That percentage is your actual overhead rate. Most contractors who do this exercise for the first time discover their overhead is 5–8 points higher than they assumed.
Does markup work differently for service calls and small jobs?
Yes, small jobs typically require a higher markup to hit the same net profit because fixed overhead costs per job do not shrink with job size. A two-hour service call carries almost the same administrative burden as a two-day job: scheduling, invoicing, driving, follow-up. Many service contractors apply a minimum price floor per visit, separate from hourly rate, to make sure overhead is recovered even on quick calls.
Conclusion
The math in this article is not complicated. Direct costs plus overhead allocation, divided by one minus your target margin, gives you a selling price that actually works. The hard part is enforcing it consistently, especially when a customer pushes back or a competitor undercuts you. Hold your numbers. A job that does not cover overhead and return real profit is not a job worth winning.
Every bid you build starts with knowing your real costs. Getting those numbers out of your head and into a consistent format, fast enough to quote while you are still at the customer's house, is where contractors win or lose the back half of the year. Krue is built around exactly that: creating estimates by voice, turning them into invoices, and following up on payment so the margin you calculated on the front end actually shows up in your account on the back end.


