Skip to main content
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 runs, so a sample size you compute there is the sample size the product will project against.

The pages

Minimum detectable effect

The sample-size formula, worked to the visitor, and what our own function returns across common baselines.

Test duration

Required sample divided by accrual, the four statuses the projection can return, and what it does not know.

The peeking problem

A measured false-positive rate for four reading schedules, and the anytime-valid engine that removes the penalty.

Confidence intervals

Four intervals, four formulas, and why every one of them is printed next to its denominator.

Sample ratio mismatch

The chi-square check on the assumption everything else depends on, and which of its outputs reach a screen.

A reading order

If you are planning a test, start with minimum detectable effect, then test duration. Those two turn a business question into a date you can commit to. If a test is running, read the peeking problem before you act on an early green, and sample ratio mismatch if a warning has appeared. If a test has finished and someone is asking how confident you are, confidence intervals is the page that answers it, and 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. Every link above was checked on 6 September 2026.

The exact experiment ledger

The canonical store the final numbers are computed against.

Bucketing model

How a visitor becomes a variant, and how to re-derive any assignment.

The three engines

Frequentist, sequential and Bayesian, locked per experiment at start.

Goal firing health

The failure mode no amount of statistics will rescue you from.

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 instead of starting from an empty account.

Send us one live experiment

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.
Last modified on September 6, 2026