Skip to main content

Free Percentage Calculator

Calculate percentages instantly: find X% of Y, what percentage X is of Y, and the percentage change between two values.

Works offline once loaded

What is X% of Y?

%
of
=

15 ÷ 100 × 200 = 30

X is what % of Y?

is what % of
=

30 ÷ 200 × 100 = 15%

Percentage change from A to B

→
=

(100 − 80) ÷ |80| × 100 = 25%

Increase of 25%

X is Y% of what number?

is
%
of

30 ÷ 15 × 100 = 200

Increase or decrease X by Y%

by
%
=

200 × (1 + 15 ÷ 100) = 230

Common uses

  • Calculate Sale Prices and DiscountsFind the discounted price, savings amount, and percentage off for any sale or promotional discount.
  • Calculate Exam Scores and GradesConvert raw exam scores to percentages, calculate grade averages, and find what score you need.
  • Calculate Financial PercentagesCalculate interest, tax, commission, profit margins, and other financial percentages.
  • Calculate Statistical PercentagesFind proportions, relative frequencies, and percentage distributions for data analysis.
  • Calculate Health and Fitness PercentagesCalculate body fat percentage targets, nutrition macros, and fitness goal progress in percentages.

How It Works

All five calculation modes run entirely in the browser using plain JavaScript arithmetic — there are zero external libraries and no server involved. Results update live as you type, formatted using the browser's built-in toLocaleString API to match your locale's number conventions.

  1. 1
    Select a calculation mode
    Five distinct modes are displayed simultaneously: find X% of Y, determine what percentage one number is of another, compute percentage change between two values, reverse-solve for the original total, and apply a percentage increase or decrease. Each operates independently.
  2. 2
    Live arithmetic via useMemo
    Each mode's inputs are wired to a React useMemo hook. The moment a value changes, the corresponding formula runs instantly in the browser — for example, percentage change is computed as ((to − from) / |from|) × 100, with no debounce or button press needed.
  3. 3
    Locale-aware number formatting
    Results are formatted using JavaScript's toLocaleString, which delegates to the browser's built-in Intl engine. This means thousands separators and decimal marks automatically reflect the user's locale — a European visitor sees 1.234,56 while a US visitor sees 1,234.56.
  4. 4
    Click to copy any result
    Each result box is a button that calls navigator.clipboard.writeText, placing the formatted number on the clipboard. A brief checkmark confirms the copy without any page navigation or modal.

Related Tools

Frequently Asked Questions