Percentage calculator
The four questions people actually ask about percentages, plus the one they ask next, in a single calculator: what X% of Y is, what percentage one number is of another, the rise or fall between two figures, and a number with a percentage added or taken off. Every answer comes with the amount, the rate and the running total, so the figure cannot be read as the wrong quantity.
The same base at common percentages
| 1.00% | 2 | 202 | 198 |
| 2.00% | 4 | 204 | 196 |
| 5.00% | 10 | 210 | 190 |
| 10.00% | 20 | 220 | 180 |
| 12.50% | 25 | 225 | 175 |
| 15.00% | 30 | 230 | 170 |
| 20.00% | 40 | 240 | 160 |
| 25.00% | 50 | 250 | 150 |
| 30.00% | 60 | 260 | 140 |
| 40.00% | 80 | 280 | 120 |
Results are provided as-is, with no warranty of accuracy. The method and its sources are published below so you can check the working.
How it works
What this works out
Percentages are five questions wearing one word, and most calculators answer only the first. “What is 15% of 200” and “15 is what per cent of 200” use the same two numbers and give different answers, and the difference between “the price rose 25%” and “the price is 25% of what it was” is somebody’s rent.
So the mode selector is the tool. Pick the question, put the same two numbers in both boxes whichever question you picked, and the panel shows all four related quantities at once: the answer, the amount, that amount as a rate, and the starting value with the amount applied. Reading them together is what stops a percentage being mistaken for an amount.
The method
Underneath the five modes there is one calculation. A percentage question always
has a base — the number the rate is measured against — a rate, an
amount equal to base x rate / 100, and a total afterwards equal to
base + amount. Choosing a mode chooses which two of those four you are
supplying; the other two follow.
Two choices in that are worth stating. The first is that percentage change
divides by the starting value, never the ending one. From 40 to 50 the
difference is 10, and 10 over 40 is 25%; 10 over 50 would be 20%, which is the
answer to “50 fell to 40”, a different question. The second is that a decrease
is stored as a negative rate rather than as a subtraction. That keeps the amount
signed and keeps after = base + amount true in all five modes, so the panel
never has to special-case a direction — and a negative rate typed into the
increase mode does the sensible thing on its own.
The arithmetic runs in decimal rather than in the browser’s binary floating
point. A JavaScript number is an IEEE 754 double, which cannot hold 1.15 or 0.1
exactly, so 1.15 x 0.1 evaluates to 0.11499999999999999. On a page where
somebody is checking a discount that is a wrong answer, however small, so every
figure here goes through arbitrary-precision decimal arithmetic and is rounded
once, at the end, to ten places.
Before you read on
From 40 to 50 is a rise of 25%. What is the fall from 50 back to 40?
20%. Percentage change divides by the starting value, never the ending one — so going up it is 10 over 40, and coming back down it is 10 over 50. The two directions of the same move are not the same percentage and never can be, which is why a 50% fall needs a 100% rise to undo it. That single rule is behind most of the arguments people have about this arithmetic.
amount = base x rate / 100The only multiplication there is. The base is whatever the rate is measured against.
after = base + amountAnd the total afterwards is always the base plus it. A decrease is a negative rate, not a subtraction, which keeps this line true in every mode.
rate = amount / base x 100The same equation rearranged, for when you have the amount and want the rate. That is the "A is what % of B" mode.
rate = (b - a) / a x 100Percentage change is that line again, with the difference as the amount and the starting value as the base. From 40 to 50 is 10 over 40, not 10 over 50.
A worked example
The same handful of numbers through all five modes:
| Question | A | B | Answer | The amount | As a percentage | Start plus the amount |
|---|---|---|---|---|---|---|
| A% of B | 15 | 200 | 30 | 30 | 15% | 230 |
| A is what % of B | 30 | 200 | 15 | 30 | 15% | 230 |
| From A to B | 40 | 50 | 25 | 10 | 25% | 50 |
| A increased by B% | 200 | 15 | 230 | 30 | 15% | 230 |
| A decreased by B% | 80 | 20 | 64 | -16 | -20% | 64 |
The arithmetic, written out:
15% of 200
200 x 15 / 100 = 30
200 + 30 = 230
From 40 to 50
50 - 40 = 10
10 / 40 x 100 = 25
80 decreased by 20%
80 x -20 / 100 = -16
80 + -16 = 64
And the case that decides whether the arithmetic is done properly:
10% of 1.15
decimal = 0.115
binary float = 0.11499999999999999
The table below the result runs the same base past the percentages people ask for most, with your own rate slotted into place among them. At a base of 200 that is 2, 4, 10, 20, 25, 30, 40, 50, 60, 80, 100, 120, 150, 180 and 200, and it downloads as a spreadsheet.
These are the same numbers asserted in this tool’s test file, so if the formula ever changes without this page changing with it, the build fails.
What it does not do
It does not know what your numbers are. There is no currency, no unit and no rounding to pence, because 0.435 is the right answer to 5% of 8.70 and turning it into 0.44 is a decision only you can make. It does not compound: five consecutive 10% rises are not a 50% rise, and working that out is a job for a growth calculator rather than this one. It does not handle percentage points as a separate quantity — the FAQ explains the difference, but the boxes take plain numbers. And with a negative starting value it reports the textbook sign, which is the size of the change rather than its direction on the number line.
That growth calculator is compound interest, which applies the rise again to the result instead of once to the start. It is the same percentage doing a different job.
The formula
Every percentage question is the same four quantities:
base the number the percentage is measured against
percent the rate
amount base x percent / 100
after base + amount
Each mode fixes two of them and the other two follow:
A% of B base = B, percent = A
A is what % of B base = B, amount = A, percent = amount / base x 100
From A to B base = A, amount = B - A, percent = amount / base x 100
A increased by B% base = A, percent = B
A decreased by B% base = A, percent = -B
after = base + amount, in every mode, including the ones where the amount
is negative.
When base = 0 the percentage is undefined and the tool says so rather than
dividing.
What it assumes
- Percentage change is measured against where you started, never where you ended. From 40 to 50 is a 25% rise; the same 10 over 50 would be 20%, and the two are different answers to different questions.
- With a negative starting value the sign follows the textbook formula rather than the direction of travel. From -40 to -50 reads as a 25% increase, because the size of the figure grew by a quarter.
- A base of zero has no percentage, so the answer is a dash. An infinite figure on a page somebody is checking a bill against is worse than no figure at all.
- Arithmetic is decimal, not binary floating point. 10% of 1.15 comes out as 0.115 rather than 0.11499999999999999, which is what the same sum gives in a double.
- Figures are carried to ten decimal places and displayed to two. The sentence beside the answer rounds to four, because a repeating decimal written out in full is unreadable in prose.
- Nothing is rounded to a currency. The tool does not know whether the numbers are pounds, kilograms or exam marks, so it will not silently turn 0.435 into 0.44.
Common questions
How do I work out the percentage change between two numbers?
Subtract the old value from the new one, divide by the old value, and multiply by 100. The division is always by where you started, which is the step people skip: from 40 to 50 is a 25% rise, and from 50 to 40 is a 20% fall, even though both moved by ten. A change is only meaningful relative to its own starting point.
Why does a 50% fall not get undone by a 50% rise?
Because the second percentage is taken of a smaller number. 100 less 50% is 50, and 50 plus 50% is 75, not 100. Getting back to 100 from 50 takes a 100% rise. The same asymmetry is why two stacked discounts never add up to the sum of the two.
Why is the answer showing a dash?
Because the number being measured against is zero, and nothing has a percentage of zero. "30 is what per cent of 0" and "the change from 0 to 50" both have no finite answer, so the tool shows a dash rather than inventing one. Change the second number and the answer returns.
Why does 10% of 1.15 come out as 0.115 here and 0.11499999999999999 elsewhere?
Because most calculators, including every one built on a plain JavaScript number, work in binary floating point, which cannot represent 1.15 or 0.1 exactly. This tool does the arithmetic in decimal, so the answer is the one you would get on paper. The difference is tiny until it is multiplied by a few thousand rows.
Are the numbers I type sent anywhere?
No. The calculation runs in this browser tab and there is no server to send it to. The figures do appear in the address bar so a link can carry them to somebody else, and a fragment after the # is never transmitted in an HTTP request.
Sources
Method written and checked by Tessalor on Jul 30, 2026.