Meta-Analysis Calculator
A meta-analysis combines several studies of the same question into one pooled estimate, weighting each study by how precise it is. Paste one row per study, either an effect and its standard error or the raw 2x2 event counts, and this tool returns the pooled effect under both the fixed-effect and the random-effects model, a forest plot, and the heterogeneity numbers that tell you which of the two to report. Everything runs in your browser.
study label, effect, standard error
-
Do these studies agree?
These five numbers all describe the same thing from different angles: how much the studies disagree beyond what sampling error alone would explain. Each one is spelled out below for what it means for your pool.
Every study, and what it contributed
Weight is what a meta-analysis is really about: a precise study pulls the pool towards itself, an imprecise one barely moves it.
How this is computed
✓ No data leaves your browser
✓ Verified against R's metafor::rma() and escalc() to 8 decimals
✓ Free, no sign-up
The two models, side by side
Both models pool the same studies. They differ in one assumption, and that assumption decides how wide the pooled interval comes out.
| Fixed effect | Random effects (DerSimonian-Laird) | |
|---|---|---|
| Assumes | One true effect behind every study | Each study has its own true effect, drawn from a distribution |
| Weight | w = 1 / SE² | w* = 1 / (SE² + τ²) |
| Disagreement is | Sampling error, nothing more | Real variation, measured by τ² |
| Small studies | Get very little say | Get relatively more say |
| Interval width | Narrower, and too narrow if the studies disagree | Wider whenever τ² is above zero |
| In R | rma(yi, sei = sei, method = "FE") | rma(yi, sei = sei, method = "DL") |
When the studies genuinely agree, DerSimonian-Laird estimates τ² = 0 and the random-effects model collapses back onto the fixed-effect one, giving the identical answer. That is why the random-effects model is the safer default: it costs nothing when there is no heterogeneity and it protects you when there is.
Reading a forest plot
The plot above is the standard way to show a meta-analysis, and every element on it carries information.
| Element | What it tells you |
|---|---|
| One row per study | The study's own estimate and interval, before any pooling |
| Square | The point estimate. Its size is the study's weight, so the big squares are the studies driving the pool |
| Horizontal whisker | The study's confidence interval. An arrowhead means the interval runs past the edge of the plot |
| Dashed vertical line | The line of no effect: 0 for a plain effect size, 1 for an odds ratio |
| Diamond | A pooled estimate. Its width is the pooled confidence interval, and there is one diamond per model |
If the two diamonds sit at nearly the same place and have nearly the same width, the choice of model does not matter for your conclusion. When the random-effects diamond is visibly wider, the extra width is the price of the studies disagreeing, and it is a price worth paying.
From 2x2 counts to a log odds ratio
In the 2x2 mode each row of counts is converted to an effect size before anything is pooled. Pooling happens on the log scale, where the odds ratio is symmetric and roughly normal, and the results are shown back as odds ratios.
| Step | Formula |
|---|---|
| Build the table | a = treated events, b = treated non-events, c = control events, d = control non-events |
| Effect | yi = log((a × d) / (b × c)) |
| Standard error | SE = sqrt(1/a + 1/b + 1/c + 1/d) |
| Zero cells | If any cell is 0, add 0.5 to all four cells of that study |
| Back to the odds ratio | OR = exp(yi) |
The 0.5 correction exists because a zero cell makes the odds ratio either 0 or infinite and its standard error undefined. Adding half an event to every cell of that one study keeps it in the analysis at the cost of pulling its estimate slightly towards no effect. This is exactly what metafor's escalc(measure = "OR", ...) does by default, and the Try button for a zero-event arm shows the correction being applied.
Frequently asked questions
What is the difference between a fixed-effect and a random-effects meta-analysis?
The fixed-effect model assumes every study is estimating one single true effect, so any disagreement between them is sampling error. The random-effects model assumes the true effect varies from study to study, estimates that variation as τ², and widens the pooled interval to match. When the studies disagree, the two models give different intervals and the random-effects one is the honest report. When they agree, τ² comes out at zero and the two models return the same answer.
What does I² mean, and what should I do about it?
I² is the percentage of the variation across studies that is real disagreement rather than sampling error. Roughly: under 25% is low, around 50% is moderate, above 75% is considerable. It is not a measure of how big or important the effect is, only of how much the studies differ. Once I² passes about 50 to 75%, stop reporting the fixed-effect pool as your headline: its interval is too narrow because it treats genuine disagreement as noise. Report the random-effects estimate, and if you can, look for the reason the studies differ.
How many studies do I need for a meta-analysis?
Two is the arithmetic minimum and this tool will pool two. But τ² is estimated very poorly from a handful of studies, so with fewer than about five the random-effects interval is itself unreliable, and I² will swing wildly on one study being added or removed. With very few studies, report both models, say plainly how many studies you had, and treat the heterogeneity numbers as a hint rather than a verdict.
Why is my tau² exactly zero?
DerSimonian-Laird computes τ² as max(0, (Q - df) / C). When Q comes out at or below df, meaning the studies scatter no more than sampling error alone predicts, the formula would return a negative variance, which is impossible, so it is clamped to zero. A τ² of zero is a real finding and not an error: it says there is no detectable between-study variation, and it is why the random-effects pool then matches the fixed-effect pool exactly.
Can I meta-analyse different effect sizes together?
Not directly. Every row has to be on the same scale before it is pooled, because the weights are inverse variances on that scale. If one study reports Cohen's d and another an odds ratio, convert them to a common metric first, then paste the converted values here. The effect size converter handles the usual translations between d, r, odds ratios and eta-squared.
Does this meta-analysis calculator match R?
Yes. Every number on this page, both pooled estimates and their confidence intervals, Q, its p-value, I², τ², and each per-study weight, is checked against R's metafor package, rma(method = "FE") and rma(method = "DL"), and agrees to at least eight decimal places. The checks cover a zero-event 2x2 case and a high-heterogeneity case where I² is near 90%.