Free markup ↔ margin converter
Type a markup and see the margin it really earns. Or type the margin you want and see the markup that gets you there. The third box shows the same answer in dollars, because percentages hide things dollars don't.
Margin = markup ÷ (1 + markup). Markup = margin ÷ (1 − margin). Runs in your browser — nothing you type is sent or saved.
Here is the trap this converter exists for. A contractor decides he wants to "make 20%." He bids his $10,000-cost job with a 20% markup — $12,000 — believing he just built in a 20% margin. He did not. The margin on that price is 16.7%. On this one job the difference is $400 of profit he thinks he has and does not; across a $500,000 year it is real money — gone not to a bad sub or a material spike, but to a definition.
The rule that keeps you out of it: bid with markup, judge with margin, and never let one number wear the other one's name. To actually earn 20% margin, the converter above shows you need a 25% markup. The full explanation with both formulas is in markup vs. margin, explained in 60 seconds.
| If you want this margin | Bid this markup |
|---|---|
| 10% | 11.1% |
| 15% | 17.6% |
| 20% | 25% |
| 25% | 33.3% |
| 30% | 42.9% |
| 40% | 66.7% |
Notice how the gap widens as the numbers climb — a 40% margin needs a 66.7% markup. Contractors chasing bigger margins with modest markups are chasing something the arithmetic does not allow. And the gap compounds quietly with volume: a five-point misunderstanding on one $12,000 job is a few hundred dollars, but the same misunderstanding applied to every bid all year is a full crew-week of profit that was never on any invoice.
For the pricing side of a whole job — labor, materials, subs, then markup — start at the markup calculator or the full job cost calculator.
Pull your last five finished jobs. For each one, write three numbers side by side: the markup you bid, the margin you believed you were getting, and the margin the books actually show. If columns two and three match, your definitions are clean — whatever else needs work, it is not this. If column two looks like column one, you have been reading your markup as your margin, and every bid on your desk right now inherits the same gap.
Then run the fix forward, not backward: decide the margin your company needs, convert it once with the calculator above, and write the resulting markup on the bid sheet as the standing number. One conversion, done correctly one time, repairs every future bid — which is a better hourly rate than almost anything else on this site.
Every number on this page assumes you know the job's true cost. Most contractors don't — I lost $7,500 on one bathroom to receipts that never got counted. Job Cost Pro keeps the cost side honest: snap receipts at the counter, they land on the job, margin updates live. Free forever for 3 projects and 50 receipts a month.
Margin % = markup ÷ (1 + markup). A 50% markup: 0.50 ÷ 1.50 = 33.3% margin. The margin is always the smaller number, because the same profit dollars are divided by the bigger base (price instead of cost).
Markup % = margin ÷ (1 − margin). A 20% margin: 0.20 ÷ 0.80 = 25% markup. So to actually earn a 20% margin, you must mark costs up 25% — bidding "20% markup" gets you only 16.7%.
A 100% margin would mean the job cost you nothing — all price, zero cost. As margin approaches 100%, the equivalent markup grows without limit (a 90% margin is a 900% markup). That is why the calculator stops accepting margins at 99.9%.
Bid with markup (it is applied to cost, which is what you estimate), but judge the job by margin (it is what your P&L reports). The trap is quoting your markup number as your margin — a "30% markup" job is a 23.1% margin job before anything goes wrong.
The question has no universal answer — a 50% markup is a 33.3% margin, and whether that margin works depends on your overhead. With overhead figured as a percent of revenue, a company running 25% overhead keeps 8.3 points of profit at that markup; one running 15% keeps 18.3. Know your overhead percentage first, then judge the markup.
No. It runs entirely in your browser — nothing you type is sent or saved.