Quick Answer: How to Check Normality
To check normality, first identify the quantity that should be approximately normal for your analysis — model residuals in regression and ANOVA, within-pair differences in a paired t-test, raw observations for simple one-sample tests. Then inspect a Q-Q plot and histogram for major skewness, heavy tails, or outliers, and use a formal test such as Shapiro-Wilk as supporting evidence rather than as the only decision rule.
Normality is not a property you confirm once by running a test. It's a judgment call that combines graphical evidence, the formal test result, your sample size, and the analysis you're planning. A Q-Q plot that looks reasonable on 30 observations might show tiny systematic departures on 500. A Shapiro-Wilk p-value of .03 in a sample of 400 may reflect a departure so small it doesn't affect your t-test at all.
First: What Actually Needs to Be Normal?
This is where most normality guides go wrong. They tell you to test your data for normality without specifying which data. The correct target depends entirely on the statistical procedure you're using.
| Statistical Analysis | What Should Be Assessed for Normality? |
|---|---|
| One-sample t-test | The distribution of the outcome variable — particularly matters with small samples and strong skewness or outliers |
| Independent-samples t-test | The within-group distributions, not the pooled mixture of both groups combined |
| Paired t-test | The within-pair differences (di = afteri − beforei), not each measurement separately |
| One-way ANOVA | Model residuals / within-group errors — not all raw outcome values pooled together |
| Linear regression | Model residuals (errors conditional on predictors) — neither X nor Y needs to be marginally normal |
| Repeated-measures models | The relevant model residuals according to the fitted model structure |
| Pearson correlation | Consider the joint distribution and unusual observations; avoid reducing validity to a single raw-variable normality test |
Two of these deserve extra attention because they catch people repeatedly.
Paired t-test: check the differences
If you're running a paired t-test — blood pressure before and after a treatment, test scores before and after a training program — you might instinctively check whether the "before" distribution looks normal and whether the "after" distribution looks normal. That's not what the procedure assumes. The paired t-test models the average difference, so the distribution that matters is the set of individual differences di = afteri − beforei. Those differences can behave very differently from either measurement alone.
ANOVA: pooling groups creates a misleading picture
If your three treatment groups have means of 20, 35, and 50 — each with normally distributed errors — the pooled distribution of all 90 observations will look roughly trimodal, nothing like a bell curve. Running a normality test on that combined dataset and concluding "the data aren't normal, so ANOVA is invalid" is a logical error. The ANOVA normality assumption concerns the within-group structure. Inspect residuals from the fitted model, or examine each group's observations separately.
The classical normal-error assumption in OLS regression concerns the errors ε conditional on the predictors, assessed through fitted-model regression residuals. The predictors X can follow any distribution — you're conditioning on them. The outcome Y may look non-normal in raw form simply because it's a mix of different predicted values with errors layered on top.
How to Check Normality in 6 Steps
Identify what should be normal
Refer to the table above. For regression and ANOVA, you're checking residuals. For a paired t-test, you're checking differences. For simple one-sample or two-sample tests, you're checking the relevant group distributions. Get this right before doing anything else.
Check data quality first
A distribution that looks bizarre is often a data problem: a decimal-point error, a miscoded missing value (−999 treated as real data), a duplicated record, or a unit mismatch. Before concluding that your data are non-normal, verify they're actually correct. Apparent non-normality from a data error is best fixed at the source, not by choosing a different statistical test.
Create a Q-Q plot
A normal Q-Q plot compares observed sample quantiles against the quantiles you'd expect from a normal distribution. If the data are approximately normal, the points fall close to the reference diagonal. Systematic curvature, heavy tails bowing away from the line, or isolated extreme points all signal specific types of departure. This is your most informative single diagnostic.
Inspect a histogram
A histogram gives you a quick read on overall shape — strong right skew, bimodality, or a long thin tail stand out immediately. The catch is that appearance changes substantially with bin width, especially at small sample sizes. Use histograms alongside Q-Q plots rather than instead of them.
Run a formal test when useful
Shapiro-Wilk is the most widely recommended formal test for samples under about 2,000. It returns a W statistic and p-value, with small p indicating evidence against normality. Treat this as one piece of evidence, not a verdict. Other tests (Anderson-Darling, Kolmogorov-Smirnov) are covered in the normality tests overview.
Judge the departure in context
Ask whether the departure is large enough to matter for your specific analysis and sample size. Mild skewness in a t-test with n = 60 and balanced groups is much less concerning than the same skewness with n = 8. The question isn't "is this exactly normal?" — real data never are. The question is "is the departure important enough to undermine what I'm trying to estimate?"
How to Read a Normal Q-Q Plot
A normal Q-Q plot puts theoretical normal quantiles on the x-axis and observed sample quantiles on the y-axis (some software reverses these — check the labels before interpreting curvature direction). The reference line represents where points would fall if the data matched a normal distribution exactly. Natural sampling variability means points will scatter around this line even when the population is perfectly normal. You're looking for systematic patterns, not perfection.
Points near the diagonal
No strong systematic curvature, no severe tail departures. Normality is plausible. Small deviations at the extremes are expected with limited samples.
Upward bow at upper tail
Upper-right points arc above the line while lower-left points may dip below. The distribution has a longer right tail than a normal would — common in income, reaction-time, and count data.
Downward arc at lower tail
Lower-left points curve below the reference line. The distribution has a longer left tail. Less common than right skew but worth recognizing.
Both tails bow away from line
Points in both tails fall farther from the center than expected — an S-shaped or "bowtie" appearance. The distribution has more extreme values than a normal. t-distributions with low degrees of freedom look like this.
One isolated extreme point
A single point far from the rest of the Q-Q pattern. Investigate before acting — it may be a data error, a genuine unusual observation, or a legitimate part of your data's natural variability.
Interactive Q-Q Plot Visualizer
Select a distribution type to see how Q-Q plots look for different departure patterns.
Different software places theoretical vs. sample quantiles on different axes. R's qqnorm() puts theoretical on x and sample on y. Some packages do the opposite. The direction of curvature depends on which axis is which — always check the axis labels before interpreting a Q-Q plot you didn't produce yourself.
Using a Histogram to Check Normality
Histograms are a reasonable first look but a weak normality diagnostic on their own. Their most useful role is catching strong departures that would be hard to miss — data clustered entirely above zero with a long right tail, an obvious bimodal distribution suggesting two mixed populations, or a spike at a single value suggesting measurement rounding.
The limitation is that bin choices can make the same dataset look roughly symmetric in one binning and noticeably skewed in another. With small samples (under ~50), a perfectly normal population regularly produces histograms that look bumpy, irregular, or slightly skewed — just by chance. This is why Q-Q plots earn more interpretive weight for normality assessment: they compare quantile structure directly rather than relying on an arbitrary binning decision.
With large samples, histograms become genuinely informative. You can see the overall shape clearly enough to identify a log-normal pattern, a distribution with a hard boundary, or a population mixture. But even there, a slightly non-bell-shaped histogram doesn't automatically invalidate parametric analyses — the practical severity is what matters.
You can explore histogram shapes with the Histogram Maker on Statistics Fundamentals. Try generating normal and skewed data and adjusting the bin count to see how much the visual impression changes.
Shapiro-Wilk Test for Normality
Shapiro-Wilk is the most commonly recommended formal normality test for samples under roughly 2,000 observations. It computes a W statistic that measures how well the data's order statistics correlate with expected normal order statistics. Values of W closer to 1 indicate closer agreement with normality.
| Hypothesis | What it says |
|---|---|
| H₀ (null) | The data are consistent with a normal population distribution |
| H₁ (alternative) | The data depart from normality |
At α = .05: if p ≤ .05, there is evidence against the normality null. If p > .05, you fail to reject normality — you do not confirm it. That distinction matters.
In R, run shapiro.test(x). In Python, scipy.stats.shapiro(x) returns the W statistic and p-value. The Shapiro-Wilk test page has the full theoretical background, worked computations, and step-by-step interpretation.
Why p > .05 Doesn't Prove Normality
"Shapiro-Wilk gave p = .42, so my data are normal." This is wrong. A non-significant result means the sample didn't provide enough evidence to reject normality at your chosen α. With a small sample, a real departure from normality can go undetected simply because the test lacks the power to find it. You haven't ruled out non-normality; you've failed to detect it.
Three different situations all produce p > .05 in a normality test: (1) the population really is close to normal; (2) the sample is too small to detect a meaningful departure; (3) this particular sample happened to look normal even if the population isn't. You can't distinguish these cases from the p-value alone. That's exactly why the Q-Q plot and histogram earn their place in the workflow — they show you the shape, not just a binary decision.
Why p < .05 Doesn't Automatically Invalidate Your Analysis
A significant Shapiro-Wilk result means there's evidence of departure from exact normality. It doesn't tell you whether that departure is large enough to matter for your planned analysis. With a sample of 500, Shapiro-Wilk can detect departures so small they have essentially no effect on a t-test or ANOVA. Automatically switching to a nonparametric test whenever Shapiro-Wilk is significant is an overreaction that ignores how robust many parametric procedures are to moderate non-normality.
Instead, look at the Q-Q plot and ask: is this a mild, uniform departure from the normal shape, or is there strong skewness, heavy tails, or influential outliers? Those distinctions matter for what to do next.
How Sample Size Affects Normality Tests
Sample size interacts with formal normality testing in ways that trip up a lot of analysts. The same population, sampled differently, produces dramatically different Shapiro-Wilk results — not because the population changed, but because the test's sensitivity changed.
| Sample size situation | Main concern | What this means for practice |
|---|---|---|
| Very small (n < 20) | Test power is low; major departures may go undetected | Don't rely on a non-significant p-value; use Q-Q plot and consider the analysis's robustness carefully |
| Moderate (20–200) | Reasonable power for detecting meaningful departures | Combine Q-Q plot, histogram, formal test, and context for a balanced judgment |
| Large (n > 200) | High power to detect tiny, practically unimportant departures | A significant p-value doesn't mean your analysis is broken; examine the Q-Q plot to assess severity |
You'll encounter the rule that "once n ≥ 30, normality doesn't matter because of the Central Limit Theorem." The CLT describes what happens to the sampling distribution of the sample mean as n grows under appropriate conditions. It does not transform your raw observations into a normal distribution. With very heavy tails, extreme skewness, or influential outliers, a sample of 30 can still produce problematic mean-based inference.
Worked Examples
Example 1: Approximately normal data
Scenario: Resting heart rates (n = 40, simulated from N(70, 8²), seed 42)
Data check: 40 heart rate measurements, no impossible values or obvious entry errors.
Q-Q plot: Points fall close to the reference diagonal throughout. There's natural scatter at the extremes, but no systematic curvature and no isolated extreme points.
Histogram: Roughly symmetric and unimodal. The shape is consistent with a bell curve at this sample size.
Shapiro-Wilk:
W = 0.9743, p-value = 0.481
Interpretation: No important departure from normality detected. W is close to 1, p = .481 is well above .05. Combined with the clean Q-Q plot, normality is plausible for this sample. This doesn't prove the population is exactly normal — it means we found no meaningful evidence against it.
Example 2: Right-skewed data
Scenario: Household income values (n = 50, simulated from Exponential(λ=1/45000))
Q-Q plot: Points bow systematically upward in the upper right. The upper-tail observations fall far above the reference line — many more high values than a normal distribution would produce.
Histogram: A tall bar near zero with a long right tail stretching far to the right. The classic picture of right skewness.
Shapiro-Wilk:
W = 0.7912, p-value = 0.00003
Interpretation: Strong evidence against normality. All three methods agree: Q-Q curvature, histogram shape, and highly significant Shapiro-Wilk. Before changing your analysis, verify the data are correct, then consider whether the skewness level matters for what you're estimating — and whether a log transformation makes scientific sense for this variable.
Example 3: Heavy-tailed data
Scenario: Reaction time data with extreme values (n = 50, simulated from t(3))
Q-Q plot: Points near the center follow the reference line fairly closely, giving a misleadingly normal-looking middle. Both tails bow away from the line — lower-left points are more negative than expected, upper-right points are more positive. An S-shaped deviation from the diagonal is the signature of heavy tails.
Histogram: The center may look roughly symmetric but the histogram underrepresents the spread. The tails look thin because most observations cluster in the middle, while a few extreme values appear separately. This is why symmetry doesn't imply normality — a distribution can be symmetric and have heavy tails simultaneously.
Shapiro-Wilk:
W = 0.9114, p-value = 0.0017
Interpretation: The S-shaped Q-Q pattern is the key signal here. Heavy-tailed data can look deceptively normal in a histogram because the center is symmetric. The Q-Q plot reveals tail behavior that the histogram misses. Heavy tails matter because they produce more extreme observations, which affect means, standard errors, and ultimately inference.
Example 4: Large sample with small departure
Scenario: Mildly skewed data in a large sample (n = 500)
Q-Q plot: A very slight upward bow in the upper tail — visible, but mild. The center looks good. The departure is real but small.
Shapiro-Wilk:
W = 0.9887, p-value = 0.0009
Interpretation: Shapiro-Wilk is significant (p = .0009) but W = .9887 is very close to 1, and the Q-Q plot shows only a minor departure. This is a textbook example of statistical detectability not equaling practical consequence. With 500 observations, the test has the power to flag departures that won't meaningfully affect a t-test or ANOVA. The Q-Q plot is more informative here than the p-value alone.
Checking Normality for Specific Analyses
Before a t-test
For a one-sample t-test, inspect the outcome variable's distribution using a Q-Q plot and histogram. The t-test is reasonably robust to moderate departures from normality when the sample is large enough, the data aren't severely skewed, and there are no highly influential outliers. With very small samples (n under 15), even moderate skewness deserves attention.
For an independent-samples t-test, check each group's distribution separately. Looking at the two groups combined gives you a mixture distribution that can look non-normal even when both groups individually satisfy the assumption. The two-sample t-test and one-sample t-test pages have further detail.
Before ANOVA
Fit the ANOVA model first, then extract residuals. Create a Q-Q plot and histogram of those residuals. If you check all raw observations pooled together, the different group means create an apparent multimodal or non-normal pattern that has nothing to do with the ANOVA error assumption — it just reflects that the groups have different means.
Illustration: why pooling ANOVA groups misleads
Three groups with normal errors can look non-normal combined
Suppose three groups have means of 20, 35, and 50, each with normally distributed errors (σ = 5). Individually, each group's histogram looks roughly bell-shaped. Pool all 90 observations without accounting for group membership and you get three overlapping humps — nothing like a single normal distribution. Run Shapiro-Wilk on the pooled data and you'd likely get a very small p-value, which would incorrectly suggest the ANOVA assumption is violated. The fix: use residuals from the fitted model, which subtract out the group means and reveal the within-group error structure. Those residuals should look approximately normal if the assumption holds.
In regression
After fitting your linear regression model, extract the residuals and create a Q-Q plot. This is the correct diagnostic for the normal-error assumption. The predictors X don't need to be normally distributed — you're conditioning on them. The outcome Y may look non-normal marginally, especially if the predictors explain substantial variance at different levels. That's expected and doesn't violate the regression model's normality assumption.
The normal-error assumption matters most for exact finite-sample inference (exact F and t tests). With larger samples and under regularity conditions, asymptotic inference holds more broadly. Non-normal residuals don't mean OLS estimates are biased — the Gauss-Markov theorem for unbiasedness requires different conditions. What it means is that the classical F-test p-values may be less reliable, particularly with small samples and severe departures. See the residuals page for more on regression diagnostics.
For paired data
Calculate the within-pair differences (di = afteri − beforei) first. Then apply the same normality workflow — Q-Q plot, histogram, Shapiro-Wilk — to those differences. It's common for people to check the before distribution and after distribution separately and conclude "both look normal." That's not the relevant check. The differences can be approximately normal even when the two measurements individually show some structure, and can be non-normal even when each individual measurement looks fine.
What to Do When Normality Looks Questionable
A normality check that raises concerns doesn't automatically force a decision about your analysis. Work through these options in order rather than defaulting to a nonparametric test.
Verify data quality first
Check for entry errors, miscoded missing values, unit mismatches, and duplicate records. A data error is best fixed at the source.
Confirm you're checking the right quantity
Are you looking at residuals for ANOVA and regression? Differences for paired tests? Double-check before taking further action.
Assess severity and type
Mild symmetric departure is different from strong skewness, heavy tails, or a single influential outlier. Each has different implications for your analysis.
Consider method robustness
Many mean-based procedures tolerate moderate non-normality reasonably well, especially with adequate n and balanced designs. Evaluate robustness before switching methods.
Consider transformation if scientifically justified
A log or square-root transformation can make sense for multiplicative processes or bounded-below variables. Don't transform solely to achieve a non-significant Shapiro-Wilk — the goal is a better model, not a higher p-value.
Use a nonparametric method when appropriate
When the departure is large and the intended method isn't robust to it, a nonparametric test may better suit the data and research question. See parametric vs. nonparametric tests to choose correctly.
Removing observations simply because they make Shapiro-Wilk significant is not statistically justified. Investigate extreme values for data errors, measurement problems, or genuine unusual cases. Removal requires a substantive reason — not a p-value.
Common Normality-Checking Mistakes
| Mistake | Why it's wrong | What to do instead |
|---|---|---|
| Testing raw Y in regression | Y's marginal distribution is not the regression assumption | Check residuals from the fitted model |
| Pooling all ANOVA groups for the normality check | Different group means create an artificial mixture distribution | Check within-group residuals from the fitted ANOVA |
| Checking before and after values separately for a paired t-test | The paired t-test assumes normality of differences, not each variable | Calculate di = afteri − beforei and check those |
| Using Shapiro-Wilk alone, no graphs | A single p-value doesn't show you where or how the departure occurs | Always include a Q-Q plot; histograms also help |
| p > .05 means the data are normal | Failing to reject doesn't confirm normality, especially with small n | Interpret alongside sample size and graphical evidence |
| p < .05 means switch to a nonparametric test | Ignores severity of departure and method robustness | Examine Q-Q plot, consider sample size, assess impact |
| n ≥ 30 means normality doesn't matter | The CLT concerns sampling distributions of statistics, not raw data distributions | Consider the actual departure type; very heavy tails still matter at larger n |
| Bell-shaped histogram proves normality | Histogram shape depends on bins and sample size; even bimodal data can look bell-shaped with few bins | Use Q-Q plots as the primary normality diagnostic |
| Checking normality of X in regression | OLS doesn't assume predictors are normally distributed | The relevant assumption concerns the errors, not the predictors |
| Deleting outliers to achieve normality | Removing data without substantive justification biases results | Investigate the cause of outliers; retain unless there's a documented reason to exclude |
Skewness and Kurtosis as Supporting Evidence
Skewness and kurtosis statistics can inform your normality judgment, but they work better as supporting descriptive information than as pass/fail criteria. You'll encounter proposed cutoffs in textbooks — something like "absolute skewness under 2 is acceptable" or "kurtosis within a certain range is fine." These aren't universal laws. The severity of skewness or excess kurtosis that matters depends on sample size, the specific analysis, and the degree of imbalance in group sizes.
Sample kurtosis in particular is noisy with modest n. Two datasets from the same normal population can show noticeably different sample kurtosis values. Don't over-interpret kurtosis at small samples. Use it as one descriptive piece of the picture, alongside the Q-Q plot and histogram.
Frequently Asked Questions
For a one-sample t-test, inspect the outcome distribution using a Q-Q plot and histogram, then run Shapiro-Wilk. For an independent-samples t-test, check each group separately rather than pooling them. The pooled distribution reflects different group means and doesn't represent the normality assumption. The t-test is reasonably robust to moderate non-normality with adequate sample sizes and balanced groups, but severe skewness or heavy-tailed outliers in small samples deserve careful attention.
When data are approximately normally distributed, points in a Q-Q plot fall close to the reference diagonal with no strong systematic curvature. There will be some natural scatter, especially at the extremes, simply due to sampling variability. What you're watching for is a systematic pattern, such as a consistent bow indicating skewness, tails that diverge from the line indicating heavy or light tails, or isolated points suggesting outliers.
Residuals. The ANOVA normality assumption concerns the within-group model errors, which you approximate through residuals from the fitted model. Pooling all raw outcome values across groups and testing that combined distribution is a common error. The different group means can create a misleading multimodal picture that has nothing to do with the actual assumption.
Not in the way people usually assume. The CLT says that under broad conditions, the sampling distribution of the sample mean converges toward normal as n grows. It doesn't say your raw data become normally distributed. With large enough n, inference based on sample means becomes more robust to departures from normality, but very heavy tails, extreme skewness, and influential outliers can still matter even at larger sample sizes. The CLT is not a blanket exemption from normality checking.
Fit the model first, then extract the residuals. Create a Q-Q plot of those residuals, which is your primary diagnostic. A histogram of residuals can also help spot obvious skewness. Don't test whether X or Y is normally distributed; neither needs to be for the OLS framework. The predictors X are treated as fixed, meaning you're conditioning on them, and Y may be non-normal marginally while the conditional errors are approximately normal.
Often yes, depending on what the departure looks like. A significant Shapiro-Wilk result tells you there's evidence against exact normality, not that your t-test is invalid. Look at the Q-Q plot: is the departure mild and uniform, or does it involve strong skewness, heavy tails, or influential outliers? Consider sample size and group balance. The t-test tolerates moderate non-normality reasonably well when n is adequate and the distribution doesn't have extreme behavior. If the departure is severe and sample sizes are small, a nonparametric alternative may be more appropriate.
There's no single best test. Normality assessment works best as a combination of methods. The Q-Q plot is typically the most informative single diagnostic because it shows where and how departures occur. For formal testing, Shapiro-Wilk performs well for samples under roughly 2,000 observations. Anderson-Darling and Kolmogorov-Smirnov variants are alternatives; the normality tests page covers the comparison in detail. A combination of Q-Q plot, histogram, and formal test interpreted together is more reliable than any single method.
Key Takeaways
- Start with the right target: Identify what your method assumes is normal before running any diagnostic. For regression and ANOVA it's residuals. For a paired t-test it's the differences. For independent-group t-tests it's within-group distributions.
- Check data quality first: Apparent non-normality from a data error is best fixed at the source, not by switching statistical tests.
- Q-Q plots are your most informative tool: They reveal where and how departures occur — skewness, tail behavior, outliers — in a way a single p-value cannot.
- Histograms help but depend on bin choices: Use them alongside Q-Q plots, not instead of them.
- Shapiro-Wilk is one piece of evidence: p > .05 does not prove normality. p < .05 does not automatically invalidate your analysis.
- Sample size changes what a formal test detects: Small samples miss real departures; large samples flag trivial ones. The Q-Q plot helps you see the magnitude regardless of n.
- The goal is a judgment, not a binary pass/fail: Ask whether the departure is large enough to matter for the specific analysis you're planning, given your sample size and the method's robustness.
- Normality is one assumption: Checking normality doesn't validate your entire analysis. Independence, linearity, and homoskedasticity are separate assumptions that require their own diagnostics.