Shapiro-Wilk Normality Test Calculator
Paste a sample of 3 to 5,000 values and get the Shapiro-Wilk W statistic and its p-value — computed with Royston's AS R94 algorithm, the same one R and SciPy use — together with skewness, excess kurtosis, and a normal Q–Q plot you can download. The page also explains what the test can and cannot tell you. Free, no sign-up.
0 values
Enter at least 3 numbers.
How to Use the Shapiro-Wilk Normality Test Calculator
- 1. Paste your data. Enter between 3 and 5,000 numbers separated by commas, spaces, or new lines. If you are checking a model's assumption, paste its residuals rather than the raw scores.
- 2. Choose α. The default is .05; the decision line updates as you change it.
- 3. Read W, p, and the plot together. A small p says the sample departs from normality; the Q–Q plot shows where — in one tail, both tails, or through skew across the whole range.
- 4. Report it with context. Copy the APA line and pair it with the plot or a histogram, and with what the departure means for the analysis you plan.
What the W Statistic Measures
Sort the data from smallest to largest. If the population were normal, the ordered values would line up with the expected order statistics of a normal sample, and W measures how well they do: W = (Σ aᵢ x₍ᵢ₎)² / Σ(x − x̄)², where the coefficients aᵢ are derived from those expected normal order statistics. W is in effect the squared correlation between the data and normal scores, so it runs from 0 to 1, with values near 1 meaning the sample looks normal. Small departures matter: W = .95 can be a clear rejection in a large sample.
The exact distribution of W is not known in closed form, so p-values come from Royston's (1995) algorithm AS R94, which computes the coefficients and transforms W to an approximately normal statistic for 4 ≤ n ≤ 5,000 (for n = 3 the p-value is exact). It is the algorithm behind R's shapiro.test and SciPy's scipy.stats.shapiro, and this calculator matches SciPy to many decimal places.
Worked Example: Reaction Times With One Slow Participant
Click Try an example to load reaction times, in milliseconds, for 11 participants: 148, 154, 158, 160, 161, 162, 166, 170, 182, 195, and 236. The mean is 172 and the SD 24.95.
Shapiro-Wilk test, step by step
Σ(x − x̄)² = 6226
b = Σ aᵢ(x₍ₙ₊₁₋ᵢ₎ − x₍ᵢ₎) = 70.08
W = 70.08² / 6226 = .789, p = .0067
skewness G₁ = 1.96, excess kurtosis G₂ = 4.15
In APA style: reaction times departed from normality, W(11) = .79, p = .007. The Q–Q plot shows why: the lower values hug the reference line, the upper tail bends away from it, and the 236 ms response sits far above everything else — a right skew driven mostly by one slow participant. Remove that one value and the test gives W(10) = .91, p = .268 — but deleting data to pass a normality test is not a fix. Ask whether 236 ms is an error or a real slow response, and if it is real, consider a method that does not assume normality, such as a rank-based test.
Reading the Result Honestly
- A non-significant result does not prove normality. It means the test could not detect a departure. With ten values, even clearly skewed data often pass.
- A significant result in a large sample may not matter. With several hundred values, W detects departures far too small to affect a t-test or ANOVA, which tolerate moderate non-normality as samples grow.
- Test what the method assumes. ANOVA and regression assume normal residuals (or normal data within each group), not a normal pooled sample. Testing all groups together can reject normality just because the group means differ.
- Look at the picture. The Q–Q plot shows the kind of departure — skew bends the points into an arc, heavy tails into an S-shape — which a p-value cannot. Choosing a test based only on a preliminary normality test also distorts the final test's error rates.
Frequently Asked Questions
- What does the Shapiro-Wilk test tell you?
- Whether a sample is consistent with having come from a normal distribution. The null hypothesis is normality, so a p-value below α is evidence that the population is not normal. A p-value above α only says the test found no clear departure, which depends heavily on the sample size.
- What is a good W value in the Shapiro-Wilk test?
- There is no fixed cut-off, because what counts as unusual depends on n. In a sample of 11, W = .79 is significant (p = .007); in a sample of 500, even W = .99 can be. Always read W together with its p-value and the Q–Q plot rather than against a single threshold.
- Should I test the raw data or the residuals for normality?
- Test what your method assumes. A t-test assumes each group (or the paired differences) is roughly normal; ANOVA and regression assume the residuals are. Pooling groups with different means into one sample can make perfectly normal groups look non-normal.
- Why is my data non-normal with a large sample?
- Because the test's power grows with n. With hundreds of values, tiny, harmless departures — slight skew, a few rounded values — become statistically significant. That is a reason to rely on the Q–Q plot and on the robustness of your planned method, not to transform or trim the data automatically.
- How do I report a Shapiro-Wilk test in APA style?
- Give W with the sample size and the p-value: W(11) = .79, p = .007. W cannot exceed 1, so it takes no leading zero; italicise W and p. Mention what you did with the result — for example, that you used a rank-based test instead of a t-test.
- Is Shapiro-Wilk better than the Kolmogorov-Smirnov test?
- For testing normality, generally yes. Simulation studies show the Shapiro-Wilk test has more power than the Kolmogorov-Smirnov test (and its Lilliefors correction) across most sample sizes and kinds of departure. The Kolmogorov-Smirnov test without the Lilliefors correction is also miscalibrated — far too conservative — when the mean and SD are estimated from the same data.