Step 1 — Enter your p-values

Instructions:

  • Paste one p-value per line. Optionally prefix with a label and a comma (e.g. Outcome A, 0.017).
  • Values must be in [0, 1]. Scientific notation (1.2e-4) is fine.
  • Or click Load recent results to pull p-values from tests you ran earlier in this session.

Which correction should I use?

Bonferroni

padj = min(1, p × k)

Controls: FWER (family-wise error rate).

Use when: you want a simple, universally understood correction and you can afford to lose power. Safe default for a small number of pre-planned confirmatory tests.

Downside: very conservative when k is large or tests are correlated.

Holm-Bonferroni

padj(i) = maxji [(kj + 1) · p(j)]

Controls: FWER, uniformly more powerful than Bonferroni.

Use when: you want strict FWER control but don't want Bonferroni's power loss. No reason not to prefer it over plain Bonferroni.

Interpretation: sequentially rejective — the smallest p is tested at α/k, the next at α/(k−1), etc.

Benjamini-Hochberg

padj(i) = minji [p(j) · k / j]

Controls: FDR (false discovery rate — expected proportion of rejected nulls that are false).

Use when: you have many tests (screening, omics, exploratory epi) and can tolerate a small rate of false positives among your discoveries.

Downside: a discovery can be “approximately true” — not the right tool when one false positive is catastrophic.

Biostats rule of thumb: Confirmatory trials with pre-registered endpoints → Holm. Screening across many candidate biomarkers or SNPs → BH. Regulatory / primary-endpoint analysis that must not leak a single false positive → Bonferroni (or a formal gatekeeping procedure).

Worked example — five endpoints in a clinical trial

A small RCT tests five secondary endpoints against placebo. The raw p-values come back as p1 = 0.003, p2 = 0.013, p3 = 0.018, p4 = 0.041, p5 = 0.120. At α = 0.05, how many “survive” a correction?

Click Load example above to see the full table and the inflation curve for this scenario.