Null Hypothesis in A/B Testing

The null hypothesis is the default claim that there is no real difference between the groups you are comparing.

In an A/B test it says the variant converts at the same rate as the control, so any gap you see is random noise.

You either reject it, because the data would be very unlikely if it were true, or you fail to reject it. You never prove it.

This page covers what the null and alternative hypotheses mean and how they work inside an A/B test, using real results from our database.

If you are looking for how to write a test idea ("if we change X, Y will improve because Z"), that is a different thing: see how to write an A/B test hypothesis.

Null hypothesis vs alternative hypothesis

Every significance test sets up two competing statements about the population, not about your sample.

Null hypothesis (H0)Alternative hypothesis (H1 or Ha)
Plain meaningNothing is going onSomething is going on
A/B test form (two-sided)p(variant) = p(control)p(variant) ≠ p(control)
A/B test form (one-sided)p(variant) ≤ p(control)p(variant) > p(control)
What the test does with itAssumes it is true and asks how surprising the data isAccepted only indirectly, when H0 is rejected

The idea of a null hypothesis comes from Ronald Fisher.

In The Design of Experiments (1935) Fisher wrote that the null hypothesis "is never proved or established, but is possibly disproved, in the course of experimentation." Fisher's tests had no formal alternative.

The alternative hypothesis came from Jerzy Neyman and Egon Pearson, whose 1933 paper framed testing as a choice between two hypotheses with two kinds of error.

That framework is what gives A/B testing its significance level (alpha) and its statistical power.

Modern A/B testing tools use a blend of both traditions.

Two practical points follow. First, the alternative must be chosen before the test starts: deciding to go one-sided after you see the variant ahead is a form of cheating.

Our page on one-tailed vs two-tailed tests covers when each is defensible.

Second, the alternative only says "different"; it says nothing about how big the difference is or whether it is worth shipping.

How the null hypothesis works in an A/B test

An A/B test runs the same logic every time:

  1. State H0: the variant and the control have the same true conversion rate.
  2. Pick alpha before launch, usually 0.05 (5%). This is the false-positive rate you accept if H0 is true.
  3. Run the test to the sample size you planned, then compute a test statistic and a p-value.
  4. If p < alpha, reject H0 and call the result statistically significant. Otherwise, fail to reject it.

The p-value is the probability of seeing a gap at least as large as yours if H0 were true.

Optimizely's documentation describes significance in exactly these terms: how unusual your results would be if there were no difference between variation and baseline.

It is not the probability that H0 is true.

The American Statistical Association's 2016 statement on p-values says this directly: p-values do not measure the probability that the hypothesis is true, or the probability that the data came from chance alone.

Worked example: a two-proportion z-test

Convertibles tested a sticky mobile CTA on a whisky subscription homepage.

They report 25,935 visitors, 327 orders, and conversion moving from 1.135% to 1.366% (+20.4%), with a 95.1% probability to beat control in their Bayesian tool.

Here is how the same data looks through a frequentist null-hypothesis test.

This is our calculation, assuming an even split of about 12,968 visitors per arm (roughly 147 and 177 orders):

StepFormulaValue
Observed differencep2 − p10.01366 − 0.01135 = 0.00231
Pooled rate (under H0)p = (x1 + x2) / (n1 + n2)about 0.0125
Standard errorSE = sqrt(p(1 − p)(1/n1 + 1/n2))about 0.00138
Test statisticz = (p2 − p1) / SEabout 1.67
Two-sided p-value2 × (1 − Φ(|z|))about 0.094
One-sided p-value1 − Φ(z)about 0.047

The pooled rate is used because the test assumes H0 is true: if both arms share one conversion rate, the best estimate of it is the combined rate.

At a two-sided alpha of 0.05, you fail to reject H0: 0.094 is above 0.05. With a one-sided test planned in advance, you would reject it.

The same data, read with a different alternative, gives a different verdict.

That is why the alternative has to be fixed before launch.

You can run your own numbers through our A/B test significance calculator.

When the z-test is the wrong choice

  • Small counts. With only a handful of conversions per arm, the normal approximation breaks down. Use Fisher's exact test instead.
  • Revenue per visitor or AOV. These are continuous and heavily skewed, not yes/no outcomes. A t-test (Welch's) or a bootstrap fits better.
  • Checking results daily. A fixed-horizon test assumes you look once. If you stop as soon as p dips under 0.05, the real false-positive rate climbs well above 5%. Use a sequential test if you need to monitor.
  • Many variants or metrics. Each extra comparison is another chance for a false rejection. Correct for multiple comparisons.

What "fail to reject the null" means in practice

Failing to reject H0 does not show the change did nothing.

It shows the test could not tell the difference from noise at the level of evidence you set. Our database has many results like this.

Blend Commerce added a block of value propositions below the add-to-cart button for a travel gear brand.

Across 99,754 visitors, conversion was flat at 3.30% in both arms, with about +2% in revenue per visitor that was not significant.

A large sample and an identical rate is about as close as A/B testing gets to "no meaningful effect", but it is still not proof of zero.

GrowthRock moved a "Free US Shipping & Returns" line under the add-to-cart button for a supplement brand.

After two weeks and more than 5,000 conversions, there was no difference in conversion rate, and other placements, including a promo bar, also showed none.

The opposite case is a big lift that still does not clear the bar.

Clean Commit moved a "Made in the USA" flag above the product title and saw +53.0% conversion rate on only 1,408 visitors.

The agency labeled it a positive signal, not a win.

On samples that small, a large swing is exactly what random noise produces, so H0 stays standing.

Blend Commerce's mobile sticky add-to-cart test for Pertronix showed +10% conversion and was extended, but still did not reach significance.

A 10% lift can be real and still go undetected when the test lacks power for an effect that size.

And GrowthRock's category link bar on an apparel mobile homepage showed +5% orders at 93% significance on a one-tailed basis, which did not reach significance under the tool's two-tailed test.

Like the worked example above, the verdict depended on which alternative was being tested.

Errors you can make about H0

H0 is actually trueH0 is actually false
You reject H0Type I error (false positive), rate = alphaCorrect: real effect found
You fail to reject H0Correct: no effect, none claimedType II error (false negative), rate = beta; power = 1 − beta

Most "flat" tests in a typical program are a mix of true nulls and Type II errors from underpowered tests.

You cannot tell which from the p-value alone.

Planning a minimum detectable effect and sample size before launch is what keeps beta low.

More on both errors in Type I and Type II errors.

Common mistakes

  • Saying "we accepted the null". Say "we failed to reject it". If you want to show two versions are equivalent, you need an equivalence test with a pre-set margin, not a non-significant p-value.
  • Reading 1 − p as the chance the variant is better. A p-value of 0.03 does not mean a 97% chance of a real lift. Bayesian tools report that kind of probability directly, under their own assumptions, so treat that number as a different kind of answer.
  • Treating rejection as proof the effect is large. Significant results from small tests tend to overstate the lift. Check the confidence interval, not just the verdict.
  • Never checking your setup. In an A/A test H0 is true by design, which makes it a good check that your setup rejects H0 only about as often as alpha says it should.

Browse more real outcomes, including flat and losing tests, in the full test database, or start from our A/B testing guide.

Questions

What is the null hypothesis?

The null hypothesis is the default claim that there is no real difference or effect.

In an A/B test it states that the variant and the control have the same true conversion rate, so any observed gap is due to chance.

What is the alternative hypothesis?

The alternative hypothesis is the claim that there is a real difference.

In a two-sided A/B test it says the variant's rate differs from the control's; in a one-sided test it says the variant is better.

It must be chosen before the test starts.

Can you accept the null hypothesis?

No. A standard significance test can only reject the null or fail to reject it.

A non-significant result means the data could not distinguish the effect from noise, not that the effect is zero.

Showing equivalence needs an equivalence test with a pre-set margin.

What is the null hypothesis in A/B testing?

It is the assumption that the change you are testing has no effect on the metric, for example that conversion rate is the same in both arms.

The test computes a p-value under that assumption and rejects it if the p-value falls below the significance level you set, usually 0.05.