Written and maintained by CASRAI Editorial Board
Published
On this page
A standard normal distribution table, commonly called a z-table, maps standard deviations (z-scores) to cumulative probabilities under the standard normal curve. In quantitative research and hypothesis testing, researchers use the z-table to determine p-values, set confidence boundaries, and test whether an observed sample deviates significantly from a hypothesized population mean. This guide provides the complete cumulative normal table, the underlying mathematical formulas, worked calculation examples, and code implementations in Excel, R, and Python.
What Is a Z-Table and How Does It Work?
A z-table is a reference grid displaying cumulative probabilities for the standard normal distribution, denoted as Z ~ N(0, 1), where the mean (μ) is 0 and the standard deviation (σ) is 1. The total area underneath the normal distribution curve is exactly 1.0 (100% cumulative probability).
When assessing quantitative data, researchers select their test distribution based on sample size and variance knowledge. As detailed in the t-distribution vs normal distribution comparison, a z-distribution is used when population standard deviation is known or sample size is large (n ≥ 30). For smaller samples with unknown variance, Student’s t-distribution is preferred.
Standard normal tables typically follow one of three layout formats:
- Cumulative from left tail: The cell gives P(Z ≤ z), measuring the area from -∞ to z. This is the modern standard used below.
- Cumulative from the mean: The cell gives P(0 ≤ Z ≤ z), measuring only the area between 0 and z. Classical engineering references, including older editions of the NIST/SEMATECH e-Handbook, use this layout.
- Upper tail: The cell gives P(Z > z), measuring the right-hand rejection region.
To identify your table layout immediately, check the value at z = 0.00: in a cumulative left-tail table, it is exactly 0.5000; in a mean-to-z table, it is 0.0000.
Standard Normal Distribution and Z-Score Formula
To look up an observation in a z-table, raw values must be transformed into standardized z-scores. A z-score measures how many standard deviations an observation x lies above or below the population mean μ.
For an individual observation, the standardization formula is:
z = (x – μ) / σ
When testing sample means, the denominator is the standard error of the mean (SE = σ / √n). As outlined in the fundamental test statistic formula, the sample z-score is:
z = (x̄ – μ) / (σ / √n)
Per NIST e-Handbook Section 1.3.6.6.1, the probability density function (PDF) generating the standard normal curve is:
f(z) = (1 / √(2π)) × exp(-z² / 2)
The cumulative distribution function Φ(z) represents the integral from -∞ to z. Because this integral has no closed algebraic solution, values are calculated numerically and tabulated.
How to Read a Z-Table: Step-by-Step Lookup Method
To read a cumulative left-tail z-table:
- Locate the row: Find the integer and first decimal digit in the left vertical column (e.g., for z = 1.45, find 1.4).
- Locate the column: Find the second decimal digit across the top horizontal row (for z = 1.45, find .05).
- Find the intersection: The intersecting cell contains 0.9265, indicating that 92.65% of the distribution lies below z = 1.45.
- Use symmetry for negative z-scores: Apply the standard normal symmetry rule P(Z ≤ –z) = 1 – P(Z ≤ z). For example, P(Z ≤ -1.45) = 1 – 0.9265 = 0.0735.
Cumulative Standard Normal Distribution Table (Z-Table)
The table below provides cumulative standard normal probabilities Φ(z) = P(Z ≤ z) for z-scores from 0.00 to 3.09. Values are rounded to four decimal places (0.0001 precision) and benchmarked against NIST/SEMATECH Section 1.3.6.7.1 and OpenStax Introductory Statistics Chapter 6.
| z | .00 | .01 | .02 | .03 | .04 | .05 | .06 | .07 | .08 | .09 |
|---|---|---|---|---|---|---|---|---|---|---|
| 0.0 | 0.5000 | 0.5040 | 0.5080 | 0.5120 | 0.5160 | 0.5199 | 0.5239 | 0.5279 | 0.5319 | 0.5359 |
| 0.1 | 0.5398 | 0.5438 | 0.5478 | 0.5517 | 0.5557 | 0.5596 | 0.5636 | 0.5675 | 0.5714 | 0.5753 |
| 0.2 | 0.5793 | 0.5832 | 0.5871 | 0.5910 | 0.5948 | 0.5987 | 0.6026 | 0.6064 | 0.6103 | 0.6141 |
| 0.3 | 0.6179 | 0.6217 | 0.6255 | 0.6293 | 0.6331 | 0.6368 | 0.6406 | 0.6443 | 0.6480 | 0.6517 |
| 0.4 | 0.6554 | 0.6591 | 0.6628 | 0.6664 | 0.6700 | 0.6736 | 0.6772 | 0.6808 | 0.6844 | 0.6879 |
| 0.5 | 0.6915 | 0.6950 | 0.6985 | 0.7019 | 0.7054 | 0.7088 | 0.7123 | 0.7157 | 0.7190 | 0.7224 |
| 0.6 | 0.7257 | 0.7291 | 0.7324 | 0.7357 | 0.7389 | 0.7422 | 0.7454 | 0.7486 | 0.7517 | 0.7549 |
| 0.7 | 0.7580 | 0.7611 | 0.7642 | 0.7673 | 0.7704 | 0.7734 | 0.7764 | 0.7794 | 0.7823 | 0.7852 |
| 0.8 | 0.7881 | 0.7910 | 0.7939 | 0.7967 | 0.7995 | 0.8023 | 0.8051 | 0.8078 | 0.8106 | 0.8133 |
| 0.9 | 0.8159 | 0.8186 | 0.8212 | 0.8238 | 0.8264 | 0.8289 | 0.8315 | 0.8340 | 0.8365 | 0.8389 |
| 1.0 | 0.8413 | 0.8438 | 0.8461 | 0.8485 | 0.8508 | 0.8531 | 0.8554 | 0.8577 | 0.8599 | 0.8621 |
| 1.1 | 0.8643 | 0.8665 | 0.8686 | 0.8708 | 0.8729 | 0.8749 | 0.8770 | 0.8790 | 0.8810 | 0.8830 |
| 1.2 | 0.8849 | 0.8869 | 0.8888 | 0.8907 | 0.8925 | 0.8944 | 0.8962 | 0.8980 | 0.8997 | 0.9015 |
| 1.3 | 0.9032 | 0.9049 | 0.9066 | 0.9082 | 0.9099 | 0.9115 | 0.9131 | 0.9147 | 0.9162 | 0.9177 |
| 1.4 | 0.9192 | 0.9207 | 0.9222 | 0.9236 | 0.9251 | 0.9265 | 0.9279 | 0.9292 | 0.9306 | 0.9319 |
| 1.5 | 0.9332 | 0.9345 | 0.9357 | 0.9370 | 0.9382 | 0.9394 | 0.9406 | 0.9418 | 0.9429 | 0.9441 |
| 1.6 | 0.9452 | 0.9463 | 0.9474 | 0.9484 | 0.9495 | 0.9505 | 0.9515 | 0.9525 | 0.9535 | 0.9545 |
| 1.7 | 0.9554 | 0.9564 | 0.9573 | 0.9582 | 0.9591 | 0.9599 | 0.9608 | 0.9616 | 0.9625 | 0.9633 |
| 1.8 | 0.9641 | 0.9649 | 0.9656 | 0.9664 | 0.9671 | 0.9678 | 0.9686 | 0.9693 | 0.9699 | 0.9706 |
| 1.9 | 0.9713 | 0.9719 | 0.9726 | 0.9732 | 0.9738 | 0.9744 | 0.9750 | 0.9756 | 0.9761 | 0.9767 |
| 2.0 | 0.9772 | 0.9778 | 0.9783 | 0.9788 | 0.9793 | 0.9798 | 0.9803 | 0.9808 | 0.9812 | 0.9817 |
| 2.1 | 0.9821 | 0.9826 | 0.9830 | 0.9834 | 0.9838 | 0.9842 | 0.9846 | 0.9850 | 0.9854 | 0.9857 |
| 2.2 | 0.9861 | 0.9864 | 0.9868 | 0.9871 | 0.9875 | 0.9878 | 0.9881 | 0.9884 | 0.9887 | 0.9890 |
| 2.3 | 0.9893 | 0.9896 | 0.9898 | 0.9901 | 0.9904 | 0.9906 | 0.9909 | 0.9911 | 0.9913 | 0.9916 |
| 2.4 | 0.9918 | 0.9920 | 0.9922 | 0.9925 | 0.9927 | 0.9929 | 0.9931 | 0.9932 | 0.9934 | 0.9936 |
| 2.5 | 0.9938 | 0.9940 | 0.9941 | 0.9943 | 0.9945 | 0.9946 | 0.9948 | 0.9949 | 0.9951 | 0.9952 |
| 2.6 | 0.9953 | 0.9955 | 0.9956 | 0.9957 | 0.9959 | 0.9960 | 0.9961 | 0.9962 | 0.9963 | 0.9964 |
| 2.7 | 0.9965 | 0.9966 | 0.9967 | 0.9968 | 0.9969 | 0.9970 | 0.9971 | 0.9972 | 0.9973 | 0.9974 |
| 2.8 | 0.9974 | 0.9975 | 0.9976 | 0.9977 | 0.9977 | 0.9978 | 0.9979 | 0.9979 | 0.9980 | 0.9981 |
| 2.9 | 0.9981 | 0.9982 | 0.9982 | 0.9983 | 0.9984 | 0.9984 | 0.9985 | 0.9985 | 0.9986 | 0.9986 |
| 3.0 | 0.9987 | 0.9987 | 0.9987 | 0.9988 | 0.9988 | 0.9989 | 0.9989 | 0.9989 | 0.9990 | 0.9990 |
Key Critical Values for Hypothesis Testing
In statistical significance testing, critical values mark the boundaries of rejection regions. In one-tailed vs two-tailed tests, the test direction determines whether significance level α is placed in one tail or divided across both. Critical values sourced from NIST Section 1.3.6.7.1 include:
| Cumulative Probability (p) | Critical Z-Value (Zp) | Significance Application |
|---|---|---|
| 0.900 (90%) | +1.282 | 80% two-tailed / 90% one-tailed test |
| 0.950 (95%) | +1.645 | 90% two-tailed / 95% one-tailed test (α = 0.05) |
| 0.975 (97.5%) | +1.960 | Standard 95% two-tailed confidence level (α = 0.05) |
| 0.990 (99%) | +2.326 | 98% two-tailed / 99% one-tailed test (α = 0.01) |
| 0.995 (99.5%) | +2.576 | Standard 99% two-tailed confidence level (α = 0.01) |
| 0.999 (99.9%) | +3.090 | 99.8% two-tailed / 99.9% one-tailed test (α = 0.001) |
Worked Examples: Step-by-Step Probability Calculations
Depending on research design, researchers compute lower-tail, upper-tail, or bounded interval probabilities.
Worked Example 1: Finding Cumulative Lower-Tail Probability
Scenario: An automated laboratory analyzer has a normally distributed processing time with mean μ = 100 seconds and standard deviation σ = 10 seconds. Find the probability that a sample run completes in 114.5 seconds or less.
- Standardize the raw value: z = (114.5 – 100) / 10 = 14.5 / 10 = 1.45.
- Locate in z-table: Row 1.4 and column .05 intersect at 0.9265.
- Result: P(X ≤ 114.5) = P(Z ≤ 1.45) = 0.9265. Approximately 92.65% of test runs complete within 114.5 seconds.
Worked Example 2: Finding an Interval and Two-Tailed Probability
Scenario: For the same analyzer (μ = 100, σ = 10), find the probability that a test run lasts between 88.0 and 118.0 seconds.
- Standardize both bounds:
- Lower bound: z₁ = (88.0 – 100) / 10 = -1.20.
- Upper bound: z₂ = (118.0 – 100) / 10 = +1.80.
- Look up cumulative areas:
- Upper bound: Φ(1.80) = 0.9641 (Row 1.8, Column .00).
- Lower bound: Φ(-1.20) = 1 – Φ(1.20) = 1 – 0.8849 = 0.1151.
- Calculate the interval: P(-1.20 ≤ Z ≤ 1.80) = Φ(1.80) – Φ(-1.20) = 0.9641 – 0.1151 = 0.8490.
- Result: 84.90% of all analyzer runs fall between 88.0 and 118.0 seconds. When performing two-tailed hypothesis testing, this interval subtraction separates the acceptance region from extreme rejection tails.
How to Calculate Z-Scores and Probabilities in Excel, R, and Python
Modern quantitative analysis computes normal distribution probabilities programmatically. Below are syntax templates across three standard research environments.
1. Microsoft Excel
- Cumulative probability P(Z ≤ 1.45):
=NORM.S.DIST(1.45, TRUE)(yields 0.9265) - Upper-tail probability:
=1 - NORM.S.DIST(1.45, TRUE)(yields 0.0735) - Two-tailed 95% critical value (α = 0.05):
=NORM.S.INV(0.975)(yields 1.9600) - Standardize raw score:
=STANDARDIZE(114.5, 100, 10)(yields 1.45)
2. R
# Cumulative probability P(Z <= 1.45)
p_lower <- pnorm(1.45)
# Upper-tail probability
p_upper <- pnorm(1.45, lower.tail = FALSE)
# Interval between -1.20 and 1.80
p_between <- pnorm(1.80) - pnorm(-1.20)
# Critical z-value for two-tailed 95% confidence (alpha = 0.05)
z_crit <- qnorm(0.975)
3. Python (scipy.stats)
from scipy import stats
# Cumulative probability P(Z <= 1.45)
p_lower = stats.norm.cdf(1.45)
# Upper-tail probability
p_upper = stats.norm.sf(1.45)
# Interval between -1.20 and 1.80
p_between = stats.norm.cdf(1.80) - stats.norm.cdf(-1.20)
# Critical z-score for two-tailed 95% confidence (p = 0.975)
z_critical = stats.norm.ppf(0.975)
Common Pitfalls When Using Standard Normal Tables
When working with standard normal tables manually, watch for these common calculation errors:
- Misidentifying table layout: Confusing a mean-to-z table with a cumulative left-tail table introduces an error of 0.5000. Always check the cell value at z = 0.00 first.
- Using z-scores when sample size is small without known variance: When sample standard deviation s estimates unknown population standard deviation σ with n < 30, use Student's t-distribution. Review our guide to types of test statistics for test selection criteria.
- Splitting alpha incorrectly in two-tailed tests: In two-tailed tests at α = 0.05, each tail receives α/2 = 0.025, corresponding to critical z-values of ±1.960, not ±1.645.
- Premature rounding: Rounding intermediate z-scores before table lookup compounds rounding error. Retain full precision until looking up the two-decimal z-score.
Frequently Asked Questions About Z-Tables
What is the difference between a positive and negative z-table?
A positive z-table gives cumulative probabilities for z-scores ≥ 0.00 (probabilities from 0.5000 to 1.0000). A negative z-table gives probabilities for z-scores < 0.00 (probabilities from 0.0000 to 0.5000). If only a positive table is available, calculate negative probabilities using symmetry: Φ(-z) = 1 – Φ(z).
Can a z-score exceed 3.0?
Yes. While most printed tables end at z = 3.09 or 3.49, z-scores can take any real value. For z > 3.09, the cumulative probability exceeds 0.9990. Evaluate extreme z-scores programmatically using functions like scipy.stats.norm.cdf.
When should I use a z-table instead of a t-table?
Use a z-table when the population standard deviation (σ) is known or when sample size is large (n ≥ 30). When σ is unknown and sample size is small, use Student’s t-distribution.
What does a z-score of 0 mean?
A z-score of 0 indicates that the observed value is identical to the population mean (μ). Under the standard normal distribution, exactly 50% of the distribution lies below z = 0, giving a cumulative probability of 0.5000.







