Statistics & probability

Normal Q-Q plot and normality tests

Draw a normal Q-Q plot of your numbers and check them with the Jarque-Bera, D’Agostino-Pearson and Anderson-Darling tests.

Normal Q-Q plot and normality tests
Esc to restore

Your inputs

Your data stays on this device: nothing is uploaded.

Numbers separated by spaces, commas, semicolons or new lines; NA or . marks a missing value. 3 to 20,000 values.

Results update as you type. Larger files run when you press Update result.

Your result

Your result will appear here.

More actions

Your inputs stay in this browser. Nothing is uploaded or saved.

A clear answer. Here’s how.

Sorts the n values and plots the i-th smallest against the standard normal quantile of its plotting position (Blom’s (i − 3/8) ÷ (n + 1/4) by default). Normal data fall near a straight line; the reference line passes through the first and third quartiles (type 7) of the data and of the normal, so outliers do not tilt it. The optional band is ± 1.96 × (slope ÷ φ(z)) × √(p(1 − p) ÷ n) around the line, a pointwise interval for each order statistic, not a simultaneous one. Skewness G1 and excess kurtosis G2 are the adjusted sample estimates (as in SPSS and Excel); g1 and g2, the plain moment ratios, feed the tests. Jarque–Bera = n/6 × (g1² + g2²/4) has an exact χ²(2) tail, p = exp(−JB/2), but the statistic itself is only roughly χ² below a few hundred values. D’Agostino–Pearson K² adds the squares of D’Agostino’s (1970) skewness z and Anscombe and Glynn’s (1983) kurtosis z and compares the sum with χ²(2); it needs n ≥ 8 and its kurtosis part is rough below 20. Anderson–Darling A² compares the empirical distribution with a normal of the sample mean and SD, with Stephens’ modification A²(1 + 0.75/n + 2.25/n²) and the D’Agostino and Stephens (1986) p-value formula (as in R’s nortest), for n ≥ 8. A p-value of 0.05 or more means no evidence against normality, never proof of it. It does not run the Shapiro–Wilk test or test other distributions. It is a calculator, not a substitute for a statistician when decisions depend on the answer.

How this is checked

4 reference checks passed These 4 cases were run when this page was built, on 20 October 2026, and all reproduce within the stated tolerance. The same cases are part of the automated tests that run on every change to Toolmoz. Engine version 1.

See the checks and where each expected answer comes from
  1. Case 1

    Inputs
    The tool’s default inputs
    Expected, and what Toolmoz gave
    Mean expected 20.933333333333334, Toolmoz 20.933333333333334Standard deviation expected 37.7443783262898, Toolmoz 37.7443783262898Skewness (G1, adjusted) expected -1.105907092394467, Toolmoz -1.1059070923944676Excess kurtosis (G2, adjusted) expected 1.408241396038813, Toolmoz 1.4082413960388156Jarque–Bera statistic expected 2.689946127614293, Toolmoz 2.6899461276142977P-value (Jarque–Bera) expected 0.26054672590231176, Toolmoz 0.26054672590231115D’Agostino–Pearson K² expected 5.211780661095492, Toolmoz 5.2117806610955P-value (D’Agostino–Pearson) expected 0.07383736825932662, Toolmoz 0.07383736825932632Anderson–Darling A² expected 0.6175124619999703, Toolmoz 0.6175124619999739P-value (Anderson–Darling) expected 0.08757741459198046, Toolmoz 0.08757741459197858
    Where the expected answer comes from
    Darwin’s 15 Zea mays differences (Fisher 1935): moments in exact fractions, then the D’Agostino, Anscombe–Glynn and Anderson–Darling formulas evaluated in an independent Python script with Φ from math.erfc
    Allowed difference
    ±1e-9 relative
  2. Case 2

    Inputs
    Values 1 2 3 4 5 6 7 8 9
    Expected, and what Toolmoz gave
    Skewness (G1, adjusted) expected 0, Toolmoz 0Excess kurtosis (G2, adjusted) expected -1.2, Toolmoz -1.2000000000000004Jarque–Bera statistic expected 0.5673375, Toolmoz 0.5673375000000003P-value (Jarque–Bera) expected 0.7530160399610638, Toolmoz 0.7530160399610637Skewness z (D’Agostino) expected 0, Toolmoz 0
    Where the expected answer comes from
    Symmetric data have zero skewness. For 1 to 9, m2 = 60/9 and m4 = 708/9, so g2 = 1.77 − 3 = −1.23, G2 = (10 × −1.23 + 6) × 8 ÷ 42 = −1.2 and JB = 9/6 × (−1.23)²/4 = 0.5673375 with p = exp(−JB/2), by hand
    Allowed difference
    ±1e-12
  3. Case 3

    Inputs
    Values 0.1 0.2 0.2 0.3 0.4 0.5 0.7 0.9 1.2 1.6 2.2 3.5 5.0 8.0
    Expected, and what Toolmoz gave
    Jarque–Bera statistic expected 9.256894457769818, Toolmoz 9.256894457769812P-value (D’Agostino–Pearson) expected 0.0011263392069829948, Toolmoz 0.0011263392069829968Anderson–Darling A² expected 1.4201733650179431, Toolmoz 1.4201733650179431P-value (Anderson–Darling) expected 0.0006762587308528132, Toolmoz 0.0006762587308528132
    Where the expected answer comes from
    A right-skewed sample of 14 values: the same formulas evaluated in an independent Python script
    Allowed difference
    ±1e-9 relative
  4. Case 4

    Inputs
    Plotting positions weibullReference line moments
    Expected, and what Toolmoz gave
    Anderson–Darling A² expected 0.6175124619999703, Toolmoz 0.6175124619999739Jarque–Bera statistic expected 2.689946127614293, Toolmoz 2.6899461276142977
    Where the expected answer comes from
    Plotting positions and the reference line change only the picture: the tests on Darwin’s data are the same as with the defaults (independent Python script)
    Allowed difference
    ±1e-9 relative

What this shows: the engine reproduces independently worked values for these cases. It does not prove every possible input is right. To test an answer you were given, see how to check a number; to see what is and is not checked across Toolmoz, see the accuracy ledger.

See a worked example

Worked example

A fixed demonstration, separate from the values you enter above.

Values
49, -67, 8, 16, 6, 23, 28, 41, 14, 29, 56, 24, 75, 60, -48
Plotting positions
Blom, (i − 3/8) ÷ (n + 1/4)
Reference line
Through the quartiles (robust, as R’s qqline)
Pointwise 95% band
Show

Example result

Values used
15
Values skipped (missing)
0
Mean
20.93333
Standard deviation
37.74438
Skewness (G1, adjusted)
-1.1059
Excess kurtosis (G2, adjusted)
1.4082
Jarque–Bera statistic
2.6899
P-value (Jarque–Bera)
0.2605
Jarque–Bera
No evidence against normality at the 5% level
D’Agostino–Pearson K²
5.2118
P-value (D’Agostino–Pearson)
0.07384
D’Agostino–Pearson
No evidence against normality at the 5% level
Skewness z (D’Agostino)
-1.8899
Kurtosis z (Anscombe–Glynn)
1.2806
Anderson–Darling A²
0.6175
A² with Stephens’ modification
0.6546
P-value (Anderson–Darling)
0.08758
Anderson–Darling
No evidence against normality at the 5% level

Plotting positions: Blom, p = (i − 3/8) ÷ (n + 1/4). A p-value at or above 0.05 means no evidence against normality, not proof that the data are normal: small samples rarely reject anything, and large samples reject trivial departures, so read the plot first. Jarque–Bera uses n/6 × (g1² + g2²/4) against χ²(2), which is unreliable below a few hundred values. D’Agostino–Pearson needs n ≥ 8 and its kurtosis part is rough below 20; Anderson–Darling uses the estimated mean and SD with Stephens’ correction and the D’Agostino and Stephens (1986) p-value approximation.