Skip to main content

Normal Distribution Probabilities, Percentiles & Curves

Calculate Z-Score, PDF, and CDF of a normal distribution. Visualize the bell curve and shaded probability area.

Last Updated: February 13, 2026

Φ(z) is the standard normal CDF, the probability that a standard normal random variable lands at or below z. Everything on this page reduces to evaluating Φ in one of four directions: forward (z → p), inverse (p → z, the percentile), one-tailed (Φ(z) or 1 − Φ(z)), or two-tailed (2·(1 − Φ(|z|))). For non-standard normals, z = (x − μ)/σ moves you onto the standard scale before any of the above runs.

The CDF uses a rational Chebyshev approximation; absolute error stays under 1.5×10⁻⁷, which matches NIST tables to six decimal places. Two practical notes. If your source reports σ² rather than σ, take the square root before entering. Typing 100 when σ is really 10 collapses every tail probability toward 0.5. And on Wald-style confidence intervals built off this CDF: fine for n ≥ 100, but for binomial proportions near 0 or 1 they undercover at small n. Switch to Wilson or Clopper-Pearson there.

Pick Your Probability Mode (≤, ≥, Between, Two-Tail)

Normal distribution probability calculations answer four distinct questions, and selecting the wrong mode returns the wrong number. Before computing anything, match your question to a mode.

Left-Tail: P(X ≤ x)

The left-tail mode returns cumulative probability from negative infinity up to your threshold. Use this when your question asks "what fraction falls below" or "how many score less than." CDF(x) is the left-tail probability—50% at the mean, approaching 0 far below and 1 far above.

Right-Tail: P(X ≥ x)

The right-tail mode equals 1 − CDF(x). Use this when you care about values exceeding a limit—defect rates above a tolerance, scores surpassing a cutoff, or claims exceeding a threshold. The right-tail shrinks as x moves above the mean.

Between: P(a ≤ X ≤ b)

The between mode computes CDF(b) − CDF(a) directly. Range questions—"what percentage of parts lie within spec" or "how likely is a reading between 80 and 90"—belong here. Enter both bounds; the calculator subtracts for you.

Two-Tail: P(|X − μ| ≥ |x − μ|)

The two-tail mode sums probability in both extremes—below −|z| and above +|z|. Two-sided hypothesis tests and symmetric confidence intervals require this mode. For z = 1.96 the two-tailed probability is 0.05, placing 2.5% in each tail.

Common mistake: Confusing right-tail with two-tail doubles the error. Right-tail at z = 1.96 is about 2.5%, not 5%. Always confirm which tail structure your problem demands before interpreting results.

Shade the Bell Curve and Read the Area

The calculator renders an interactive bell curve after you enter μ, σ, and your query value. Shaded regions visualize probability—area under the curve equals probability.

Understanding the PDF Height

The curve height at any point is the probability density function (PDF). PDF values are densities, not probabilities—units are "probability per unit x." The peak sits at μ, and the curve is symmetric around the mean. Taller and narrower curves indicate smaller σ; flatter and wider curves indicate larger σ.

Translating Shaded Area to Probability

The shaded region corresponds to your chosen probability mode. Left-tail shades everything from the left edge up to x. Right-tail shades from x out to the right edge. Between-bounds shades the interval from a to b. Two-tail shades both extreme tails simultaneously, leaving the center unshaded.

The numeric result panel shows the exact probability to several decimal places. Cross-check visually: a small sliver of shading should return a small probability, while most of the curve shaded should return a value near 1.

Using the Plot for Communication

The bell curve chart doubles as presentation material. Screenshot the shaded region for reports, lectures, or documentation. The visual clarifies which portion of the distribution you computed—helpful when explaining results to stakeholders or students.

Raw x vs Z-Score Conversion (When to Use Each)

Any normal distribution can be converted to the standard normal (μ = 0, σ = 1) using z = (x − μ) / σ, and reversed with x = μ + zσ. Both forms produce identical probabilities—only the scale differs.

When to Work in Raw Units (x)

Use raw x values when your question involves concrete measurements—test scores, weights, dollars, inches. Clients and non-statisticians understand "the probability of scoring below 70" better than "the probability at z = −0.5." Reporting results in original units improves interpretability.

When to Work in z-Scores

Use z-scores when comparing across different distributions. A student scoring z = 1.2 in Math and z = 0.8 in English performed relatively better in Math, regardless of raw score scales. Z-scores also simplify referencing published critical values—statistics textbooks list z = 1.645, z = 1.96, z = 2.576 for common confidence levels.

Calculator Toggle

The calculator converts automatically. Enter x along with μ and σ, and it computes z. Enter z directly with μ = 0, σ = 1 (or toggle z-mode if available) to skip conversion. Either way, CDF and tail probabilities match—standardization is purely a scaling operation.

Quick check: z = 0 always corresponds to x = μ. A positive z means x lies above the mean; negative z means x lies below. The magnitude tells how many standard deviations away from center.

Percentiles and Critical Cutoffs (Common Values)

Percentiles (quantiles) invert the CDF: given a probability p, return the x or z where P(X ≤ x) = p. Use the inverse CDF mode to compute arbitrary percentiles. Below are common critical values you encounter repeatedly in statistics.

Standard Percentile Reference

Percentilez-scoreTypical Use
50th (median)0.000Center of distribution
84th≈ 1.000One σ above mean
90th≈ 1.282One-sided 90% bound
95th≈ 1.645One-sided 95% bound
97.5th≈ 1.960Two-sided 95% CI upper
99th≈ 2.326One-sided 99% bound
99.5th≈ 2.576Two-sided 99% CI upper

The 68-95-99.7 Shortcut

For quick mental estimates: 68% of values lie within ±1σ, 95% within ±2σ, 99.7% within ±3σ. Values beyond three standard deviations are rare—less than 0.3% probability—and often flagged as outliers in quality control.

Finding Any Percentile

Enter the target probability in inverse CDF mode. The calculator returns the x (or z) cutoff. For the 75th percentile, input 0.75—the result is the value below which 75% of the distribution falls.

Mean and Sigma Pitfalls That Break Results

Entering incorrect μ or σ invalidates every downstream probability. Check for these common errors before trusting output.

Variance vs Standard Deviation

The calculator expects σ (standard deviation), not σ² (variance). If your source reports variance, take the square root first. Entering variance directly inflates spread dramatically—a variance of 100 implies σ = 10, not σ = 100.

Population σ vs Sample s

For sample means, the relevant spread is the standard error σ/√n, not the population σ. Forgetting to divide by √n widens confidence intervals incorrectly. For individual observations, use σ directly.

Negative or Zero σ

Standard deviation must be strictly positive. σ = 0 collapses the distribution to a spike at μ (no randomness), and negative σ is mathematically undefined. The calculator will reject these inputs.

Unrealistic Parameter Combinations

If your parameters imply values below zero for inherently positive quantities (e.g., income, time, weight), the normal assumption may be inappropriate. Consider log-normal or truncated distributions for bounded data. Always sanity-check whether μ ± 3σ produces plausible values.

Edge case: Extremely small σ relative to x − μ pushes z-scores into far tails where CDF rounds to 0 or 1. If you see probability = 0.0000 or 1.0000, confirm your σ is correct before concluding the event is impossible or certain.

Normal Curve Quick Answers

What does the CDF value represent?

CDF(x) is the probability that a randomly drawn value falls at or below x. It equals the shaded area from the left edge of the curve up to x. At the mean, CDF = 0.5—half the distribution lies below, half above.

How do I find the probability above a value?

Compute 1 − CDF(x), or select right-tail mode. If CDF(x) = 0.85, the probability above x is 0.15.

Why does my two-tailed p-value differ from the one-tailed?

Two-tailed probability counts both extremes—below −|z| and above +|z|. It is roughly double the one-tailed probability for the same |z|. Use two-tailed for symmetric hypotheses ("different from"), one-tailed for directional claims ("greater than" or "less than").

When should I use the t-distribution instead?

Use the t-distribution when the population σ is unknown and estimated from a small sample (n < 30). The t-distribution has heavier tails, producing wider intervals and larger p-values. As n grows, t converges to normal.

How precise are these calculations?

The calculator uses high-precision numerical algorithms accurate to many decimal places—matching R, Python SciPy, and statistical tables. For extremely small tail probabilities (below 10⁻¹⁰), minor rounding may appear, but results are reliable for all practical work.

Can I trust normal assumptions for my data?

Verify normality with histograms, Q-Q plots, or formal tests (Shapiro-Wilk, Anderson-Darling). Skewed, heavy-tailed, or bounded data may require transformations or alternative distributions. The calculator assumes perfect normality—results degrade if that assumption fails.

Worked examples: percentiles and CDF lookups

Seven textbook-flavored problems with the work shown. Numerical answers match scipy.stats.norm and standard z-tables to four decimals.

Problem. Find Φ(0.6875), the standard normal CDF at z = 0.6875.

The standard normal CDF has no closed form. Using the relation Φ(z) = 0.5·(1 + erf(z/√2)) with z = 0.6875: z/√2 ≈ 0.4861, and erf(0.4861) ≈ 0.5081, so Φ(0.6875) = 0.5·(1 + 0.5081) ≈ 0.7540. Linear interpolation between table values Φ(0.68) = 0.7517 and Φ(0.69) = 0.7549 lands at the same place.

Linear interpolation works here because the standard normal density is smooth, so over a small interval like [0.68, 0.69] the CDF is nearly linear. For wider intervals or values near extreme percentiles (above z = 3 or below z = -3), interpolation introduces bigger errors and a rational-approximation routine like the one in scipy.stats.norm.cdf is more accurate.

Answer: Φ(0.6875) ≈ 0.7540. Right tail P(Z > 0.6875) ≈ 0.2460.

Problem. Find the 95th percentile of the standard normal: z* such that P(Z ≤ z*) = 0.95.

The inverse CDF Φ⁻¹(0.95). To four decimals it's 1.6449, often rounded to 1.645 in textbooks. This is the critical value for a one-tailed (upper) test at α = 0.05 and for a 90% two-sided confidence interval. Not the same as 1.96, which is the 97.5th percentile.

Answer: z₀.₉₅ ≈ 1.6449. R: qnorm(0.95). Python: scipy.stats.norm.ppf(0.95).

Problem. Find Φ⁻¹(0.975), the 97.5th percentile.

The canonical critical value for a 95% two-sided confidence interval, since 95% of the area sits between z = -1.96 and z = +1.96 (each tail holds 2.5%). The full-precision value is 1.959963984540054, written 1.96 in almost every published paper.

Don't confuse with z₀.₉₅ = 1.6449. The naming convention "97.5th percentile gives a 95% two-sided CI" trips up students every term. Mnemonic: for a 1 − α two-sided interval, look up the (1 − α/2) quantile, not the (1 − α) one.

Answer: z₀.₉₇₅ ≈ 1.9600.

Problem. Find the 99th percentile, Φ⁻¹(0.99).

Used in one-tailed tests at α = 0.01 and in 98% two-sided intervals. To four decimals, 2.3263 (textbooks round to 2.326). For comparison, the 99.5th percentile is 2.5758 (the two-sided 99% CI critical value) and the 99.9th is 3.0902.

Answer: z₀.₉₉ ≈ 2.3263.

Problem. X ~ N(μ = 15.5, σ = 1.72). Find P(14 < X < 16).

Standardize both endpoints. z₁ = (14 − 15.5) / 1.72 ≈ -0.8721, z₂ = (16 − 15.5) / 1.72 ≈ 0.2907. The probability is Φ(z₂) − Φ(z₁). Using symmetry, Φ(-0.8721) = 1 − Φ(0.8721) ≈ 1 − 0.8084 = 0.1916, and Φ(0.2907) ≈ 0.6144. So P = 0.6144 − 0.1916 = 0.4228.

The strict inequality (14 < X < 16) gives the same probability as the closed inequality (14 ≤ X ≤ 16) because X is continuous and a single point has zero probability. That equivalence breaks for discrete distributions like binomial or Poisson, where the difference between < and ≤ is a non-zero PMF value at the boundary.

Answer: P(14 < X < 16) ≈ 0.4228.

Problem. Convert raw score z = 1.453 to its CDF value.

Direct lookup. To four decimals, Φ(1.453) ≈ 0.9269. The right tail is P(Z > 1.453) ≈ 0.0731. As a percentile, 1.453 sits at the 92.69th percentile of the standard normal.

In context: if Z is a standardized exam score, a raw z of 1.453 puts a student above 92.7% of test-takers. Useful for class-rank percentile reporting. Note that z is already standardized, so no μ or σ conversion is needed for the lookup.

Answer: Φ(1.453) ≈ 0.9269.

Problem. X ~ N(100, 15²) (the standard IQ scale). What fraction of the population scores between 70 and 130?

Both bounds are exactly 2σ from the mean. z₁ = (70 − 100) / 15 = -2, z₂ = (130 − 100) / 15 = +2. P(70 ≤ X ≤ 130) = Φ(2) − Φ(-2) = 0.9772 − 0.0228 = 0.9545. The empirical 68-95-99.7 rule rounds this to 95%, but the four-decimal answer is 0.9545.

Answer: ≈ 95.45% of scores fall within ±2σ of the mean.

Limitations of normal-distribution inference

Normality is the model. Skewed, heavy-tailed, or bounded-below-zero data needs a different distribution. Run a Q-Q plot or Shapiro-Wilk before reporting normal probabilities.

μ and σ treated as known. If you estimated them from sample data with small n, the t-distribution gives more honest tail probabilities. Switch when n is below ~30.

Independence: matters for any inference built off these probabilities. Time-series and clustered data violate it and need specialized models.

Note: Probability outputs are only as good as the parameter estimates feeding them. Garbage in, garbage out. For computation, scipy.stats.norm and Wolfram Alpha both match the rational Chebyshev approximation used here to about 7 decimal places. NIST/SEMATECH e-Handbook §1.3.6.6.1 is the algorithmic reference.

Sources

Working with the normal distribution

How do I read Φ(z) values, like Φ(0.6875)?

Φ(z) is the standard normal CDF, the probability that a standard normal random variable is at or below z. For Φ(0.6875), the value is about 0.7541, so 75.41% of the distribution sits below z = 0.6875. The closed form is Φ(z) = ½[1 + erf(z/√2)] where erf is the error function. By hand, look it up in a z-table. With software, scipy.stats.norm.cdf(0.6875) and R's pnorm(0.6875) both return 0.7541216 to seven decimals. The inverse Φ⁻¹ takes you the other way: Φ⁻¹(0.7541) ≈ 0.6875.

Where do the standard normal percentiles 1.645, 1.96, 2.326 come from?

These are critical values, the z where Φ(z) hits a target probability. Φ(1.645) ≈ 0.95, so 1.645 is the 95th percentile and the one-tailed 5% rejection cutoff. Φ(1.96) ≈ 0.975, so 1.96 cuts off 2.5% in the upper tail and is the two-tailed critical value at α = 0.05. Φ(2.326) ≈ 0.99, the 99th percentile. NIST/SEMATECH e-Handbook §1.3.6.7.1 lists the long-form values to six decimals (1.95996 and 2.32635). They show up everywhere in confidence intervals and one-sided hypothesis tests at common α.

What's the difference between PDF and CDF for the normal?

The PDF f(x) = (1/(σ√2π))·exp(−(x−μ)²/(2σ²)) is the height of the bell curve at x. It's a density, not a probability, with units of "probability per unit x." The CDF F(x) is the area under the PDF from −∞ up to x, a true probability bounded by [0, 1]. PDF tells you the relative likelihood of values near x; CDF tells you P(X ≤ x). For probabilities of intervals, integrate the PDF or subtract two CDF values: P(a ≤ X ≤ b) = F(b) − F(a).

How is the standard "bell curve" different from any normal distribution?

The bell curve usually means the standard normal N(0, 1), with mean 0 and standard deviation 1. Any normal N(μ, σ²) has the same bell shape, just shifted by μ and stretched by σ. The transform z = (x − μ)/σ moves any normal to the standard scale, and probabilities are identical between the two as long as you transform the bounds correctly. So the bell curve is a special case of the normal, and "normal distribution" is the more general family. Most calculators and z-tables work in the standard scale internally and convert.

How do I convert z to p for a one-tailed vs two-tailed test?

One-tailed right gives p = 1 − Φ(z). For one-tailed left, the formula is just Φ(z). The two-tailed conversion is p = 2 · (1 − Φ(|z|)). For z = 1.96, the two-tailed p is 2 · (1 − 0.975) = 0.05. The same z gives a one-tailed right p of 0.025, exactly half. The factor of two for two-tailed is the part people drop most often. Pre-register which tail before seeing the data; switching after the fact halves your p and is a textbook p-hacking move.

How do I find the probability that a value falls between two bounds?

For P(a ≤ X ≤ b), compute Φ(b) − Φ(a) on the standard scale, or convert raw bounds with z₁ = (a − μ)/σ and z₂ = (b − μ)/σ first. Example: with μ = 70, σ = 5, the probability of falling between 65 and 80 is Φ((80−70)/5) − Φ((65−70)/5) = Φ(2) − Φ(−1) ≈ 0.9772 − 0.1587 = 0.8186. Roughly 82% lies in that range. The page handles this directly when you enter both bounds.

When should I use the standard normal versus custom μ and σ?

Use the standard normal when you already have z-scores from a hypothesis test, a published critical value, or a textbook problem stated in z. Use custom μ and σ when working with raw measurements: test scores N(75, 10²), part dimensions N(50.0, 0.3²), reaction times N(420, 80²). The probabilities are identical, just on different scales. If you started with raw data and have μ and σ in hand, leave them in. You'll lose interpretability if you standardize unnecessarily.

Why does the page sometimes return 0.0000 or 1.0000?

Far in the tails the CDF rounds. Beyond about |z| = 7, the result hits the floating-point floor (around 10⁻¹⁵) and reads as 0 or 1. That doesn't mean the event is impossible or certain. It means the probability is below the precision of the underlying approximation. Before concluding anything from a 0.0000, double-check σ. A small σ relative to (x − μ) is the usual culprit. NIST tables stop near |z| = 6 for the same reason. For extreme tail work, use log-probabilities or asymptotic expansions, not the raw CDF.

Related Math & Statistics Tools