An odds ratio of 3 converts to a <strong>d of 0.61</strong>; one of 1.5, to a d of 0.22. The arithmetic is one line: <em>d</em> = ln(OR) × √3/π. What almost nobody writes down is the price of that line, which is a fairly strong assumption: that behind your yes/no there is a continuous variable with a logistic distribution.
d = ln(OR) × √3 / π ≈ ln(OR) × 0.5513
Back: OR = exp(d × π/√3) ≈ exp(d × 1.8138)
Variance: Var(d) = Var[ln(OR)] × 3/π² ≈ Var[ln(OR)] × 0.3040
From the 2×2: Var[ln(OR)] = 1/a + 1/b + 1/c + 1/d
OR 1.00 1.50 2.00 3.00 5.00 20.0
d 0.00 0.22 0.38 0.61 0.89 1.65
A logistic regression models the probability directly: logit P(Y=1) = Xβ. What happens is that it admits an equivalent reading, the threshold model: a latent continuum cut by a threshold, with an error following a standard logistic distribution. That is where the factor comes from, and that is why the assumption is interpretive rather than a restriction the fit imposes. That error has variance π²/3, that is, standard deviation π/√3 = 1.8138. The coefficient the model returns, ln(OR), is measured in those units. Dividing it by 1.8138 — which is exactly multiplying by √3/π — puts it in standard-deviation units, and that is what we call Cohen’s d.
So the factor is not an empirical adjustment or a rule of thumb: it is the standard deviation of a standard logistic. If the latent continuum were normal instead of logistic, the divisor would be different. Cox’s index uses 1.65 and, for that same OR of 3, returns 0.67 against Chinn’s 0.61. A 10% difference, which shows in a twenty-study meta-analysis.
The derivation is from Hasselblad and Hedges (1995); Chinn (2000) put it into circulation in medicine and is the one almost always cited. Borenstein et al. (2009) give it as their equation 7.1. Any of the three will do for your methods section. What will not do is converting without citing any of them and letting the reader guess which transformation you applied.
First, when the outcome is not the dichotomization of anything. An OR for mortality, relapse or dropout converts just as well arithmetically, but the resulting d is expressed in standard deviations of a variable that does not exist. If your meta-analysis mixes continuous scales with outcomes of this kind, the formula does not solve the problem: separating the analyses, or declaring the outcome type as a moderator, does.
Second, when the OR is adjusted. The d you get from an OR conditional on six covariates is not comparable with the one you get from a Student’s t on those same groups, and the gap is not only confounding: the odds ratio is not collapsible, so the adjusted one moves further from 1 than the marginal one even when the covariates confound nothing. That bias is inherited whole.
And third, with sparse cells and extreme ORs. Var[ln(OR)] = 1/a + 1/b + 1/c + 1/d: a cell with 3 cases contributes 0.33 on its own and swamps the rest. Besides, the tails are where the logistic and the normal diverge most, and where your choice of divisor weighs most: with OR = 20, Chinn gives 1.65 and Cox 1.82.
Report both: the OR with its interval, which is what the model estimated, and the converted d with its interval, which is what pooling needs. One sentence in methods is enough: "odds ratios were transformed to d using d = ln(OR)·√3/π (Chinn, 2000), which assumes a latent logistic variable under the dichotomous outcome". With that, the reviewer no longer has to ask.
For the meta-analysis you need the variance, not just the point. Var(d) = Var[ln(OR)] × 3/π², that is, multiply by 0.3040. And Var[ln(OR)] comes from the 2×2 table with Woolf’s formula, 1/a + 1/b + 1/c + 1/d, or from the published interval itself: [ln(upper) − ln(lower)] / 3.92, always in logarithms.
A detail that saves arguments: since d is a constant times ln(OR), converting before or after pooling gives the same result. The inverse-variance weights rescale by the same factor and the result does not move. The conversion changes the units, not the heterogeneity or the ordering of the studies. What does change the result is the divisor, which is why Cox goes in as a sensitivity analysis.
All thirteen effect size conversions, grouped by what each one is for, are in the index.
If you use it in your thesis or in a paper, cite it so that readers of your Methods section know how the calculation was done.
Ciudad-Fernández, V. (2026). Odds ratio to Cohen's d converter [Web application]. Ciudad Science. Retrieved October 14, 2026, from https://analisisdedatospsicologia.com/en/convert/odds-ratio-to-cohens-d
For your Methods section: Odds ratios were converted into Cohen's d with the Chinn (2000) method, using the Ciudad Science odds ratio to Cohen's d converter (Ciudad-Fernández, 2026).
@misc{ciudadfernandez2026convoddsratioaddecohen,
author = {Ciudad-Fern{\'a}ndez, V{\'i}ctor},
title = {{Odds ratio to Cohen's d converter}},
year = {2026},
publisher = {Ciudad Science},
howpublished = {Web application},
url = {https://analisisdedatospsicologia.com/en/convert/odds-ratio-to-cohens-d},
urldate = {2026-10-14},
note = {Accessed 2026-10-14},
}Chinn assumes the latent continuum is logistic; Cox approximates it as normal. With OR = 3, Chinn gives 0.61 and Cox 0.67: a 10% difference. Sánchez-Meca et al. (2003) found Cox’s index behaved better in simulation. Pick one, say so in methods, and run the other as a sensitivity analysis.
Yes, and you should: apply the same formula to each limit. An OR of 2 with a 95% CI from 1.20 to 3.30 becomes d = 0.38 with a CI from 0.10 to 0.66. The logarithm is monotone, so the order is preserved and no extra adjustment is needed.
It is a d. Hedges’ correction (J) is defined for the standardized mean difference with its degrees of freedom, and there is no such thing behind this. In practice the mismatch is small: with 50 per group, J is 0.992, a 0.8% difference. Say so in methods and move on.
OR = exp(d × π/√3): a d of 0.5 comes out as an OR of 2.48. Same assumption, same fine print. And note what it does not do: it does not rebuild the original 2×2 table, because that information was lost when dichotomizing. If you have the table, use the table.