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
MarkupMarginMarginMarkup
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 haveYou wantDo this
Cost and priceMarkup(price − cost) ÷ cost × 100
Cost and priceMargin(price − cost) ÷ price × 100
Cost and target markupPricecost × (1 + markup)
Cost and target marginPricecost ÷ (1 − margin)
Price and marginCostprice × (1 − margin)
MarkupMarginmarkup ÷ (1 + markup)
MarginMarkupmargin ÷ (1 − margin)
Prism Calculator icon

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.