Skip to content

Z-Score Calculator

Z-score

z = 2

Percentile
97.724994th
Interpretation
2.00 standard deviations above the mean

Percentile assumes the underlying data is normally distributed.

Estimates for educational purposes — not financial, medical, or legal advice. See terms.

Compute the z-score (standard score) of a raw value given its distribution’s mean and standard deviation. Optionally show the corresponding percentile under the normal-distribution assumption via the cumulative distribution function of the standard normal.

The formula

z = (x − μ) / σ

where x is the raw value, μ is the mean of the distribution, and σ is the standard deviation. The result is a dimensionless number: positive for values above the mean, negative for below, with magnitude measured in standard-deviation units.

Example: IQ scores

IQ tests are calibrated to have mean 100 and standard deviation 15. What’s the z-score for an IQ of 130?

z = (130 − 100) / 15 = 2.0

That’s two standard deviations above the mean. Under the normal assumption (which IQ tests are normed against), this corresponds to about the 97.7th percentile — only about 2.3% of people score 130 or above.

Example: converting a raw test score to a percentile

A standardised test has mean 500 and stdev 100. You score 650. z = (650 − 500) / 100 = 1.5. Percentile ≈ 93.3rd — you scored better than about 93% of test-takers.

Example: comparing scales

You got 85 on a quiz (class mean 75, stdev 8) and 30 on a programming challenge (cohort mean 25, stdev 3). Which was the more impressive performance?

  • Quiz: z = (85 − 75) / 8 = 1.25
  • Challenge: z = (30 − 25) / 3 ≈ 1.67

The challenge score is more impressive — further above the mean in standardised units, even though the raw number is lower. This is exactly what z-scores are for: comparing performance across differently-scaled distributions.

The percentile calculation

Under the assumption that the underlying data is normally distributed, the z-score maps to a percentile via the cumulative distribution function (CDF) of the standard normal distribution:

Φ(z) = (1 + erf(z / √2)) / 2

where erf is the error function. The tool computes erf using the Abramowitz & Stegun approximation 7.1.26, accurate to about 1.5 × 10⁻⁷ across the real line. The percentile is then Φ(z) × 100%.

Common z-score benchmarks

zPercentileTwo-sided area
050.00%
±0.6775 / 2550%
±184.13 / 15.8768.27%
±1.64595.0 / 5.090%
±1.9697.5 / 2.595%
±297.72 / 2.2895.45%
±2.5899.5 / 0.599%
±399.87 / 0.1399.73%

The “one-sigma, two-sigma, three-sigma” rule of thumb comes from the last column: about 68%, 95%, and 99.7% of normal data falls within 1, 2, 3 standard deviations of the mean. This is a useful mental model for any roughly normal distribution.

Normal vs. real-world distributions

The percentile calculation assumes the data is normally distributed. Many real-world distributions are approximately normal — heights, IQ scores, measurement errors, sums of many small independent effects (central limit theorem). But plenty aren’t:

  • Income, wealth, city sizes — follow heavy-tailed distributions (log-normal, power-law). Normal-CDF percentiles at the tail will badly underestimate how extreme outliers are.
  • Reaction times, failure times — typically right-skewed (log-normal or gamma).
  • Discrete distributions — binomial, Poisson, geometric. For these, use the discrete CDF not the normal approximation.

For any real-world dataset, the percentile from the tool is valid to the extent that your data is normal. Always check — plot a histogram, look at skewness, or apply a Shapiro-Wilk test.

What this tool does not do

It doesn’t compute z-scores for every value in a list. For bulk standardisation of a dataset (producing z-scores for each row), you’d want a spreadsheet or a stats library. This tool is for a single value. If you need the mean and standard deviation of your raw data first, the descriptive statistics calculator computes both.

It doesn’t handle non-normal distributions. The percentile calculation assumes normality. For t-distributions, chi-square, exponential, or any other distribution, you need a dedicated tool or library.

It doesn’t do hypothesis tests. “Is this z-score statistically significant?” is a separate question with answer depending on one-vs-two-tailed, significance level, etc. Use a hypothesis-test calculator.

It doesn’t work backwards — given a percentile, find the z-score. That’s the inverse CDF (the probit function), which is a different numerical problem. For that, use a percentile-to-z tool or a stats library.

It doesn’t support small-sample t-scores. For sample sizes below about 30, Student’s t-distribution is often preferred over the normal. The tool uses the normal unconditionally; for small samples, the result is approximate.

Frequently asked questions

What is a z-score?

A z-score (or standard score) measures how many standard deviations a value is from the mean. z = (x − μ) / σ. A z-score of 0 means the value equals the mean. A z-score of +1 means one standard deviation above; −1 means one below. Z-scores are dimensionless — the units cancel out — which makes them useful for comparing values across different scales. A test score 2 standard deviations above the mean is 'as extreme' as a height 2 standard deviations above the mean, even though the raw units are completely different.

How does the percentile work?

Under the assumption that the underlying data is normally distributed (bell-curve shaped), a z-score maps to a percentile via the cumulative distribution function of the standard normal N(0, 1). The tool computes the CDF using a standard error-function (erf) approximation that's accurate to about 7 decimal places — well beyond what percentile display needs. If your data isn't actually normal, the percentile is off — real data often has heavier tails than the normal distribution, so very extreme percentiles (99.9th or 0.1st) overestimate how rare those values really are.

What are some common z-score benchmarks?

z = 0 → 50th percentile (exactly the mean). z = ±1 → 84th / 16th percentile (about one standard deviation covers 68% of the data). z = ±1.645 → 95th / 5th (the threshold for a one-tailed 95% confidence level). z = ±1.96 → 97.5th / 2.5th (the two-tailed 95% CI). z = ±2 → 97.7th / 2.3rd (about 95% within two stdevs — the 'two sigma' rule). z = ±3 → 99.87th / 0.13rd (three-sigma rule, ~99.7% coverage). These come up constantly in stats, quality control, and psychometrics.

Does the tool assume sample or population standard deviation?

The tool doesn't care — it just takes whatever number you put in the stdev field. Use the stdev that matches how you're thinking about the problem. If you know the true population stdev (rare), use that. If you're estimating from a sample, you typically use the sample stdev (n − 1 denominator). The z-score formula is the same either way; what changes is how you interpret the result. For small samples (n < 30), people often use the Student's t-distribution instead of normal, but that's a different tool.

Why can't I set the standard deviation to zero?

Because dividing by zero is undefined. If every value in your dataset equals the mean, there's zero variance, and 'how far is x from the mean in standard-deviation units' has no meaningful answer — you'd be dividing a potentially nonzero numerator by zero. The tool surfaces this as a domain error rather than returning Infinity or NaN. In practice, a zero standard deviation means your data has no variation, which is unusual — if you encounter this, check whether you really meant to compute a z-score at all.