Bell Curve (Normal Distribution) Calculator

Plot the normal-distribution bell curve for any mean (μ) and standard deviation (σ). Look up P(X ≤ x), z-scores, percentiles, the 68-95-99.7 empirical rule, confidence intervals for the mean, and bulk-sample N(μ, σ). Pure client-side math, no upload, no tracking.

Density μ ± 1σ (68%) μ ± 2σ (95%) μ ± 3σ (99.7%)

Empirical rule (68-95-99.7)

μ ± 1σ
μ ± 2σ
μ ± 3σ

Look up an X value

z-score
P(X ≤ x)
P(X ≥ x)
Percentile rank

Percentile lookup

z-score
X at this percentile

Probability between two X values

P(a ≤ X ≤ b)
As percentage

Confidence interval for the mean (known σ)

Critical z
Margin of error
Interval

Bulk X lookup

One X value per line. Each line gets its z-score, CDF, and survival function.

0 rows

Bulk sampler

Draw N independent samples from N(μ, σ) and see the empirical mean, stddev, min, and max. Useful to verify that a real dataset matches the requested distribution.

Empirical mean
Empirical stddev
Min / Max
Range

Standard normal z-table preview

Cumulative probability Φ(z) for z from 0.0 to 3.0 in 0.01 steps. The full table is computed by the lib; this preview is just the first 31 rows.

How the normal distribution works
  • The probability density function is f(x) = (1 / (σ · √(2π))) · exp(−½ ((x−μ)/σ)²). The peak is at x = μ with height 1 / (σ · √(2π)); the curve is symmetric around the mean.
  • The cumulative distribution function Φ(z) is the area under the curve from −&infinity; up to z. We compute it via an Abramowitz & Stegun 26.2.17 rational approximation of the error function (max error about 1.5×10−7).
  • The z-score is z = (x − μ) / σ. It tells you how many standard deviations x is from the mean. z = 0 is the mean; z = ±1, ±2, ±3 are the empirical-rule band edges.
  • The empirical rule says roughly 68% of the data falls within μ ± 1σ, 95% within μ ± 2σ, and 99.7% within μ ± 3σ. These numbers come straight from Φ(1), Φ(2), Φ(3) and are NOT hardcoded constants.
  • The confidence interval for the mean with known σ is X̄ ± z1−α/2 · σ / √n. Use this when the population standard deviation is known and the sample size is reasonable (n ≥ ~25). For unknown σ, use the t-distribution instead.
  • The bulk sampler uses the inverse-CDF transform: draw a uniform u ∈ (0, 1), compute z = Φ−1(u), then x = μ + z · σ. With a seeded RNG, the same seed always produces the same samples.
  • Nothing leaves your browser. All parsing, all drawing, all sampling runs locally.