Home / Tools / Pearson r Table

Pearson r Table: Critical Values, Made Interactive

A Pearson r table answers one question: how strong does a correlation have to be, in a sample this size, before you can say it is not just noise? Drop in your sample size and the r you computed, and you get the critical value your r has to beat, a verdict in plain English, and the exact p-value. The full printable table is below, and every cell in it comes from R.

I want to check whether the correlation I computed is significant

Compute r first if you have raw numbers: the correlation calculator takes two columns and hands back r, and this page turns that r into a verdict.

two-tailed · α = 0.05

Significant

r = 0.42 clears the critical value for n = 30.

your r
0.4200
df = n − 2
28
t statistic
2.449
exact p
0.0208

How this is computed
1
2
3
4
The same thing in R

  

No data leaves your browser Verified against R's cor.test() and qt() across 927 cases Free, no sign-up

Full Pearson correlation table

Critical values of r by degrees of freedom and significance level. Each column serves both a two-tailed α and its one-tailed half, because splitting 0.05 across two tails leaves the same 0.025 in the upper tail as a one-tailed test at 0.025. Your current row and column are highlighted as you change the inputs above.

one-tailed α.05.025.01.005
two-tailed α.10.05.02.01
df critical value of r
1.9877.9969.9995.9999
2.9000.9500.9800.9900
3.8054.8783.9343.9587
4.7293.8114.8822.9172
5.6694.7545.8329.8745
6.6215.7067.7887.8343
7.5822.6664.7498.7977
8.5494.6319.7155.7646
9.5214.6021.6851.7348
10.4973.5760.6581.7079
11.4762.5529.6339.6835
12.4575.5324.6120.6614
13.4409.5140.5923.6411
14.4259.4973.5742.6226
15.4124.4821.5577.6055
16.4000.4683.5425.5897
17.3887.4555.5285.5751
18.3783.4438.5155.5614
19.3687.4329.5034.5487
20.3598.4227.4921.5368
21.3515.4132.4815.5256
22.3438.4044.4716.5151
23.3365.3961.4622.5052
24.3297.3882.4534.4958
25.3233.3809.4451.4869
26.3172.3739.4372.4785
27.3115.3673.4297.4705
28.3061.3610.4226.4629
29.3009.3550.4158.4556
30.2960.3494.4093.4487
35.2746.3246.3810.4182
40.2573.3044.3578.3932
45.2429.2876.3384.3721
50.2306.2732.3218.3542
60.2108.2500.2948.3248
70.1954.2319.2737.3017
80.1829.2172.2565.2830
90.1726.2050.2422.2673
100.1638.1946.2301.2540

How to read this table

Three numbers get you to an answer: your sample size, your significance level, and the direction of your test.

  1. Turn n into df. Degrees of freedom for a correlation are df = n - 2. With 30 pairs you read the row for df = 28, not 30. Two degrees of freedom are spent estimating the line through your points: one for the intercept, one for the slope.
  2. Pick the column. Two-tailed at α = 0.05 and one-tailed at α = 0.025 share a column, because both leave 0.025 of the distribution in the upper tail. Read the header that matches the test you are running.
  3. Compare. The cell is the critical r. If |r| exceeds it, your correlation is significant at that level. At df = 28 and α = 0.05 two-tailed the cell reads .3610, so r = 0.42 is significant and r = 0.30 is not.

Where these numbers come from

An r table looks like its own thing, but it is a t table wearing a disguise. A correlation is tested by converting it into a t statistic, and the critical r is what you get when you run that conversion backwards.

  1. The test statistic. R's cor.test() does not test r directly. It converts r into a t statistic on df = n - 2: t = r * sqrt(df) / sqrt(1 - r^2) The shape is intuitive: a bigger r pushes t up, and a bigger sample pushes t up too, which is why the same r means more in a large sample.
  2. Set t to its critical value. The test rejects when |t| > t_crit, where t_crit = qt(1 - alpha/2, df) for a two-tailed test. So the boundary case is the r that produces exactly that t: t_crit = r * sqrt(df) / sqrt(1 - r^2)
  3. Solve for r. Square both sides and collect the r terms: t_crit^2 * (1 - r^2) = r^2 * df t_crit^2 = r^2 * df + r^2 * t_crit^2 = r^2 * (df + t_crit^2) Take the square root and the critical r falls out: r_crit = t_crit / sqrt(df + t_crit^2)
  4. That one line is the whole table. Every cell above is qt(1 - alpha/2, df) pushed through that formula. You can check it in R in two lines, and the df = 2 row makes a neat test: there the critical r comes out to exactly 1 - alpha, which is why the 0.05 column reads .9500 and the 0.01 column reads .9900.

One-tailed or two-tailed

Use two-tailed unless you committed to a direction before you saw the data. A one-tailed test pours all of α into a single tail, which lowers the bar: at df = 28, the cutoff falls from .3610 to .3061. The catch is that it can only find an effect in the direction you named. If you predicted a positive correlation and the data comes back at r = -0.80, a one-tailed test reports nothing at all, however emphatic that -0.80 looks.

Significant is not the same as strong

The table has a habit of making this obvious. At n = 1000, an r of 0.07 clears the 0.05 bar while accounting for about half a percent of the variance. At n = 6, an r of 0.75 misses it while accounting for more than half. The critical value tells you whether a correlation is distinguishable from zero at your sample size. How much it matters is a separate question, and the honest answer usually needs r-squared and a confidence interval next to it.

How this compares with the alternatives

ApproachWhat it gives youWhen to use it
This tableCritical r by df and α, plus a verdict and an exact p-valueYou already have r and n and want the cutoff or a decision
cor.test(x, y)r, t, df, exact p and a confidence interval, straight from the dataYou have the raw pairs. This is the better answer whenever you do
A printed r tableThe same cells on paper, rounded to 4 decimalsExams and closed-book settings. It cannot give you a p-value
Confidence interval for rA range for the true correlation, via Fisher's zYou care how big the correlation is, not only whether it beats zero

The p-value here and the p-value from cor.test() are the same number computed the same way, because both run r through the t identity above. The table adds the cutoff, which cor.test() never prints.

Questions about the r table

How do I read a Pearson r table?

Find the row for your degrees of freedom, which is your sample size minus 2, and the column for your significance level. The cell where they meet is the critical r. If the absolute value of your correlation is larger than that cell, the correlation is significant at that level. With n = 30 (df = 28) at α = 0.05 two-tailed the critical r is .3610, so an observed r of 0.42 is significant.

Why is df equal to n minus 2 for a correlation?

Testing a correlation is the same as testing the slope of a regression line through the same points. Fitting that line costs two parameters, an intercept and a slope, so two degrees of freedom are spent and n − 2 remain. This is also why n = 3 is the smallest testable sample: with n = 2 any two points sit exactly on a line, r is always ±1, and there is nothing left to test.

What is the critical value of r for n = 30 at 0.05?

With n = 30 the degrees of freedom are 28, and the critical r for a two-tailed test at α = 0.05 is .3610. Any correlation above +.3610 or below −.3610 is significant at the 5% level. For a one-tailed test at 0.05 the cutoff drops to .3061.

How is the critical r related to the t distribution?

A Pearson r is tested by converting it to a t statistic, t = r * sqrt(df) / sqrt(1 - r^2) on df = n − 2. Inverting that identity turns a critical t into a critical r: r_crit = t_crit / sqrt(df + t_crit^2), where t_crit = qt(1 - alpha/2, df) for a two-tailed test. Every cell in this table is that one line of algebra, which is why an r table is really a t table in disguise.

Should I use a one-tailed or two-tailed critical r?

Two-tailed, unless you committed to a direction before seeing the data. A one-tailed test puts all of α in one tail, giving a smaller critical r and making significance easier to reach, but it can only detect an effect in the predicted direction. A correlation that comes out strongly the other way counts as not significant no matter how large it is.

Does a significant correlation mean the relationship is strong?

No. Significance answers whether the correlation is distinguishable from zero, not whether it is large. With n = 1000 an r of 0.07 is significant at 0.05 while explaining about half a percent of the variance. With n = 6 an r of 0.75 is not significant even though it explains more than half. Read the critical r alongside r-squared and a confidence interval.

Does this r table match R?

Yes. Every printed cell and every interactive result comes from the same routine, checked against R's cor.test() and qt() across 927 cases to better than eleven significant figures. The df = 2 row is a useful sanity check: the critical r there is exactly 1 − α, so the column headed 0.05 reads .9500.

Keep going

Have the raw pairs rather than an r? Start with the correlation calculator. Want the t values this table is built from? The t table has them.