---
description: "How Dalton calculates A/B test results: chance to beat, the 90% range, capped revenue, when a winner is called, sample size and early stopping."
---

# How Results Are Calculated

::: info The short answer
Every result shows a **chance to beat** the original and a **90% range** for the lift. A winner is only named when the planned window ends, once conversion rate or revenue per visitor clears your bar (90% chance to beat by default). Only clear losers can be stopped early.
:::

## What is counted

- **A visit:** one browser over 24 hours. Bots are left out.
- **Everyone assigned counts,** even if the variant failed to load for them, so a flaky variant can't look better than it is.
- **Conversions count from the moment the visitor saw the test.**

## How each result is calculated

| | Conversion rate | Revenue per visitor |
| --- | --- | --- |
| Method | Bayesian, flat prior | Difference in means (normal approximation), over every visitor |
| Shows | Chance to beat and a 90% range | Chance to beat and a 90% range |
| Notes | | Orders above the 99th percentile of your last 90 days are capped, so one huge order can't decide a test. Counts once each side has 50 orders. |

## Calling a winner

<TestOverTime>

<div class="perf-diagram">
<svg viewBox="0 0 700 232" role="img" aria-labelledby="stats-r-title" xmlns="http://www.w3.org/2000/svg">
  <title id="stats-r-title">Four example variants, each with its lift and 90% range against the original. A range entirely above zero is a win; a range crossing zero means no difference yet; a range below zero is a loss.</title>
  <line x1="392.0" y1="22" x2="392.0" y2="204" class="vline"/>
  <text x="10" y="38" class="lbl">Wins</text>
  <text x="10" y="54" class="sub">whole range above 0 · chance to beat ~99%</text>
  <rect x="440.0" y="34" width="153.6" height="12" rx="6" class="var"/>
  <circle cx="516.8" cy="40" r="5" class="dal"/>
  <text x="10" y="84" class="lbl">Promising</text>
  <text x="10" y="100" class="sub">mostly above 0 · ~88%</text>
  <rect x="372.8" y="80" width="192.0" height="12" rx="6" class="var"/>
  <circle cx="468.8" cy="86" r="5" class="dal"/>
  <text x="10" y="130" class="lbl">No difference</text>
  <text x="10" y="146" class="sub">range crosses 0 · ~55%</text>
  <rect x="305.6" y="126" width="192.0" height="12" rx="6" class="var"/>
  <circle cx="401.6" cy="132" r="5" class="dal"/>
  <text x="10" y="176" class="lbl">Loses</text>
  <text x="10" y="192" class="sub">whole range below 0 · ~2%</text>
  <rect x="219.2" y="172" width="144.0" height="12" rx="6" class="var"/>
  <circle cx="296.0" cy="178" r="5" class="dal"/>
  <text x="200.0" y="222" text-anchor="middle" class="sub">-20%</text>
  <text x="296.0" y="222" text-anchor="middle" class="sub">-10%</text>
  <text x="392.0" y="222" text-anchor="middle" class="sub">0%</text>
  <text x="488.0" y="222" text-anchor="middle" class="sub">+10%</text>
  <text x="584.0" y="222" text-anchor="middle" class="sub">+20%</text>
  <text x="680.0" y="222" text-anchor="middle" class="sub">+30%</text>
</svg>
</div>

*Illustration: each bar is a variant's 90% range for the lift over the original, the dot its best estimate.*

</TestOverTime>

When the window ends, a variant wins if it clears your bar on **conversion rate or revenue per visitor**, unless it's clearly worse on revenue per visitor. If several win, the one with the highest revenue per visitor is named. Between 80% and the bar it reads **Promising**.

### Choosing your bar

The bar is **90% by default**. Change it under **Settings → Experiments → When to call a winner** (Settings is in the account menu, bottom left).

| Bar (chance to beat) | Same as confidence in Convert or GA4 | If the change does nothing, still called a winner about |
| --- | --- | --- |
| 80% | 60% | 1 in 5 tests |
| 90% (default) | 80% | 1 in 10 tests |
| 95% | 90% | 1 in 20 tests |

Pick a lower bar for quick, easy-to-undo changes on quiet pages, and 95% for big or costly ones. The **Significant** badge on the lift cards always uses 95%.

## Sample size

Each variant needs about **100 conversions**. From the original's conversion rate, Dalton picks the shortest window of **2, 4 or 6 weeks** that gets there. Paused days don't count.

## Stopping early

Winners are never called early. Clear losers can be: after at least 7 days, once every variant's range is below the original's, using a method that stays valid however often it's checked (an always-valid confidence sequence).

## What Dalton doesn't do

- **Adjust for several variants.** With four or more, read a narrow win with extra care, or raise the bar.
- **Variance reduction** such as CUPED.

## Further reading

- Kohavi, Tang and Xu, [*Trustworthy Online Controlled Experiments*](https://experimentguide.com/): the standard reference on A/B testing.
- Evan Miller, [How Not To Run an A/B Test](https://www.evanmiller.org/how-not-to-run-an-ab-test.html): why stopping on a good day misleads.
- Waudby-Smith et al., [Asymptotic confidence sequences](https://arxiv.org/abs/2103.06476): the method behind early loser stopping.
