ABWex / Tools / Post hoc power calculator

Post hoc power calculator

By Michael Lip, Zovo Tools. Updated 2026-09-01.

Enter the visitors and conversions from a finished test and this returns its observed power, the number reviewers ask for after a null result. It also shows the p value that number secretly restates, and the confidence interval that answers the question people actually mean to ask. Everything runs in your browser and nothing is uploaded.

Your test result

0.2981
observed power at the observed effect
0.1529
two sided p value
1.4293
z statistic, pooled
-0.74 to 4.74 pp
95% CI for the difference
ArmVisitorsConversionsRate
A100010010.00%
B100012012.00%

Observed power 0.2981 is another way of writing p = 0.1529. The two numbers are locked together by the formula on this page, so the power figure adds nothing the p value did not already say. Low observed power here does not show the test was underpowered, it restates that the result was not significant. To judge the design, read the confidence interval against the smallest lift that would matter to you.

The worked example above, 100 of 1,000 against 120 of 1,000, is a 20 percent relative lift that still comes out not significant. Its observed power of 0.2981 was checked against statsmodels, which returns the same value to machine precision for the pooled formula this page uses.

The shortcut, straight from the p value

You do not need the raw counts to compute observed power, which is the first hint that something is off with the request. For a two sided z test the p value alone fixes it.

A two sided p value of 0.0500 at alpha 0.050 always converts to an observed power of 0.5000, whatever the sample size, the metric or the platform. No data beyond the p value went into that number, which is the whole problem with it.

Two sided p valueObserved power at alpha 0.05
0.0010.9083
0.010.7310
0.020.6430
0.030.5832
0.050.5000
0.100.3765
0.200.2493
0.300.1792
0.500.1035
0.800.0574

A test that lands exactly at p equal to alpha always reports an observed power of one half, and every nonsignificant result reports less. Hoenig and Heisey worked through this identity in The American Statistician in 2001, in a paper titled The Abuse of Power, and it is the reason a request to compute observed power after a null result cannot produce new information. Goodman and Berlin made the same argument for clinical trials in the Annals of Internal Medicine in 1994.

What this calculator computes

Post hoc power, also sold as observed, achieved or retrospective power, is the power the test would have had if the true difference between arms were exactly the difference you happened to observe. For a two proportion z test with observed rates p1 and p2 and arm sizes n1 and n2, the calculator evaluates

power = Φ((|p1 − p2| − zα/2·SE₀) / SE₁) + Φ((−|p1 − p2| − zα/2·SE₀) / SE₁)

where SE₀ pools the two arms under the null hypothesis and SE₁ keeps them separate under the alternative.

SE₀ = √(p̄(1 − p̄)(1/n1 + 1/n2))

SE₁ = √(p1(1 − p1)/n1 + p2(1 − p2)/n2)

The second term in the power formula is the chance of rejecting on the wrong side. It only matters at tiny effects, but keeping it makes the formula exact under the normal approximation rather than nearly exact.

The same arithmetic read in the other direction is what the p value converter above does. Observed power is a monotone function of the p value and of nothing else, which is why the two widgets on this page always agree.

How noisy observed power is, measured

The identity says observed power adds nothing beyond the p value. A separate question is how far it strays from the true power of the design, and that we measured rather than argued. We fixed a real design, a 10 percent baseline against a 12 percent treatment at alpha 0.05, set the arm size to hit each target power exactly, then simulated 10,000 complete replicate experiments per cell and computed observed power from each replicate's own data.

0.21 to 0.99
middle 90% of observed power when true power is 0.80
29%
replicates landing within 0.10 of the true 0.80
0.5000
observed power at p = 0.05, always
10,000
replicates per cell, seed 20260901
Observed power across 10,000 replicates per cell. Two proportion test, 10% vs 12%, alpha 0.05. The share significant column recovering the true power is the check that the simulation is honest.
n per armTrue power5th pctMedian95th pctWithin 0.10 of truthShare significant
6090.200.0510.2000.78933.9%19.7%
1,8810.500.0690.5000.95319.5%49.9%
3,8410.800.2050.7990.99428.7%79.3%
6,3580.950.5010.9500.99972.6%95.0%

Read the 0.80 row. The design genuinely had an 80 percent chance of detecting the true 2 point lift, yet a single run of it reports an observed power anywhere from 0.21 to 0.99 nine times out of ten, and lands within 0.10 of the truth under a third of the time. The median tracks the truth, but you only ever get one draw, and the draw is wild. A number this noisy cannot audit your design after the fact, which is the practical half of the case against it, the identity above being the theoretical half.

At true power 0.50 the spread is worst, the middle 90 percent of reported values covering nearly the whole unit interval. Observed power is least informative exactly where a test is most likely to have produced an ambiguous result, which is when people reach for it.

What to do instead of quoting observed power

The question behind a request for post hoc power is usually, did this test have a fair chance of finding an effect worth acting on. Two tools answer that and neither is observed power.

First, the confidence interval you already have. The worked example at the top spans a 0.74 point drop to a 4.74 point gain. If lifts below 2 points would not have been worth shipping anyway, the interval failing to exclude them is the finding, stated in effect units rather than laundered through a power number. A wide interval that still contains every effect you care about says the test was uninformative. A tight interval hugging zero says the effect is small, which is an answer, not a failure.

Second, design stage power at a minimally interesting effect you choose before seeing data. That is a legitimate calculation, and it is the one our power analysis calculator performs, with the required sample size falling out of it. The MDE calculator inverts it, telling you the smallest lift a sample you already have could reliably detect. For the same worked design as our simulation, 10 percent against 12 percent at alpha 0.05, the sample needed for 80 percent power is 3,841 per arm, which both that page and the table above agree on.

If the vocabulary here is new, the statistical power visualizer draws the two error regions and lets you drag the pieces, and the confidence interval calculator handles the interval arithmetic for rates and means beyond the two arm case.

How we know these numbers are right

Every figure this page displays is computed in your browser from what you type, by MIT licensed code at github.com/theluckystrike/abwex.com. Nothing is typed into the copy by hand. The static numbers above come from the committed dataset, and the calculator recomputes live values with the same formula.

The formula was cross checked against statsmodels power_proportions_2indep on three reference cases before this page was written, agreeing to machine precision, differences on the order of 1e-16. Type any row into the calculator and compare.

Reference cases, alpha 0.05, equal arms, both implementations agree to 4 decimals.
Rate ARate Bn per armObserved power
10%12%1,0000.2981
10%12%2000.0978
10%10.5%5,0000.1307

The simulation study is seeded and reproducible. The generator script and its output are committed at datasets/build_posthoc_power_simulation.py and datasets/posthoc_power_simulation.json. The built in check is the last table column, the share of replicates reaching significance recovers each cell's true power to within half a point.

What has to be true for these numbers to hold

Common questions

A reviewer asked for post hoc power. What do I send?
Send the confidence interval for the effect, plus a design stage power calculation at the smallest effect worth caring about in your setting, stated before the data. That pair answers what the reviewer wants to know, whether the study could have found something worth finding. If the venue insists on the observed power number itself, this page computes it, and the Hoenig and Heisey citation beside it explains what it does and does not mean.
My test was significant. Is high observed power good news?
It is the same news restated. Any significant result reports observed power above one half, because both are functions of the same z statistic. High observed power after significance neither strengthens the finding nor protects it from being a false positive, and a significant result from a genuinely underpowered design overstates the true effect on average, which is the winner's curse.
Is observed power ever above one half for a null result?
Not at the conventional two sided alpha of 0.05 with the observed effect plugged in. Power one half sits exactly at p equal to alpha, and every larger p maps below it. If a report shows a null result with observed power 0.80, either the power was computed at some other effect size than the observed one, which is a design calculation wearing the wrong name, or something is wrong.
Why does this page still offer the calculator, given all this?
Because the number gets requested whether or not it should, and computing it correctly beside its interpretation beats computing it wrongly somewhere else. The pooled formula here matches statsmodels to machine precision, so at minimum the number you are asked for arrives right, with its limits attached.
Does this work for revenue or other non binary metrics?
No. This page is for conversion style yes or no outcomes compared between two arms. Continuous metrics need the t test machinery, where the same critique of observed power applies through the noncentral t distribution rather than the normal.

Read this before you act on the output

Related, power analysis calculator for the version of this question that has an answer, and the false discovery rate calculator for what happens to significant results when you test many metrics at once.