How to make a forest plot
- Pick your data type: effect + CI, events/total, or mean/SD/n.
- Paste one row per study from Excel or Google Sheets, with a header row. Add a subgroup column if you need subgroups.
- Check the column mapping. Columns are detected from their headers; change any that are wrong.
- Choose the effect measure and model (random or fixed effect).
- Export a vector PDF or SVG for your manuscript, a 600 dpi PNG, or an R script to reproduce the analysis with metafor.
Data formats
Effect estimate with 95% CI
| Study | HR | Lower | Upper | Subgroup |
|---|---|---|---|---|
| Smith 2019 | 0.82 | 0.61 | 1.10 | Europe |
Binary outcome (events / total)
| Study | Events T | Total T | Events C | Total C |
|---|---|---|---|---|
| Aronson 1948 | 4 | 123 | 11 | 139 |
Continuous outcome (mean / SD / n)
| Study | Mean T | SD T | N T | Mean C | SD C | N C |
|---|---|---|---|---|---|---|
| Adams 2014 | 12.1 | 5.2 | 40 | 15.3 | 5.8 | 38 |
Reading a forest plot
- Each square is a study's estimate; its size reflects the study's weight. The horizontal line is its 95% confidence interval.
- The vertical line marks no effect (1 for ratios, 0 for differences). Intervals crossing it are not statistically significant.
- The diamond is the pooled estimate; its width is the 95% confidence interval.
- I² describes the share of variability due to heterogeneity rather than chance; values above 50–75% suggest substantial heterogeneity.
Frequently asked questions
What data can I use?
Three formats: (1) an effect estimate with its 95% confidence interval for each study, e.g. odds, risk or hazard ratios copied from papers; (2) events and totals in each arm for binary outcomes; (3) means, standard deviations and sample sizes in each arm for continuous outcomes.
How are the pooled estimate and weights calculated?
Studies are pooled with inverse-variance weights. The random-effects model estimates between-study variance (Tau²) with the DerSimonian–Laird method; the fixed (common) effect model assumes no between-study variance. Ratios are pooled on the log scale. The results match the metafor R package.
How do you get the standard error from a confidence interval?
For ratios, SE = (ln(upper) − ln(lower)) / (2 × 1.96); for differences, SE = (upper − lower) / (2 × 1.96). This assumes a symmetric 95% interval on the analysis scale, which is how most papers report them.
How are zero events handled?
For odds and risk ratios, 0.5 is added to every cell of a study with a zero cell. Studies with no events in either group are shown as “Not estimable” and left out of the pooled result, as in RevMan.
Can I show subgroups?
Yes. Add a subgroup column and map it as “Subgroup”. Each subgroup gets its own pooled diamond and heterogeneity statistics, and a test for subgroup differences is reported under the plot.
Is my data uploaded?
No. All calculations and drawing happen in your browser.