> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abtestly.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Methodology

> How ABTestly computes the numbers you make decisions from. Every formula on these pages is the one that runs in production, quoted from the function that runs it.

These pages are the statistical reference for the product. They exist
because a results screen is only worth as much as the method behind it,
and a method you cannot inspect is a method you are taking on trust.

Everything here is grounded in shipped code. Where a page states a
formula, that formula is the one in `worker/src/lib/stats.ts` or the
dashboard module named alongside it. Where a page states a constant, the
constant is quoted from the file that defines it. Where a page gives a
number, it was produced by running the function, not by rederiving it by
hand.

The same core is what the public
[A/B test calculator](https://abtestly.com/ab-test-calculator) runs, so
a sample size you compute there is the sample size the product will
project against.

## The pages

<CardGroup cols={2}>
  <Card title="Minimum detectable effect" icon="ruler" href="/methodology/minimum-detectable-effect">
    The sample-size formula, worked to the visitor, and what our own function returns across common baselines.
  </Card>

  <Card title="Test duration" icon="calendar" href="/methodology/test-duration">
    Required sample divided by accrual, the four statuses the projection can return, and what it does not know.
  </Card>

  <Card title="The peeking problem" icon="eye" href="/methodology/peeking">
    A measured false-positive rate for four reading schedules, and the anytime-valid engine that removes the penalty.
  </Card>

  <Card title="Confidence intervals" icon="chart-simple" href="/methodology/confidence-intervals">
    Four intervals, four formulas, and why every one of them is printed next to its denominator.
  </Card>

  <Card title="Sample ratio mismatch" icon="scale-unbalanced" href="/methodology/sample-ratio-mismatch">
    The chi-square check on the assumption everything else depends on, and which of its outputs reach a screen.
  </Card>
</CardGroup>

## A reading order

If you are planning a test, start with
[minimum detectable effect](/methodology/minimum-detectable-effect),
then [test duration](/methodology/test-duration). Those two turn a
business question into a date you can commit to.

If a test is running, read
[the peeking problem](/methodology/peeking) before you act on an early
green, and [sample ratio mismatch](/methodology/sample-ratio-mismatch)
if a warning has appeared.

If a test has finished and someone is asking how confident you are,
[confidence intervals](/methodology/confidence-intervals) is the page
that answers it, and
[reading a result](/results/reading-a-result) is where those numbers sit
on the screen.

## What we will not tell you

Two things are worth stating up front, because these pages keep coming
back to them.

We will not tell you a number is trustworthy when the method says
otherwise. Below the sample floor there is no confidence percentage.
Under a flagged sample ratio mismatch there is a banner instead of a
verdict. On write-sampled data the SRM check publishes counts and no
pass or fail.

We will not describe a screen that does not exist. Several values on
these pages are computed and returned on the API without any dashboard
surface, and each page says so where it applies rather than implying a
panel you would go looking for.

## Underneath the statistics

## Sources

The methodology in this section is standard published statistics applied
to one product. These are the works the individual pages cite, collected
in one place so the reading order is obvious.

* [Kohavi, R., Tang, D. and Xu, Y. (2020), *Trustworthy Online Controlled Experiments: A Practical Guide to A/B Testing*, Cambridge University Press](https://www.cambridge.org/core/books/trustworthy-online-controlled-experiments/D97B26382EB0EB2DC2019A7A7B518F59). The field's standard text. If you read one thing here,
  read this.
* [Armitage, P., McPherson, C. K. and Rowe, B. C. (1969), *Repeated Significance Tests on Accumulating Data*, Journal of the Royal Statistical Society Series A, 132(2)](https://doi.org/10.2307/2343787). Why checking a running test repeatedly breaks the
  threshold you chose.
* [Johari, R., Pekelis, L. and Walsh, D. J., *Always Valid Inference: Bringing Sequential Analysis to A/B Testing*](https://arxiv.org/abs/1512.04922). How a sequential engine removes that penalty.
* [Fabijan, A., Gupchup, J., Gupta, S., Omhover, J., Qin, W., Vermeer, L. and Dmitriev, P. (2019), *Diagnosing Sample Ratio Mismatch in Online Controlled Experiments: A Taxonomy and Rules of Thumb for Practitioners*, KDD '19](https://exp-platform.com/Documents/2019_KDDFabijanGupchupFuptaOmhoverVermeerDmitriev.pdf). Diagnosing a broken split before trusting anything else.
* [Deng, A., Xu, Y., Kohavi, R. and Walker, T. (2013), *Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-Experiment Data*, WSDM '13](https://exp-platform.com/cuped/). Variance reduction, for when interval width becomes the
  constraint.

Every link above was checked on 6 September 2026.

<CardGroup cols={2}>
  <Card title="The exact experiment ledger" icon="database" href="/results/exact-ledger">
    The canonical store the final numbers are computed against.
  </Card>

  <Card title="Bucketing model" icon="shuffle" href="/developer/bucketing">
    How a visitor becomes a variant, and how to re-derive any assignment.
  </Card>

  <Card title="The three engines" icon="scale-balanced" href="/results/engines">
    Frequentist, sequential and Bayesian, locked per experiment at start.
  </Card>

  <Card title="Goal firing health" icon="heart-pulse" href="/goals/health">
    The failure mode no amount of statistics will rescue you from.
  </Card>
</CardGroup>

***

## Already testing somewhere else

These pages assume you are deciding how to run a test. If you are already
running them in another tool, the quickest way to judge this one is to
[rebuild a single live experiment here](https://abtestly.com/switch-one-experiment)
instead of starting from an empty account.

<Card title="Send us one live experiment" icon="right-left" href="https://abtestly.com/switch-one-experiment" horizontal>
  If you already run experiments in Convert, VWO, Optimizely, AB Tasty or PostHog, send us one that is live today and we rebuild it in ABTestly with you, free. Within two business days you get back three lists: what carries across as it is, what has to be re authored, and what we cannot reproduce. We never ask for a login to your current tool.
</Card>
