How to Calculate Profit Margin for Construction Jobs

Profit margin and markup are not the same number, and confusing them is how contractors think they're making 20% when they're actually making 16.7%. The mistake is structural: margin is profit divided by revenue, while markup is profit divided by cost. Apply a 25% markup and you get a 20% margin - but if you think that 25% is your margin, you've just miscalculated every bid. Over a full year of projects, that 4-point gap compounds into a cash shortfall that looks like a revenue problem when it's actually a math problem.

This guide explains the markup-versus-margin distinction clearly, shows you how to convert between them, and walks through how to track both gross and net margin on a construction job. The BidFlow Profit Margin Calculator handles the arithmetic - this guide explains what the numbers mean and what to do with them.

The markup vs. margin confusion - and why it costs contractors every year

Here's where it goes wrong: a contractor finishes a job, looks at the invoice total versus what they spent, and says "we made 20% on that one." If they calculated that by dividing profit by cost, they calculated markup - not margin. Their actual margin is lower.

This matters because when you bid the next job targeting "20% profit," you apply 20% to your cost - which gives you a 16.7% margin on revenue. That 3.3-point difference is real money. On a $300,000 job, it's $9,900 that you thought was in the number but isn't. Run 10 jobs a year and you've overstated your annual profit by nearly $100,000 on paper while your bank account tells a different story.

The BidFlow Profit Margin Calculator outputs both numbers - gross margin and markup - so you can see exactly which figure you're working with. The key rule: always target and report margin (profit ÷ revenue), not markup (profit ÷ cost). Margin is the standard across accounting, finance, and banking. It's what your lender, your CPA, and your potential buyer will use to evaluate your business.

Markup-to-margin conversion table

Use this table when you know your target margin and need the correct markup to apply to your cost base - or when you know the markup you're using and want to see the actual margin it produces.

Markup % (on cost) Resulting Margin % (on revenue) Health signal
10% 9.1% Low - no buffer for overruns
12.5% 11.1% Thin - adequate only if overhead is lean
15% 13.0% Thin - borderline acceptable
20% 16.7% Moderate - below the 20% healthy threshold
25% 20.0% Healthy - the BidFlow calculator's green zone starts here
33% 24.8% Strong - specialty trades with high skill premium
50% 33.3% High - design-build, premium service contractors

The BidFlow Profit Margin Calculator color-codes your gross margin result: green for 20% or above (Healthy), amber for 10–19.9% (Thin), and red for under 10% (Low). These thresholds reflect the construction industry reality that gross margin must cover net profit after overhead - which typically runs 10–20% of revenue - leaving true net profit in the 5–15% range.

How to calculate gross margin - step by step

The BidFlow Profit Margin Calculator uses two paths: enter a single total cost figure, or break costs down by category (materials, labor, subs, equipment, other). Both produce the same formulas. Here's the full calculation sequence for a $185,000 roofing replacement project.

1Establish total revenue (contract value)

FormulaRevenue = Total contract amount billed to client

The signed contract is $185,000. That's your revenue figure. Do not net out anything - revenue is the gross invoice amount before any cost is subtracted.

2Sum total job costs

FormulaTotal Costs = Materials + Labor + Subcontractors + Equipment + Other

Materials (shingles, underlayment, flashing): $62,000. Labor (crew, 6 days): $28,500. Subcontractors (crane rental crew): $9,000. Equipment: $4,200. Other (disposal, permits): $3,800. Total costs: $107,500.

3Calculate gross profit

FormulaGross Profit = Revenue − Total Costs

$185,000 − $107,500 = $77,500 gross profit. This is the amount available to cover overhead and generate net profit. It is not net profit.

4Calculate gross margin

FormulaGross Margin % = (Gross Profit ÷ Revenue) × 100

($77,500 ÷ $185,000) × 100 = 41.9% gross margin. On the BidFlow calculator this would show green - Healthy. But gross margin ≠ net profit. This company runs 22% overhead, so net margin is approximately 19.9%.

5Calculate markup (for cross-reference)

FormulaMarkup % = (Gross Profit ÷ Total Costs) × 100

($77,500 ÷ $107,500) × 100 = 72.1% markup. This is the correct way to describe what happened in cost terms. If you use 72.1% as your target for the next bid, you'll hit the same margin - as long as costs are categorized identically.

Gross margin vs. net margin - understanding the gap

Gross margin is what's left after direct job costs. Net margin is what's left after overhead as well. The gap between them is your overhead rate - and that's the number most contractors don't track precisely enough.

Metric Formula Example ($185K job)
Revenue Contract value $185,000
Direct costs Materials + labor + subs + equip $107,500
Gross profit Revenue − Direct costs $77,500
Gross margin Gross profit ÷ Revenue 41.9%
Overhead 22% of revenue (company's rate) $40,700
Net profit Gross profit − Overhead $36,800
Net margin Net profit ÷ Revenue 19.9%

A gross margin that looks strong can hide a weak net margin if overhead is high. Conversely, a contractor with tight overhead can run lower gross margins and still generate solid net profit. Know both numbers. The BidFlow Profit Margin Calculator gives you gross margin and markup per job - pair that with your overhead rate to arrive at true net profitability. Run this calculation on every completed job and your estimating will improve faster than any other single discipline.

What healthy margins look like by trade

Margins vary significantly by trade, region, and business model. These ranges are directional - your actuals should be built from your own cost structure, not industry averages.

Trade / Segment Typical Gross Margin Typical Net Margin
General contractor (residential) 20–30% 5–10%
General contractor (commercial) 15–25% 3–8%
Electrical / plumbing / HVAC 30–45% 10–18%
Roofing / exterior 35–50% 12–20%
Concrete / site work 20–35% 6–12%
Specialty / design-build 40–60% 15–25%

If your gross margins consistently fall below the low end of your trade range, the problem is either pricing (bids are too low), cost control (job costs running over estimate), or scope (you're absorbing change orders without billing them). Margin data, tracked per job, tells you exactly which problem you have.

Ready to stop losing project details?

Keep every estimate, note, and approval in one timeline your whole crew can trust. Free to start.

Start Your Free Project

Put these numbers to work

Contractor Profit Margin Calculator

Free. 30 seconds. No account needed.

Open calculator

By BidFlow Editorial · Last verified