# Effect size calculator: mean difference, Cohen's d and Hedges' g with confidence intervals

> From means, SDs and group sizes (or a t statistic), get the mean difference with its interval, Hedges' g and Cohen's d with an exact interval, for two groups or paired data.

Canonical: https://www.licklider.ai/tools/effect-size-calculator/
Section: Tools › Effect sizes and intervals
Author: Licklider · Published 2026-11-10 · Last reviewed 2026-11-10 (UTC)

> **Quick answer.** Enter the means, SDs and group sizes (or a t statistic and the group sizes). The calculator gives **the mean difference in your units with its Welch interval first** — the number a reader of your paper can interpret — then **Hedges' g** (Cohen's d corrected for small samples) and Cohen's d with an **exact 95% interval for the standardised difference δ**. For paired data it gives d_z, the standardised change.

> **Terms used below.** *Mean difference*: group 1 minus group 2, in the outcome's own units. *Pooled SD*: the two groups' SDs combined, weighted by their degrees of freedom. *Cohen's d*: the mean difference divided by the pooled SD. *Hedges' g*: d multiplied by a factor just below 1 that removes d's tendency to overestimate in small samples. *δ (delta)*: the population value that d and g estimate. *Noncentral t*: the distribution of the t statistic when there is a real difference; inverting it gives the interval for δ. *d_z*: for paired data, the mean of the differences divided by their SD. *d_av*: the mean difference divided by the average of the two SDs.

## What the numbers mean

**Lead with the difference in your units.** "ALT rose by 11.0 U/L (95% CI 0.7 to 21.3)" tells a reader how much changed and how precisely you know it. Report that first whenever the units mean something to your readers.

**Then add the standardised effect.** d and g express the difference in SDs, which lets readers compare studies on different scales and plan sample sizes. Report g with fewer than 20 per group: Lakens (2013) notes that d overestimates in small samples and that it is "preferable (and just as easy) to report Hedges's g". The calculator uses the exact correction factor (Hedges 1981); the familiar approximation 1 − 3/(4(n₁ + n₂) − 9) differs from it by at most 1.3% (with 2 per group) and by 0.04% with 6 per group.

**Read the interval for δ, not a size label.** The interval shows which standardised differences are compatible with your data. The calculator prints no "small, medium, large" label: Cohen's benchmarks (0.2, 0.5, 0.8) "are arbitrary and should not be interpreted rigidly" (Lakens 2013). Compare your g with effects reported in your own field instead.

**For paired data, choose the version for the job.** d_z (mean change ÷ SD of the changes) is the one used in paired sample-size calculations and gets the exact interval. It is not comparable with a d from two independent groups. When you need that comparison, use d_av (mean change ÷ average SD), which the calculator shows when you enter both SDs — without an interval, because its uncertainty depends on the correlation between the two measurements.

**Do this:** report the mean difference with its interval, then Hedges' g with the interval for δ, and name the version (g, d, d_z or d_av) every time you give a standardised value.

## Worked example

Six mice per group; ALT (U/L) in treated mice 58.17 (SD 8.13) and in vehicle mice 47.17 (SD 7.94) — the data of the [sample-size response guide](/guides/reviewer-asks-to-justify-sample-size/), rounded to two decimals as a paper would report them.

| Quantity | Value |
| --- | --- |
| Mean difference (treated − vehicle) | 11.0 U/L, 95% CI 0.7 to 21.3 (Welch, 9.99 df) |
| Pooled SD | 8.04 U/L |
| Cohen's d | 1.37 |
| Hedges' g (exact factor 0.9227 for 10 df) | 1.26 |
| 95% CI for δ (noncentral t, 10 df) | 0.07 to 2.62 |
| Point-biserial r (conversion) | 0.60, 95% CI 0.04 to 0.82 |
| Odds ratio (approximate conversion) | 12.0, 95% CI 1.13 to 116 |

The sentence to write:

> Treated − Vehicle: mean difference 11.0 U/L (95% CI 0.7 to 21.3; Welch's t interval). Hedges' g = 1.26 (Cohen's d = 1.37), 95% CI for δ 0.07 to 2.62 (noncentral t); n = 6 and 6.

The interval for δ runs from almost no difference to a very large one: six mice per group pin down that the effect is positive, not how large it is. From the raw data the guide reports, d is 1.368953; the rounded summary statistics give 1.368915, so rounding to two decimals changes d only in the fifth decimal.

**Do this:** copy the calculator's sentence into your Results and keep the R or Python code with your analysis files, so a reviewer can reproduce every number.

## Before you use it

- **Two independent groups or paired?** If each animal was measured under both conditions, choose *Paired* — see [paired vs unpaired](/guides/paired-vs-unpaired-t-test/). The independent-groups d from paired data is wrong, and so is the converse.
- **Unequal SDs.** When your SDs differ by more than ×2 (or ×1.5 with unequal group sizes — this calculator's own rule), report the Welch interval for the mean difference as the main result; the calculator also shows Glass's Δ (difference ÷ control SD) with each group as the control, because Cohen's d pools the two SDs; the δ interval is then labelled "assumes equal SDs".
- **A t from a paper.** Use Student's (pooled) t: d = t·√(1/n₁ + 1/n₂) (Lakens 2013, eq. 2). A Welch t cannot give the pooled d; enter the means and SDs instead.
- **Raw data.** Paste the R or Python code into your own analysis and replace the summary statistics, or use `effectsize::hedges_g(x, y)` in R.
- **Conversions.** The point-biserial r is exact for your group sizes; the odds ratio is an approximation that assumes the outcome, cut into yes/no, would follow a logistic distribution. Both are behind "Convert", for meta-analyses and reviewers who ask for them.

**Do this:** choose the design and the input form that match your paper, then check the flags under the result before you copy anything.

## How it is calculated

| Quantity | Formula |
| --- | --- |
| Welch interval | D ± t₍ν, 1−α/2₎ · √(SD₁²/n₁ + SD₂²/n₂), with ν from the Welch–Satterthwaite formula (Welch 1947) |
| Cohen's d | D / s_p, s_p = √{[(n₁−1)SD₁² + (n₂−1)SD₂²] / (n₁ + n₂ − 2)} (Lakens 2013, eq. 1) |
| Hedges' g | J(m)·d, J(m) = Γ(m/2) / [√(m/2)·Γ((m−1)/2)], m = n₁ + n₂ − 2 (Hedges 1981) |
| Interval for δ | [λ_L, λ_U]·√(1/n₁ + 1/n₂), where the noncentral t CDF at the observed t equals 1 − α/2 at λ_L and α/2 at λ_U (Cumming & Finch 2001) |
| d_z (paired) | mean of the differences / SD of the differences = t/√n (Lakens 2013, eqs. 6–7); interval as above with n − 1 df and √(1/n) |
| d_av (paired) | mean difference / [(SD₁ + SD₂)/2] (Lakens 2013, eq. 10) |
| Point-biserial r | d / √(d² + N(N − 2)/(n₁n₂)), N = n₁ + n₂; equal to t/√(t² + df) |
| Odds ratio | exp(d·π/√3) (logistic approximation; Borenstein et al. 2009, ch. 7; Hasselblad & Hedges 1995) |

The noncentral t CDF is Lenth's algorithm AS 243, the same code as the [sample size calculator](/tools/sample-size-calculator/). The interval is solved with Brent's method on |t| and reflected, and computed only while |t| and the noncentrality stay within 37.62 and the degrees of freedom are at most 100,000; otherwise the calculator shows it as not computed, and the R and Python code set it to NA. With more than 199 degrees of freedom, J(m) comes from a series that matches the exact value to 10⁻¹³.

**Do this:** copy the R or Python code to reproduce a result — it uses these formulas and prints every number the calculator shows.

## Checked against mpmath and R

77 cases (2 to 100,000 per group, paired designs from 2 pairs, t from 0 to beyond the supported range, confidence levels from 50% to 99.9%) and 567 points of the noncentral t distribution, compared with independent high-precision values from mpmath 1.4.1 and with R version 4.3.3 (2024-02-29) (closed forms, `uniroot` on `pt()`, effectsize 0.8.6). A failing check blocks publication.

| Check | Reference | Comparisons | Largest difference | Tolerance |
| --- | --- | --- | --- | --- |
| Point estimates and Welch df | mpmath | 329 | 6.8 × 10⁻¹⁶ | relative 10⁻¹² |
| Point estimates and Welch df | R closed forms | 166 | 2.6 × 10⁻¹³ | relative 10⁻¹² |
| Point estimates and Welch df | R effectsize | 40 | 2.6 × 10⁻¹³ | relative 10⁻¹² |
| Hedges factor J | mpmath | 80 | 1.3 × 10⁻¹⁵ | relative 10⁻¹³ |
| Welch interval for the difference | mpmath | 42 | 2.5 × 10⁻¹¹ | 10⁻¹² × (|D| + q·SE); 10⁻¹⁰ above 10,000 df |
| Welch interval for the difference | R closed forms | 42 | 2.5 × 10⁻¹¹ | 10⁻¹² × (|D| + q·SE); 10⁻¹⁰ above 10,000 df |
| Paired interval for the mean change | mpmath | 15 | 1.1 × 10⁻¹⁴ | 10⁻¹² × (|D| + q·SE) |
| Paired interval for the mean change | R closed forms | 15 | 1.1 × 10⁻¹⁴ | 10⁻¹² × (|D| + q·SE) |
| Noncentral-t interval for δ | mpmath | 71 | 1.7 × 10⁻¹⁰ | relative 10⁻⁹ on the noncentrality (10⁻⁸ above 10,000 df); 10⁻⁴ for effectsize |
| Noncentral-t interval for δ | R uniroot on pt() | 71 | 2.4 × 10⁻¹⁰ | relative 10⁻⁹ on the noncentrality (10⁻⁸ above 10,000 df); 10⁻⁴ for effectsize |
| Noncentral-t interval for δ | R effectsize | 53 | 1.7 × 10⁻⁵ | relative 10⁻⁹ on the noncentrality (10⁻⁸ above 10,000 df); 10⁻⁴ for effectsize |
| Noncentral t CDF (used by the interval) | mpmath | 504 | 4.5 × 10⁻¹³ | absolute 10⁻¹² in probability |
| Noncentral t CDF, 10,000 to 100,000 df | mpmath | 63 | 4.3 × 10⁻¹¹ | absolute 10⁻¹⁰ in probability |
| Point-biserial r | R cor() on matching raw data | 40 | 2.3 × 10⁻¹⁵ | relative 10⁻¹² |

The δ interval is computed only while |t| and both limits of the noncentrality stay within 37.62 (the range of R's `pt()`) and the degrees of freedom are at most 100,000; outside that range the calculator shows the interval as not computed (the R and Python code set it to NA). Hedges' g is compared with R only up to 1,000 degrees of freedom, because R's `exp(lgamma(…))` form of the correction loses accuracy beyond that (the calculator's factor agrees with mpmath at every size). effectsize's intervals are compared at 10⁻⁴ because its root-finder stops near 10⁻⁵; mpmath and R's `uniroot` agree with the calculator to 10⁻⁹. Runs in Node.js (V8) on every change and in headless Chromium; Firefox and Safari were unavailable in the test environment.

Run `pnpm test:tools` to repeat every check; the reference values are regenerated by `scripts/tools/effect_size_reference.py`.

## Questions a reviewer may ask

- **"Why g and not d?"** With small groups d overestimates; g removes that bias with Hedges' exact factor. Both are shown, so you can report either with its name.
- **"How was the interval computed?"** By inverting the noncentral t distribution, the method of Cumming & Finch (2001); it is exact when both groups are normal with equal SDs.
- **"R's `effectsize::hedges_g` gives 0.06 to 2.42 here."** effectsize multiplies the interval limits by Hedges' factor; this calculator reports the interval for δ itself (0.07 to 2.62), which keeps its stated coverage. Say which one you report.
- **"Why does R's `t_to_d()` give 1.50?"** `effectsize::t_to_d(t, df)` uses 2t/√df, which assumes equal group sizes and is an approximation; with the group sizes known, d = t·√(1/n₁ + 1/n₂) = 1.37.
- **"Is your d_z comparable with the literature?"** Only with other d_z values. For a between-subject comparison, report d_av as well.

**Do this:** copy the answer that fits into your response letter and add the numbers from your own result.

## Report it

ARRIVE 2.0 item 10b asks for "the effect size with a confidence interval" where applicable. Copy the sentence from the calculator, or adapt:

> **Independent groups:** [Group 1] − [Group 2]: mean difference [D] [units] (95% CI [low] to [high]; Welch's t interval). Hedges' g = [g] (Cohen's d = [d]), 95% CI for δ [low] to [high] (noncentral t); n = [n₁] and [n₂].

> **Paired:** Mean change [D] [units] (95% CI [low] to [high]; paired t, [n] pairs). Cohen's d_z = [d_z], 95% CI [low] to [high] (noncentral t).

Replace every bracketed item with your own values and name the software version in Methods.

## References

- Borenstein M, Hedges LV, Higgins JPT, Rothstein HR (2009). Converting among effect sizes. In: *Introduction to Meta-Analysis*, ch. 7. Wiley. [doi:10.1002/9780470743386.ch7](https://doi.org/10.1002/9780470743386.ch7)
- Cumming G, Finch S (2001). A primer on the understanding, use, and calculation of confidence intervals that are based on central and noncentral distributions. *Educational and Psychological Measurement* 61:532–574. [doi:10.1177/0013164401614002](https://doi.org/10.1177/0013164401614002)
- Hasselblad V, Hedges LV (1995). Meta-analysis of screening and diagnostic tests. *Psychological Bulletin* 117:167–178. [doi:10.1037/0033-2909.117.1.167](https://doi.org/10.1037/0033-2909.117.1.167)
- Hedges LV (1981). Distribution theory for Glass's estimator of effect size and related estimators. *Journal of Educational Statistics* 6:107–128. [doi:10.3102/10769986006002107](https://doi.org/10.3102/10769986006002107)
- Lakens D (2013). Calculating and reporting effect sizes to facilitate cumulative science: a practical primer for t-tests and ANOVAs. *Frontiers in Psychology* 4:863. [doi:10.3389/fpsyg.2013.00863](https://doi.org/10.3389/fpsyg.2013.00863)
- Lenth RV (1989). Algorithm AS 243: cumulative distribution function of the non-central t distribution. *Applied Statistics* 38:185–189.
- Percie du Sert N, et al. (2020). The ARRIVE guidelines 2.0, item 10 (Results). [arriveguidelines.org](https://arriveguidelines.org/arrive-guidelines/results)
- Welch BL (1947). The generalization of 'Student's' problem when several different population variances are involved. *Biometrika* 34:28–35. [doi:10.1093/biomet/34.1-2.28](https://doi.org/10.1093/biomet/34.1-2.28)

## Cite this tool

- **APA:** Licklider. (2026). *Effect size calculator: mean difference, Cohen's d and Hedges' g with confidence intervals* (Version 1.0) [Web application]. https://www.licklider.ai/tools/effect-size-calculator/
- **Vancouver:** Licklider. Effect size calculator: mean difference, Cohen's d and Hedges' g with confidence intervals [Internet]. Version 1.0. 2026 [cited YYYY Mon DD]. Available from: https://www.licklider.ai/tools/effect-size-calculator/
- **BibTeX:** `@misc{licklider_effectsize_2026, author = {{Licklider}}, title = {Effect size calculator: mean difference, Cohen's d and Hedges' g with confidence intervals}, year = {2026}, note = {Version 1.0}, url = {https://www.licklider.ai/tools/effect-size-calculator/}}`

**Changelog.** 1.0 (10 November 2026): first release. Last verified 10 November 2026.

## Related

- [How to report a t-test](https://www.licklider.ai/guides/how-to-report-a-t-test/)
- [Welch's t-test vs Student's t-test](https://www.licklider.ai/guides/welch-vs-student-t-test/)
- [Paired vs unpaired t-test](https://www.licklider.ai/guides/paired-vs-unpaired-t-test/)
- [Sample size calculator: what your n can detect](https://www.licklider.ai/tools/sample-size-calculator/)
- [Cohen's d vs Hedges' g](https://www.licklider.ai/guides/cohens-d-vs-hedges-g/)

## How this page was made

- Built and published by Licklider. The formulas follow Lakens (2013), Hedges (1981) and Cumming & Finch (2001); the conversions follow Borenstein et al. (2009) and Hasselblad & Hedges (1995). Each is cited under References.
- Every release is checked automatically against independent high-precision values (mpmath) and R (closed forms, uniroot on pt() and the effectsize package); see 'Checked against mpmath and R'. A failing check blocks publication.
- The specification and the finished calculator were each reviewed independently, in separate review passes, before publication.
