induwara.lk
induwara.lkEducation · Statistics

Cramér's V Calculator — Chi-Square Effect Size

Enter a contingency table of counts — or a chi-square value you already have — and get Cramér's V, the standard effect size for association between two nominal variables. You also get χ², degrees of freedom, φ², a bias-corrected V and a plain-English strength verdict, with every step shown. Runs entirely in your browser.

By Induwara AshinsanaUpdated Jul 9, 2026
Cramér's V
Cramér 1946 · cross-checked
Counts (2 × 2)
Rows
Cols
Col 1Col 2
Row 1
Row 2

Enter whole-number counts (frequencies), not percentages. Each row is one category of the first variable; each column one category of the second.

Try an example
Cramér's V
0.4924
Medium association

At df* = min(r−1, c−1) = 1, Cohen's benchmarks are small ≥ 0.10, medium ≥ 0.30, large ≥ 0.50. Your V of 0.4924 is a medium association between the two variables.

Bias-corrected V (Bergsma):0.4845
χ² statistic
24.2424
φ² (χ²/n)
0.2424
df = (r−1)(c−1)
1
k = min(r−1, c−1)
1
Sample size n
100
χ² p-value
< 0.0001
significance ≠ effect size

Observed

C1C2Σ
R1301040
R2154560
Σ4555100

Expected

C1C2
R118.0022.00
R227.0033.00

Cell contributions to χ²

CellObservedExpected(O−E)²/E% of χ²
R1·C13018.008.000033%
R1·C21022.006.545527%
R2·C11527.005.333322%
R2·C24533.004.363618%

Show working

  1. Eᵢⱼ = (rowᵢ total × colⱼ total) / n, n = 100
  2. χ² = Σ (Oᵢⱼ − Eᵢⱼ)² / Eᵢⱼ = 24.242424
  3. φ² = χ² / n = 24.2424 / 100 = 0.242424
  4. k = min(r − 1, c − 1) = min(2 − 1, 2 − 1) = 1
  5. V = √(φ² / k) = √(0.242424 / 1) = 0.492366
  6. df = (r − 1)(c − 1) = (2 − 1)(2 − 1) = 1 (for the context p-value)

Cross-check: for this 2×2 table the phi coefficient φ = |ad − bc| / √((a+b)(c+d)(a+c)(b+d)) gives 0.492366, agreeing with V to displayed precision.

Sources cited

How it works

Cramér's V measures how strongly two categorical (nominal) variables are associated. A chi-square test of independence tells you whether two variables are related; Cramér's V tells you how strongly, on a 0-to-1 scale that is comparable across tables of different sizes. It was defined by Harald Cramér in Mathematical Methods of Statistics (1946).

The calculation starts from the same building blocks as the chi-square test. For an r×c table with grand total n, the expected count in each cell under independence is E_ij = (row i total × column j total) / n, and the Pearson chi-square is χ² = Σ (O − E)² / E summed over every cell (NIST §7.4.3). From there:

  1. Compute the mean-square contingency φ² = χ² / n. This is the phi coefficient squared, but on its own it can exceed 1 for tables larger than 2×2.
  2. Divide by k = min(r − 1, c − 1), the smaller of the two reduced dimensions. Dividing by k is exactly what bounds the result in [0, 1] and makes different table shapes comparable.
  3. Take the square root: V = √(φ² / k). Because the largest possible χ² is n × k, V can never exceed 1 — a value above 1 only ever comes from an arithmetic error or inconsistent inputs.

Interpreting V.The tool uses Cohen's (1988) effect-size benchmarks. Cohen's cut-offs are given for w (0.10 small, 0.30 medium, 0.50 large), and V relates to w through w = V·√df*, where df* = min(r − 1, c − 1). So the thresholds for V are those numbers divided by √df*: for a 2×2 table (df* = 1) they stay 0.10 / 0.30 / 0.50, while for df* = 2 they fall to roughly 0.07 / 0.21 / 0.35. The tool prints the exact thresholds for your table and colour-codes the verdict.

Bias correction. In small samples the ordinary V is biased upward. Bergsma (2013) proposes φ̃² = max(0, φ² − (r−1)(c−1)/(n−1)), shrinks the dimensions to r̃ = r − (r−1)²/(n−1) and c̃ = c − (c−1)²/(n−1), and computes V_corrected = √(φ̃² / min(r̃−1, c̃−1)). This corrected value is slightly smaller and is the better estimate for small n; the tool shows it alongside the classic V.

For a 2×2 table the tool cross-checks V against the phi coefficient φ = |ad − bc| / √((a+b)(c+d)(a+c)(b+d)), a formula that never touches the chi-square path — so agreement is a genuine second opinion. The chi-square p-value is shown for context only: with a large sample a trivially small V can still be statistically significant, so significance is not the same as effect size.

Worked examples

2×2 table — treatment × outcome

Drug vs placebo, improved vs not, n = 100

  1. Observed [[30,10],[15,45]]; row totals 40, 60; column totals 45, 55
  2. Expected = (row×col)/n → [[18,22],[27,33]], every |O−E| = 12
  3. χ² = 144·(1/18 + 1/22 + 1/27 + 1/33) = 24.2424
  4. φ² = 24.2424/100 = 0.2424; k = min(1,1) = 1
  5. V = √(0.2424/1) = 0.4924

V = 0.4924 → medium association, close to the 0.50 large cut-off for df* = 1. Bias-corrected V (Bergsma) = 0.4845.

3×2 table — region × product

North / Central / South × Product X / Y, n = 180

  1. Observed [[40,20],[30,30],[10,50]]; row totals 60 each; column totals 80, 100
  2. Expected per row: X = 60·80/180 = 26.6667, Y = 60·100/180 = 33.3333
  3. χ² = 6.6667 + 5.3333 + 0.4167 + 0.3333 + 10.4167 + 8.3333 = 31.5000
  4. φ² = 31.5/180 = 0.1750; k = min(2,1) = 1
  5. V = √(0.1750/1) = 0.4183

V = 0.4183 → medium-to-large association for df* = 1. The South row (Product Y far above expectation) drives most of the χ².

Edge case — perfect association

A 2×2 table where every case falls on the diagonal, n = 20

  1. Observed [[0,10],[10,0]]; row totals 10, 10; column totals 10, 10
  2. Expected = 5 in every cell, so |O−E| = 5 everywhere
  3. χ² = 4·(5²/5) = 20; φ² = 20/20 = 1.0; k = 1
  4. V = √(1.0/1) = 1.0000 — the maximum

V = 1.0000 → knowing one variable perfectly predicts the other. This shows V is capped at 1: a real table can never produce more.

Frequently asked questions

Sources & references

The formulas on this page were last cross-checked against these sources and reconciled with SciPy on 2026-07-09. Cohen's effect-size benchmarks are from Statistical Power Analysis for the Behavioral Sciences (2nd ed., 1988).

Related tools

Rate this tool
Be the first to rate

Comments & feedback

Spotted a bug or want an improvement? Tell us — our team reviews every comment, and good ideas get built. Comments are public and anonymous.

Found a bug, edge case, or want to suggest an improvement?

Email me at [email protected] — most fixes ship within 24 hours.