HomeGuides › Markup vs. margin

Markup vs. margin: why a 20% markup is not 20% profit

Two words that sound interchangeable, one of the most expensive mix-ups in the trades. If you add 20% to your costs and think you're keeping 20%, you're off by a fifth of your profit on every single job.

Last reviewed: August 2026 · 6 min read

The short version. Markup is what you add to your cost. Margin is what you keep out of the price. They're different numbers with the same percent sign, and the markup number is always the bigger one.

A 20% markup gives you a 16.7% margin. To actually keep 20%, you need a 25% markup. And that's before overhead — which is where most of the damage really happens.

The mistake, in one job

You price a bathroom. Materials, labor, and subs come to $10,000. You add your usual 20%:

LineAmount
Direct cost (material + labor + subs)$10,000
Markup added — 20% of cost$2,000
Price to the client$12,000
What you actually kept, as a share of the price$2,000 ÷ $12,000 = 16.7%

The $2,000 is real. The 20% is not. You measured your profit against your cost, but your business — your P&L, your accountant, your bank — measures it against your revenue. On a $10,000 job the gap is $400 of theoretical profit that never existed. Run $400,000 of direct cost a year at that misunderstanding and you're planning your business around roughly $16,000 that isn't there.

The two formulas

Write these on the inside of your estimate folder. That's genuinely all there is to it.

# You know your markup. What margin does it give you?
margin = markup ÷ (1 + markup)
20% markup → 0.20 ÷ 1.20 = 16.7% margin

# You know the margin you want. What markup gets you there?
markup = margin ÷ (1 − margin)
20% margin → 0.20 ÷ 0.80 = 25% markup

# Or skip the percentages and just divide:
price = cost ÷ (1 − margin)
$10,000 ÷ 0.80 = $12,500 → a true 20% margin

That last line is the one to use on real bids. Divide, don't multiply. Multiplying by 1.20 gets you a markup. Dividing by 0.80 gets you a margin. It's the same keystroke count and one of them is the number you actually meant.

Markup → margin conversion table

What each markup actually leaves you:

Markup on costMultiply cost byGross margin you keep
10%1.109.1%
15%1.1513.0%
20%1.2016.7%
25%1.2520.0%
30%1.3023.1%
35%1.3525.9%
40%1.4028.6%
50%1.5033.3%
60%1.6037.5%
100%2.0050.0%

Margin → markup: the table to actually bid from

Start from the margin you need, work backwards to the markup:

Margin you wantDivide cost byWhich is a markup of
10%0.9011.1%
15%0.8517.6%
20%0.8025.0%
25%0.7533.3%
30%0.7042.9%
35%0.6553.8%
40%0.6066.7%
50%0.50100%
Notice how fast that right column climbs. A 40% margin needs a 66.7% markup. This is why "just add 10 points" conversations between contractors go nowhere — one person means markup and the other means margin, and by the time you're up in the 30s they're describing completely different bids.

The bigger trap: overhead is not profit

Everything above is gross margin — price minus the cost of the actual work. It says nothing about the cost of being in business at all:

Overhead has to come out of your markup before anything is profit. So find your recovery rate once a year:

overhead rate = annual overhead ÷ annual direct job cost
$60,000 overhead ÷ $400,000 direct cost = 15%

Now the 20% markup story looks very different. Of that 20%, fifteen points are just paying you back for existing. Five points are the actual profit — about 4.2% of the price. One rained-out week or one forgotten dump run and the job is a break-even at best.

Worked example: a $70,000-cost kitchen

Same contractor: 15% overhead rate, wants a genuine 10% net margin — money left after the work and after the business.

StepMathAmount
Direct job costmaterial + labor + subs$70,000
Overhead to recover$70,000 × 15%$10,500
Break-even price$70,000 + $10,500$80,500
Price for a 10% net margin$80,500 ÷ 0.90$89,444
Net profit$89,444 − $80,500$8,944
Total markup that represents$89,444 ÷ $70,00027.8% on cost

And here's the same job bid the old way, at a flat 20% markup:

StepMathAmount
Price at 20% markup$70,000 × 1.20$84,000
Less break-even$84,000 − $80,500$3,500
Actual net margin$3,500 ÷ $84,0004.2%
Money left on the table$8,944 − $3,500$5,444

Five thousand four hundred dollars, on one kitchen, from one arithmetic habit. The client wasn't going to walk over 6% — you just never asked.

Before you reprice everything: a higher number is only correct if your costs are right. If your labor rate doesn't include payroll burden, or you're still using last year's lumber prices, a bigger markup on a wrong cost is just a wrong bid with more confidence. Fix the cost basis first, then set the markup.

What to change on your next bid

  1. Work out your overhead rate. Last year's overhead total ÷ last year's direct job cost. One evening with your tax return. This number changes your bidding more than any software will.
  2. Set a target net margin — a number you'd be pleased with, not the minimum you'd accept. For small residential remodel work, contractors commonly aim somewhere in the 8–15% net range; where you land depends on your market, your risk, and how busy you are.
  3. Price by dividing. Break-even ÷ (1 − target margin). Never cost × 1.something.
  4. Check the finished bid backwards. Profit ÷ price. If that isn't roughly your target, the markup was wrong, not the target.
  5. Track actuals on at least three jobs. Estimated vs. actual cost per division is the only thing that tells you whether your cost basis — not your markup — is the real problem.

How this works in BuildCraft Pro

Worth knowing precisely, because it's exactly the distinction this guide is about: in Settings → Default Markups, the Contingency, Bond/Insurance, Management, and Profit fields are all percentages of direct cost — markups, not margins. Tax applies to material only. So switching on Management 10% and Profit 10% prices the job at cost × 1.20, which is a 16.7% gross margin, and the profit portion alone is about 8.3% of the price.

That's not a quirk to work around — markup-on-cost is how estimates are built, and how your subs quote you. You just need to enter the markup that produces the margin you want. Use the second table above, or the divide-by formula.

To see the margin rather than the markup, the Budget Tracker tab shows a Margin card that divides profit by revenue — a true margin — and updates as you type real costs in against each division. That's the number to watch mid-job, and the estimate summary shows the same thing as Profit Margin.

Frequently asked questions

What margin does a 20% markup give a contractor?

16.7%. On $10,000 of cost, a 20% markup prices the job at $12,000; the $2,000 you keep is 16.7% of that $12,000. To keep a true 20% of the price you need a 25% markup.

How do I convert a target margin into a markup?

Divide your cost by (1 − margin). For 20%, divide by 0.80 — a 25% markup. For 30%, divide by 0.70 — a 42.9% markup. As a formula: markup = margin ÷ (1 − margin).

Is overhead the same thing as profit?

No, and treating them as one line is how profitable-looking years end with no money in the account. Overhead is the cost of the business existing — insurance, truck, software, unbilled estimating time. It must be recovered before any of your markup is profit. Divide annual overhead by annual direct job cost to get the rate to add to every bid.

How much should a contractor mark up a job?

There's no universal number, and anyone who gives you one is guessing about your business. The method: overhead rate + direct cost = break-even, then break-even ÷ (1 − target net margin). A contractor with a 15% overhead rate targeting 10% net needs about 27.8% total markup on direct cost.

Should I show markup as a separate line on the client's estimate?

That's a business-style call, not a math one. Cost-plus and open-book jobs itemize it by definition; on fixed-price residential work many contractors present a single price per division instead. What matters is consistency, and that your contract's payment terms match whichever way you present it.

Set your markups once, apply them everywhere

Enter your rates in Settings and every estimate, proposal, and client portal uses them — with a live margin readout as you bid. 14-day free trial — $0 today.

🎁 Start 14-day free trial →
Keep reading Build a draw schedule that keeps you cash-positive → How to write a change order that actually gets signed → Deposit limits by state: how much can you legally collect up front? → How to Write a Construction Estimate → All guides →
General estimating and business information for contractors — not accounting, tax, or legal advice. Every figure in the examples is illustrative arithmetic, not a recommended rate for your business. Your own overhead rate, target margin, and pricing decisions should be set with your accountant using your actual books.