How do you calculate markup?
Short answer. Markup is profit divided by cost. An item costing 40 and selling for 60 makes 20, so markup is 20 ÷ 40 = 50%. To price from cost, multiply by 1 plus the markup: 40 × 1.5 = 60. Margin divides that same 20 by the price instead: 20 ÷ 60 = 33.33%.
Markup is one division. The reason it fills accounting forums is that there is a second, nearly identical division sitting next to it, and picking the wrong one quietly costs you money on every item you sell.
The formula
Take the profit and compare it to what the item cost you:
markup % = (price − cost) ÷ cost × 100 cost 40, price 60: profit = 60 − 40 = 20 markup = 20 ÷ 40 = 0.5 = 50%
Running it forwards, to turn a cost into a price, is a single multiplication. Add the markup to 1 and multiply:
price = cost × (1 + markup) cost 18.50, markup 60%: 18.50 × 1.60 = 29.60 profit = 29.60 − 18.50 = 11.10
That is the whole of markup. Everything else in this post is about the other division.
Markup and margin are not the same number
Markup divides the profit by the cost. Margin divides the same profit by the price. The profit does not change. Only the thing you are comparing it to changes:
cost 40, price 60, profit 20 markup 20 ÷ 40 = 0.5 = 50% compared to cost margin 20 ÷ 60 = 0.3333… = 33.33% compared to price
The price is always bigger than the cost, so the margin is always the smaller percentage. Same 20 dollars, two honest-looking numbers, and one of them makes your business sound half as profitable as the other. This is why a supplier quotes markup and a finance report quotes margin.
Converting between them
Both directions are one division:
margin = markup ÷ (1 + markup) markup = margin ÷ (1 − margin) 50% markup → 0.5 ÷ 1.5 = 0.3333… = 33.33% margin 40% margin → 0.4 ÷ 0.6 = 0.6667… = 66.67% markup
| Markup | Margin | Margin | Markup |
|---|---|---|---|
| 10% | 9.09% | 10% | 11.11% |
| 15% | 13.04% | 20% | 25% |
| 20% | 16.67% | 25% | 33.33% |
| 25% | 20% | 30% | 42.86% |
| 30% | 23.08% | 40% | 66.67% |
| 50% | 33.33% | 50% | 100% |
| 60% | 37.5% | 60% | 150% |
| 100% | 50% | 75% | 300% |
| 150% | 60% | Read the left pair markup to margin, the right pair margin to markup. | |
| 200% | 66.67% | ||
The row worth memorizing is 100% markup, 50% margin. Doubling the cost is called keystone pricing in retail, and it is the point where the two figures are furthest apart in the range anyone actually uses: an item costing 40 sells for 80, and 40 ÷ 40 is 100% while 40 ÷ 80 is 50%.
The trap: pricing for a target margin
Here is the mistake, and it is an expensive one. You want a 40% margin on an item that costs 30, so you mark it up by 40%:
Wrong 30 × 1.40 = 42
margin 12 ÷ 42 = 28.57% not 40%
Right 30 ÷ (1 − 0.40) = 30 ÷ 0.6 = 50
margin 20 ÷ 50 = 40%
which is a markup of 20 ÷ 30 = 66.67%
Marking up by the margin you want leaves you 11.43 percentage points short, every single time, on every item priced that way. To hit a target margin you divide by 1 minus the margin. You do not multiply by 1 plus it.
The same relationship runs backwards if you know the price and the margin and want the cost: multiply the price by 1 minus the margin. A 50 item at a 40% margin cost 50 × 0.6 = 30.
What a discount does to your margin
Discounts land on the price, but they come out of the profit, which is a much smaller number. Take the 50% markup item again, cost 40 and price 60, and run a 20% off sale:
Sale price 60 × 0.80 = 48 Profit 48 − 40 = 8 was 20 markup 8 ÷ 40 = 20% was 50% margin 8 ÷ 48 = 16.67% was 33.33%
A fifth off the price took 60% of the profit, and the margin landed on exactly half of what it was, because one third halved is one sixth. If you want the arithmetic of the discount itself, including why stacking two of them does not add up, see how to calculate a discount percentage.
Where the decimals go wrong
Margins love thirds and sevenths, which is bad news for a machine that stores numbers in binary. A 33.33% margin is really 33.333… forever, and a cost of 1.10 against a price of 1.30 is worse, because neither of those prices exists exactly in binary floating point:
Profit 1.30 − 1.10 = 0.19999999999999996 in binary floats
= 0.20 exactly
Margin that ÷ 1.30 × 100 = 15.38461538461538
0.20 ÷ 1.30 × 100 = 15.3846… = 15.38% rounded
One item, one cent of nothing. A price list with four thousand rows, each one rounded a hair the wrong way, and the total stops matching the accounts. It is the same fault as 0.1 + 0.2 = 0.30000000000000004, and it is why Prism holds these as exact rational numbers: 1.30 − 1.10 is 0.20, and a third stays a third until you ask for the rounded percentage at the end.
Quick reference
| You have | You want | Do this |
|---|---|---|
| Cost and price | Markup | (price − cost) ÷ cost × 100 |
| Cost and price | Margin | (price − cost) ÷ price × 100 |
| Cost and target markup | Price | cost × (1 + markup) |
| Cost and target margin | Price | cost ÷ (1 − margin) |
| Price and margin | Cost | price × (1 − margin) |
| Markup | Margin | markup ÷ (1 + markup) |
| Margin | Markup | margin ÷ (1 − margin) |
Or let the percentages tool do both divisions
Prism has a percentages calculator built in: percent change from 40 to 60 gives you the 50% markup, and 20 as a percent of 60 gives you the 33.33% margin. Percentages are free forever, with no ads and no subscription. See the app.