{"id":1007,"date":"2026-10-13T17:16:00","date_gmt":"2026-10-13T17:16:00","guid":{"rendered":"https:\/\/freestatisticaltools.com\/blog\/?p=1007"},"modified":"2026-10-13T17:16:00","modified_gmt":"2026-10-13T17:16:00","slug":"normality-test-shapiro-wilk","status":"publish","type":"post","link":"https:\/\/freestatisticaltools.com\/blog\/normality-test-shapiro-wilk\/","title":{"rendered":"How to Test for Normality (and What to Do If Your Data Aren&#8217;t Normal)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">&quot;Is my data normally distributed?&quot; is one of the most searched questions in statistics, and one of the most misunderstood. Many students run a normality test on every variable, panic when one is significant, and switch everything to nonparametric tests. Often that isn&#39;t necessary.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This guide explains <strong>what<\/strong> actually needs to be normal, <strong>how<\/strong> to check it with plots and tests, and <strong>what to do<\/strong> when the assumption is violated.<\/p>\n\n\n<div class=\"fst-tool\"><span class=\"ico\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 20V14M9 20V9M14 20V12M19 20V5\"\/><\/svg><\/span><span><span class=\"t-eyebrow\">Free tool \u00b7 runs in your browser<\/span><a class=\"t-name\" href=\"https:\/\/freestatisticaltools.com\/shapiro-wilk-test-calculator\/\" style=\"text-decoration:none;color:inherit\">Shapiro-Wilk Normality Test Calculator<\/a><span class=\"t-desc\">Test normality online with the Shapiro-Wilk and Kolmogorov-Smirnov (Lilliefors) tests, skewness and kurtosis z-scores, a Q-Q plot and histogram. Free.<\/span><\/span><a class=\"btn accent\" href=\"https:\/\/freestatisticaltools.com\/shapiro-wilk-test-calculator\/\" data-tool=\"shapiro-wilk-test-calculator\">Test normality \u2192<\/a><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">What actually needs to be normal?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Parametric tests do <strong>not<\/strong> require every raw variable to be normal:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Analysis<\/th><th>What should be approximately normal<\/th><\/tr><\/thead><tbody><tr><td>Independent t-test, one-way ANOVA<\/td><td>The outcome <strong>within each group<\/strong> (equivalently, the residuals)<\/td><\/tr><tr><td>Paired t-test<\/td><td>The <strong>differences<\/strong> between the paired scores<\/td><\/tr><tr><td>Regression<\/td><td>The <strong>residuals<\/strong>, not the predictors or the outcome<\/td><\/tr><tr><td>Pearson correlation (for significance tests)<\/td><td>Roughly bivariate normal; linearity matters more<\/td><\/tr><tr><td>Chi-square, Mann-Whitney, Kruskal-Wallis<\/td><td>Nothing; no normality assumption<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Predictors in a regression can be skewed, binary or anything else. Checking them for normality is a common wasted effort.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The central limit theorem: why sample size matters<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">t-tests, ANOVA and regression make inferences about <strong>means and coefficients<\/strong>, and by the central limit theorem the sampling distribution of a mean becomes approximately normal as the sample grows, even when the raw data are not. With roughly <strong>30 or more observations per group<\/strong>, moderate skewness rarely causes trouble. Normality matters most in <strong>small samples<\/strong>, and there your tests have the least power to detect non-normality. That is why plots matter more than p-values.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Method 1: Look at the data (always do this)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Histogram:<\/strong> roughly bell-shaped and symmetric? Watch for long tails, floor or ceiling effects and two peaks (which may mean two subgroups).<\/li>\n\n<li><strong>Q-Q plot:<\/strong> plots your data&#39;s quantiles against those of a normal distribution. Points close to the diagonal line indicate normality. An S-shape suggests heavy or light tails; a curve suggests skew.<\/li>\n\n<li><strong>Box plot:<\/strong> shows skew and outliers at a glance.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"\/shapiro-wilk-test-calculator\/\">Shapiro-Wilk calculator<\/a> draws the histogram and Q-Q plot for you, and the <a href=\"\/descriptive-statistics-calculator\/\">descriptive statistics calculator<\/a> and <a href=\"\/box-plot-maker\/\">box plot maker<\/a> are useful too.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Method 2: Skewness and kurtosis<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Skewness<\/strong> measures asymmetry (0 = symmetric; positive = long right tail).<\/li>\n\n<li><strong>Excess kurtosis<\/strong> measures tail heaviness (0 = normal; positive = heavier tails).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Common rules of thumb:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Approach<\/th><th>Rule<\/th><\/tr><\/thead><tbody><tr><td>Absolute values (common in social science)<\/td><td>Skewness between \u22122 and +2 and kurtosis between \u22127 and +7 for SEM (West et al., 1995); stricter authors use \u00b11<\/td><\/tr><tr><td>z-scores (statistic \u00f7 SE)<\/td><td>|z| &lt; 1.96 in small samples (n &lt; 50); |z| &lt; 3.29 in medium samples (50\u2013300) (Kim, 2013)<\/td><\/tr><tr><td>Large samples (n &gt; 300)<\/td><td>Judge the absolute values and the plots, not the z-scores<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Method 3: Formal normality tests<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Shapiro-Wilk test<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The most powerful general-purpose normality test, especially for small to medium samples.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>H\u2080:<\/strong> the data come from a normal distribution.<\/li>\n\n<li><strong>p &gt; .05:<\/strong> no evidence against normality.<\/li>\n\n<li><strong>p &lt; .05:<\/strong> the data deviate significantly from normality.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Kolmogorov-Smirnov (Lilliefors) test<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">An older test with lower power than Shapiro-Wilk. If you use it, use the Lilliefors-corrected version (the calculator reports both).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The sample-size paradox<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Formal tests are <strong>underpowered in small samples<\/strong>, where normality matters most, and <strong>overpowered in large samples<\/strong>, where it matters least. With n = 1,000, a trivial deviation that has no effect on a t-test will be &quot;significant&quot;. So:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Small samples:<\/strong> use the test together with the plots, and be cautious.<\/li>\n\n<li><strong>Large samples:<\/strong> rely on plots and skewness and kurtosis; don&#39;t let a significant p-value alone push you to nonparametric tests.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Worked example<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A researcher measures time on task (seconds) for 45 participants.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Statistic<\/th><th>Value<\/th><\/tr><\/thead><tbody><tr><td>Skewness<\/td><td>1.42 (z = 4.01)<\/td><\/tr><tr><td>Excess kurtosis<\/td><td>2.10 (z = 3.02)<\/td><\/tr><tr><td>Shapiro-Wilk<\/td><td>W = .89, p &lt; .001<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The histogram shows a long right tail, typical of time data. Both the test and the skewness z-score indicate clear non-normality, and n = 45 is too small to rely fully on the central limit theorem. Options: log-transform the times, or use a nonparametric test.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What to do if your data aren&#39;t normal<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Check for errors and outliers first.<\/strong> A typo (450 instead of 45) can create apparent non-normality. Use the <a href=\"\/outlier-calculator\/\">outlier calculator<\/a>.<\/li>\n\n<li><strong>Consider whether it matters.<\/strong> With large, similar-sized groups, t-tests and ANOVA are robust. Unequal variances are a bigger problem; use Welch&#39;s tests.<\/li>\n\n<li><strong>Transform the variable.<\/strong> Log, square-root or reciprocal transformations often fix right skew (time, income, counts). Interpret the results on the transformed scale.<\/li>\n\n<li><strong>Use a nonparametric test:<\/strong><\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Parametric test<\/th><th>Nonparametric alternative<\/th><\/tr><\/thead><tbody><tr><td>Independent t-test<\/td><td><a href=\"\/blog\/mann-whitney-u-test\/\">Mann-Whitney U test<\/a><\/td><\/tr><tr><td>Paired t-test<\/td><td><a href=\"\/wilcoxon-signed-rank-test-calculator\/\">Wilcoxon signed-rank test<\/a><\/td><\/tr><tr><td>One-way ANOVA<\/td><td><a href=\"\/kruskal-wallis-test-calculator\/\">Kruskal-Wallis test<\/a><\/td><\/tr><tr><td>Repeated measures ANOVA<\/td><td><a href=\"\/friedman-test-calculator\/\">Friedman test<\/a><\/td><\/tr><tr><td>Pearson correlation<\/td><td>Spearman correlation<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Use robust methods:<\/strong> bootstrapped confidence intervals or <a href=\"\/robust-standard-errors-regression-diagnostics\/\">robust standard errors<\/a> in regression.<\/li>\n\n<li><strong>Use a model suited to the data:<\/strong> <a href=\"\/blog\/logistic-regression-odds-ratios\/\">logistic regression<\/a> for binary outcomes, <a href=\"\/poisson-negative-binomial-regression\/\">Poisson or negative binomial regression<\/a> for counts.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">How to report normality checks in APA 7<\/h2>\n\n\n\n<div class=\"fst-report\"><b>How to report it (APA 7)<button type=\"button\" data-copy-report>Copy<\/button><\/b><div><p>Normality was assessed with Shapiro-Wilk tests and inspection of Q-Q plots. Time on task was positively skewed (skewness = 1.42, <i>SE<\/i> = 0.35; Shapiro-Wilk <i>W<\/i> = .89, <i>p<\/i> &lt; .001), so it was log-transformed before analysis. After transformation, the distribution was approximately normal (<i>W<\/i> = .98, <i>p<\/i> = .62).<\/p><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Frequently asked questions<\/h2>\n\n\n\n<div class=\"fst-faq\"><details><summary>Which normality test is best?<\/summary><div class=\"a\"><p>The Shapiro-Wilk test is generally the most powerful for small and medium samples. Always combine it with a histogram and a Q-Q plot.<\/p><\/div><\/details><details><summary>What does a significant Shapiro-Wilk test mean?<\/summary><div class=\"a\"><p>A p-value below .05 means the data deviate significantly from a normal distribution. With large samples, even trivial deviations become significant, so check the plots before deciding what to do.<\/p><\/div><\/details><details><summary>Do my independent variables need to be normally distributed?<\/summary><div class=\"a\"><p>No. In regression, only the residuals should be approximately normal. Predictors can be skewed or categorical.<\/p><\/div><\/details><details><summary>What is an acceptable skewness and kurtosis?<\/summary><div class=\"a\"><p>Common guidelines treat skewness between \u22122 and +2 as acceptable, with kurtosis below about 7 for SEM. Stricter authors use \u00b11. In small samples, z-scores (statistic divided by its standard error) below 1.96 are often used.<\/p><\/div><\/details><details><summary>Can I use a t-test if my data are not normal?<\/summary><div class=\"a\"><p>Often yes, if each group has about 30 or more observations, the groups are of similar size and there are no extreme outliers. For small skewed samples, use the Mann-Whitney U test or transform the data.<\/p><\/div><\/details><\/div>\n\n\n<div class=\"fst-report\"><b>Cite the tool (APA 7)<button type=\"button\" data-copy-report>Copy<\/button><\/b><div>Xavier, B. (2026). <i>Free Statistical Tools<\/i> [Computer software]. Zenodo. https:\/\/doi.org\/10.5281\/zenodo.23372149 (web app: https:\/\/freestatisticaltools.com\/shapiro-wilk-test-calculator\/)<\/div><small>Name the tool in your methods: \u201cThe analysis was carried out with the Shapiro-Wilk Normality Test Calculator in Free Statistical Tools.\u201d<\/small><\/div>\n","protected":false},"excerpt":{"rendered":"<p>A practical guide to checking normality with plots and tests, understanding what really needs to be normal, and choosing the right fix when your data are skewed.<\/p>\n","protected":false},"author":1,"featured_media":1008,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_fst_seo_title":"Normality Test: Shapiro-Wilk, Q-Q Plots and What to Do Next","_fst_meta_desc":"How to check normality with the Shapiro-Wilk test, Q-Q plots, skewness and kurtosis, which variables need to be normal, and what to do when they aren't.","_fst_primary_tool":"shapiro-wilk-test-calculator","_fst_canonical":"","_fst_noindex":false,"_fst_no_toc":false,"_fst_no_autolink":false,"footnotes":""},"categories":[10],"tags":[55,54,52,53],"class_list":["post-1007","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-descriptive-statistics","tag-assumptions","tag-data-screening","tag-normality","tag-shapiro-wilk"],"_links":{"self":[{"href":"https:\/\/freestatisticaltools.com\/blog\/wp-json\/wp\/v2\/posts\/1007","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/freestatisticaltools.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/freestatisticaltools.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/freestatisticaltools.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/freestatisticaltools.com\/blog\/wp-json\/wp\/v2\/comments?post=1007"}],"version-history":[{"count":0,"href":"https:\/\/freestatisticaltools.com\/blog\/wp-json\/wp\/v2\/posts\/1007\/revisions"}],"wp:attachment":[{"href":"https:\/\/freestatisticaltools.com\/blog\/wp-json\/wp\/v2\/media?parent=1007"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/freestatisticaltools.com\/blog\/wp-json\/wp\/v2\/categories?post=1007"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/freestatisticaltools.com\/blog\/wp-json\/wp\/v2\/tags?post=1007"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}