Urban Estimation

Estimating

Markup vs Margin: The 20% Mistake That Loses Bids

By Shafaqat Ali, October 20, 2026 · 3 min read

Estimator desk with a calculator, a bid summary sheet, a mechanical pencil and a scale ruler on construction plans

A 20% markup does not give you a 20% margin. It gives you 16.7%. If you meant to earn 20% of the selling price, you need a 25% markup. That gap is small on paper and large on a year of work, and it is one of the most common mistakes we see in bid sheets.

What is the difference between markup and margin?

Markup is profit as a percentage of your cost: Markup = (Price − Cost) ÷ Cost

Margin is profit as a percentage of the selling price: Margin = (Price − Cost) ÷ Price

Same dollars of profit, different denominator. Because price is always larger than cost, margin is always the smaller number.

A worked example

Your direct cost on a job is $100,000.

  • Add a 20% markup: price is $120,000. Profit is $20,000. Margin is $20,000 ÷ $120,000 = 16.7%.
  • To earn a true 20% margin, price = cost ÷ (1 − 0.20) = $100,000 ÷ 0.80 = $125,000. Markup is 25%.

That is $5,000 on one $100,000 job. Over $2 million of annual volume, it is about $100,000 of profit you planned for and never priced.

Quick conversion list

  • 10% markup = 9.1% margin. A 10% margin needs 11.1% markup.
  • 15% markup = 13.0% margin. A 15% margin needs 17.6% markup.
  • 20% markup = 16.7% margin. A 20% margin needs 25.0% markup.
  • 25% markup = 20.0% margin. A 25% margin needs 33.3% markup.
  • 30% markup = 23.1% margin. A 30% margin needs 42.9% markup.

The formulas:

  • Margin from markup = markup ÷ (1 + markup)
  • Markup for a target margin = margin ÷ (1 − margin)

Why it costs bids, not only profit

Most contractors set their overhead and profit target as a margin, because their financial statements report gross margin as a percentage of revenue. Then the estimator applies that number as a markup on cost. The bid comes in low, it wins, and the year ends short.

The reverse also happens. Someone converts the target to the right markup, then a second line in the same spreadsheet adds profit again. The bid comes in high and loses.

Either way, the fix is the same: decide which one your company uses, write it at the top of the bid template, and make every line calculate the same way.

Stacking overhead, bond and profit

A real bid adds more than one percentage, and the order matters. A common sequence:

  1. Direct cost (labor, material, equipment, subs), including any material escalation risk you are carrying. If you shift that risk to the owner, use a price escalation clause instead of padding profit
  2. General conditions for the job
  3. Overhead, as a percentage of the subtotal
  4. Profit, as a percentage of the new subtotal
  5. Bond and insurance, usually charged on the final contract value

The last step is where estimators often get caught. Bond premiums are typically priced as a rate on the contract amount, so adding the bond onto a price that already includes it is circular. The clean way is to solve for the price: Price = Subtotal ÷ (1 − bond rate). For a 1.5% bond on a $500,000 subtotal, that is $500,000 ÷ 0.985 = $507,614, not $507,500.

How to check your own template

Open your last three winning bids and do this:

  1. Take the final price and the total direct cost.
  2. Calculate (Price − Cost) ÷ Price.
  3. Compare it with the margin you thought you were bidding.

If the number is lower than you expected, your template is applying margin targets as markup. Change the formula once, and every future bid is fixed. If you want a second check on a bid before it goes out, send us the plans for a cost estimate.

Bidding something right now?

Send the plans and get a fixed-fee quote back within hours.