Add Percentage Calculator (and Subtract a Percentage)
Add percentage calculator that adds a percentage to a number or subtracts one, with the multiplier used. It also covers how to add percentages, how to subtract a percentage from a number, and adding percentages for tax, tips and pay rises.
Example values are filled in. Replace them with your own.
Result
84
Working
- 1 + 40 ÷ 100 = 1.4
- 60 × 1.4 = 84
- Amount added or removed
- 24
- Multiplier
- 1.4
You have a $1,200 invoice and need to add 8.25% sales tax, or a $240 price that has to come down by 15%. Skip the percent-of step: multiply by 1.0825 to add, or by 0.85 to subtract, and you have the final figure in one go.
Enter a number and a percentage into this add percentage calculator, pick add or subtract, and it returns the new total, the amount added or removed and the multiplier it used. Below it you will find the formula, six worked examples and what to do when you want to add percentages together instead. It works as an adding percentage calculator for tax, tips and pay rises, and as a subtract percentage calculator for discounts and cuts.
How to add percentages and how to subtract them
Quick answer: to add a percentage to a number, multiply it by 1 plus the percentage as a decimal. To subtract, multiply by 1 minus it. Adding 20% to 80 is 80 × 1.2 = 96, and subtracting 20% from 80 is 80 × 0.8 = 64.
How to add a percentage to a number
- Convert the percentage to a decimal by dividing by 100: 20% is 0.2.
- Add 1 to get the multiplier: 1.2.
- Multiply the number by the multiplier: 80 × 1.2 = 96.
How do you add percentages to a base number? In one step, as above. The long way, 20% of 80 is 16 and 80 + 16 = 96, gives the same answer.
How to subtract a percentage from a number
- Convert the percentage to a decimal: 15% is 0.15.
- Subtract it from 1 to get the multiplier: 0.85.
- Multiply: 240 × 0.85 = 204.
The same steps work for whole numbers such as a stock count. On a calculator the % key behaves differently between models, so the multiplier is the safe route: type 240 × 0.85.
Undoing an added percentage
Adding 20% is × 1.2 and subtracting 20% is × 0.8. To undo an addition, divide by the multiplier: 96 ÷ 1.2 = 80. The reverse percentage calculator does this for you.
Adding percentages together vs adding a percentage to a number
Adding a percentage to a number scales the number, as above. Adding percentages together is a different job. Two 10% increases are × 1.1 twice, which is × 1.21, so 21%, not 20%, because the second 10% applies to the larger amount. For several percentages that describe different groups, use the average percentage calculator. To find the change between two numbers instead, use the percentage increase calculator or the percentage decrease calculator.
Add or subtract a percentage in Excel and Google Sheets
With the number in A2 and the percentage in B2 (formatted as a percentage, so 15% is stored as 0.15), type =A2*(1+B2) to add and =A2*(1-B2) to subtract. The percentages in Excel guide covers more formulas.
Worked examples: adding and subtracting a percentage
Example 1: add sales tax to an invoice
Given
Answer
Example 2: subtract a discount
Given
Answer
Example 3: add a pay rise
Given
Answer
Example 4: add a tip
Given
Answer
Example 5: subtract 12.5% from a quantity
Given
Answer
Example 6: two changes in a row
Given
Answer
Multiplier chart
Multiply by the figure in the add or subtract column.
| Percentage | Add (multiply by) | Subtract (multiply by) |
|---|---|---|
| 5% | 1.05 | 0.95 |
| 10% | 1.1 | 0.9 |
| 12.5% | 1.125 | 0.875 |
| 15% | 1.15 | 0.85 |
| 20% | 1.2 | 0.8 |
| 25% | 1.25 | 0.75 |
| 50% | 1.5 | 0.5 |
Code: add or subtract a percentage in JavaScript and Python
Both versions reproduce the examples above (1,299, 204, 53,820, 75.52, 420, 121 and 96), reject non-numeric input and accept only the two modes.
JavaScript
function finite(name, v) { if (typeof v !== "number" || !Number.isFinite(v)) throw new TypeError(`${name} must be a finite number`);}function places(decimals) { if (!Number.isInteger(decimals) || decimals < 0 || decimals > 10) throw new RangeError("decimals must be a whole number from 0 to 10"); return decimals;}// mode: "add" or "subtract"export function applyPercent(value, percent, mode = "add", decimals = 2) { finite("value", value); finite("percent", percent); if (mode !== "add" && mode !== "subtract") throw new RangeError('mode must be "add" or "subtract"'); const d = places(decimals); const multiplier = mode === "add" ? 1 + percent / 100 : 1 - percent / 100; const result = value * multiplier; return { result: Number(result.toFixed(d)), change: Number((result - value).toFixed(d)), multiplier: Number(multiplier.toFixed(10)), };}// Two changes in a row, e.g. +10% then +10%export function chainPercent(value, steps, decimals = 2) { finite("value", value); const d = places(decimals); let result = value; for (const [mode, percent] of steps) { finite("percent", percent); if (mode !== "add" && mode !== "subtract") throw new RangeError('mode must be "add" or "subtract"'); result *= mode === "add" ? 1 + percent / 100 : 1 - percent / 100; } return Number(result.toFixed(d));}Python
from decimal import Decimal, ROUND_HALF_UPimport mathdef _num(name, v): if isinstance(v, bool) or not isinstance(v, (int, float, Decimal)) or not math.isfinite(float(v)): raise ValueError(f"{name} must be a finite number") return Decimal(str(v))def _round(x, decimals): if not isinstance(decimals, int) or isinstance(decimals, bool) or not 0 <= decimals <= 10: raise ValueError("decimals must be a whole number from 0 to 10") return x.quantize(Decimal(1).scaleb(-decimals), rounding=ROUND_HALF_UP)def _factor(mode, percent): if mode not in ("add", "subtract"): raise ValueError('mode must be "add" or "subtract"') p = _num("percent", percent) / 100 return 1 + p if mode == "add" else 1 - pdef apply_percent(value, percent, mode="add", decimals=2): v = _num("value", value) m = _factor(mode, percent) result = v * m return { "result": _round(result, decimals), "change": _round(result - v, decimals), "multiplier": m, }def chain_percent(value, steps, decimals=2): result = _num("value", value) for mode, percent in steps: result *= _factor(mode, percent) return _round(result, decimals)chainPercent(100, [["add", 10], ["add", 10]]) returns 121 and chainPercent(100, [["add", 20], ["subtract", 20]]) returns 96, the two-change example. Round only for display. The Python version rounds half up, which is the usual school convention, and returns Decimal values, so 1,299 prints as 1299.00. JavaScript's toFixed works on the binary value, so a result on a tie can round down where school convention rounds up.
Privacy and input safety
- Values are calculated in your browser. The numbers you enter are not sent to a server or stored.
- Fields accept numbers only, with an optional trailing % sign on the percentage. Text, empty fields, NaN and Infinity are rejected with a message, and nothing you type is ever evaluated as code.
- A negative percentage is accepted and reverses the direction: adding -10% is the same as subtracting 10%.
- Subtracting more than 100% gives a negative total. The calculator shows it with a short note rather than blocking it, because it is the correct arithmetic.
- Decimal places are limited to a whole number from 0 to 10.
- A comma followed by exactly three digits is read as a thousands separator, so 1,200 is 1200. Any other comma is a decimal point, so 12,50 is 12.50, and a number starting with 0, such as 0,500, is read as a decimal. Mixed formats such as 1.234,5 and ambiguous entries such as 1,2,3 are refused instead of guessed. Spaces, including no-break spaces, between digit groups are ignored.
Common mistakes when adding or subtracting a percentage
| Mistake | What goes wrong | What the calculator does |
|---|---|---|
| Reporting the percent of the number as the answer | 15% of 240 is 36, but 240 minus 15% is 204 | Shows the new total and the amount separately |
| Adding the percent as a plain number | 80 + 20 gives 100, not 96 | Converts to a multiplier first |
| Using the wrong multiplier to subtract | 80 × 1.2 is 96, not the 64 you get after subtracting 20% | Uses 1 minus the decimal to subtract |
| Adding then subtracting the same percentage | +20% then -20% on 100 gives 96, not 100 | Chains the multipliers from the changing base |
| Adding two 10% rises as 20% | Two rises of 10% in a row make 21% | Multiplies 1.1 by 1.1 |
| Typing 15 instead of 15% in a spreadsheet formula | =A2*(1+B2) with B2 holding 15 gives 3,840 for 240, not 276 | Takes the percentage as a percent |
| Rounding the multiplier | 1.0825 shortened to 1.08 gives 1,296, not 1,299 | Rounds only the final total |
| Reading a negative total as an error | Subtracting 120% from 50 gives -10 | Shows it with a note |
Which calculation do you need?
These five jobs use similar numbers but need different formulas.
| What you want | Formula | Example | Where to do it |
|---|---|---|---|
| The new total after adding or subtracting p% | Number × (1 ± p ÷ 100) | 240 minus 15% = 204 | This page |
| p% of a number | Number × p ÷ 100 | 15% of 240 = 36 | Home calculator |
| The sale price after a discount | Price × (1 − discount ÷ 100) | $240 at 15% off = $204 | Percent off calculator |
| The percentage between two numbers | (New − old) ÷ old × 100 | 204 from 240 is -15% | Percentage decrease calculator |
| The original before a percentage was added | New ÷ multiplier | 96 ÷ 1.2 = 80 | Reverse percentage calculator |
The first and third rows give the same number when the percentage is a discount. Use the percent off calculator when you start from a price tag and want the sale price.