Shapiro-Wilk Test Calculator

Test normality with Shapiro-Wilk W and p (n = 3–5,000), sample skewness and kurtosis, and a normal Q-Q plot using Blom plotting positions.

3–5,000 numbers.

Interpreting W

W close to 1 → data resemble normal order statistics

Small p → evidence against H0, not proof of non-normality

Worked example

Load example runs W and p on ten near-normal values; numbers are verified independently against scipy.stats.shapiro when you calculate.

Further reading

Skewness & kurtosis calculator and the histogram maker for a visual check of the same data.

Related guides and calculators

Look at the data too: a histogram or box plot shows what a p-value cannot, and the skewness and kurtosis calculator measures the departure. If the data are normal, model them with the normal distribution. Read normality tests explained and parametric vs nonparametric tests.

Frequently Asked Questions

What is H0 for Shapiro-Wilk?

H0 states the sample was drawn from a normal distribution; a small p-value means evidence against normality, not proof of non-normality.

Why inspect a Q-Q plot?

The test can reject at large n for tiny departures; a Q-Q plot shows where tails or skewness deviate from the normal line.

Which Q-Q positions are used?

Blom positions (i − 3/8)/(n + 1/4) for theoretical normal quantiles; this is stated on the chart, not a generic Q-Q default.

What algorithm is implemented?

Royston AS R94 for W (as in R shapiro.test and scipy.stats.shapiro); the p-value is Royston's normal approximation, not an exact null distribution.

Are ties allowed?

Repeated values are allowed; all-identical data are rejected because W is undefined.

Does rejection mean t-tests are invalid?

Moderate non-normality at reasonable sample sizes is often tolerated for t-tests and ANOVA by the CLT; severe skew or tiny n need other methods.

Alternatives not on this page?

Anderson-Darling, Kolmogorov-Smirnov with Lilliefors, and D'Agostino tests are common; this page focuses on Shapiro-Wilk only.

R and Python?

R: shapiro.test(x). Python: scipy.stats.shapiro(x).

Embed This Calculator

Add this free calculator to your course page or LMS.

Adjust the height value to fit your page.