← Back

Discount Calculator

Percent-off or spend-X-get-Y off, final price and savings

Result
Amount to pay 239.20
You saved 59.80

About Discount Calculator

The Discount Calculator handles the two most common kinds of promotion: a percentage price cut, and "spend X, get Y off". Enter the original price and the rule, and it shows what you will pay and how much you save, both to two decimal places. It works on a single price (or one combined total). It does not stack several coupons, add tax or shipping, or tell you which offer is better. To compare offers, run each one in turn.

How to use it

  1. Under "Calculation mode", choose "Percent off" or "Spend-and-save".
  2. Type the price into "Original price". The page starts with 299 filled in.
  3. In Percent off mode, enter the share of the price you will pay: 80 means you pay 80% (20% off), 85 means you pay 85%. The field is the amount you pay, not the amount taken off.
  4. In Spend-and-save mode, fill in "Spend threshold" and "Amount off". For "spend 300, get 50 off", enter 300 and 50.
  5. The result boxes show "Amount to pay" and "You saved", and update immediately whenever you change a number.

Worked example

These figures come from running the same formulas the tool uses. With an original price of 299 and 80 in the discount field, you pay 299 x 80% = 239.20 and save 59.80. Change the field to 85 and you pay 254.15, saving 44.85. Now the spend-and-save mode: the price is 299 and the offer is spend 300, get 50 off. Because 299 is below the 300 threshold the offer does not apply, so the tool shows 299.00 to pay, 0.00 saved, and a red note that no discount was applied. That is the classic trap with threshold offers: being 1 short costs you the whole 50, which is why a quick calculation before topping up a cart is worthwhile.

Supported features and known limits

  • Percent off mode treats the field as a percentage: amount to pay = price x field / 100, and savings = price - amount to pay.
  • An empty discount field is treated as 100 (no discount); entering 0 means you pay 0% of the price, i.e. free.
  • The discount field is clamped to 0-100: values above 100 are treated as 100, negatives as 0, and a negative original price as 0.
  • Spend-and-save supports one threshold only. It cannot do repeating rules such as "10 off for every 100" or tiered offers.
  • If "Amount off" is larger than the price and the threshold is met, the amount to pay bottoms out at 0 and never goes negative.
  • The calculation is currency-neutral, although the Chinese interface labels amounts in yuan. Treat the numbers as whatever currency you are using.
  • Results use standard floating-point arithmetic rounded to two decimals, so the last cent can occasionally differ from a shop's own rounding rule.

Should I enter 80 or 20 for "20% off"?

Enter 80. The field is the percentage you pay. 20% off means paying 80% of the price. If you entered 20 the tool would assume you pay only 20%, which is an 80% discount.

Which is better, a percentage discount or spend-and-save?

It depends on the price. Calculate the percent-off result first, then switch to Spend-and-save with the same original price and compare the two amounts to pay. Remember that a threshold offer only counts if you reach it, so include any extra spending needed to qualify.

Why does entering 0 give me a price of 0?

The field is the percentage you pay, so 0 means paying 0% of the price, which is free. Only an empty field is treated as 100, meaning no discount.

Can it combine offers, such as a discount then a threshold deal?

Not in one step. If the shop applies the percentage first and then the threshold offer, do it in two passes: get the discounted price in Percent off mode, then use that figure as the original price in Spend-and-save mode. Always follow the shop's own stated order of application.

Privacy and how your data is handled

Everything is calculated in your browser. The code does not send the prices or percentages you enter to any server and does not keep a history. Refreshing the page resets the fields to their defaults.