The lab notebook that
keeps science honest.

Design a study. Pre-register it. Analyze with real, verified statistics.
ResLab flags p-hacking before it becomes a finding — on a tamper-evident audit trail.

design → pre-register → analyze → verify → detect
78 tests passing validated vs. scipy/R your data never leaves the browser
How it works

The honest research flow, enforced by design

01 · DESIGN

Before any data

Hypothesis, outcome, planned test, alpha — with power analysis telling you what effect you can actually detect with the sample you can afford.

02 · PRE-REGISTER

Locked, tamper-evident

The plan is sealed with a SHA-256 checksum and written to a hash-chained audit log. Revisions create new versions; the original is never mutated.

03 · ANALYZE

Real numbers only

t, Welch, paired t, ANOVA, Pearson, Mann-Whitney, Levene, Jarque-Bera — computed, never generated. No LLM touches a number.

04 · TWO LANES

Confirmatory vs. exploratory

Claims come only from the pre-registered lane. Post-hoc exploration is allowed — but labeled and walled off. Hypotheses, never conclusions.

05 · DETECT

The guardian

Test switching, tail switching, outcome switching, optional stopping, subgroup slicing, undeclared outlier removal, multiple comparisons — each flagged with its bias explained.

06 · PROVE

Reproducible forever

The audit chain verifies nothing was changed. A reproducibility recipe lets anyone replay the exact analysis — same data, same tests, same numbers.

Live demo — real engine, real numbers

Watch the guardian catch a p-hacking pattern

This runs the actual ResLab engine in your browser. Step through a pre-registered study and watch the guardian flag a sample smaller than planned.

reslab — honest flow
Try it on your data

Analyze a CSV right here — nothing leaves your browser

Drop in a CSV, pick the value and group columns, and ResLab runs a real two-group test — choosing the right one from the data's own assumptions.

Drop a CSV here or browse

Two numeric columns → mean comparison · or any table for group tests

Verification, not vibes

The engine is validated against known values

The statistics library is cross-checked against published references — the same numbers you'd get from R or scipy — in an automated suite (78 tests, all green in CI).

CheckExpectedSource
t(10, two-sided, α = 0.05)2.228 → p ≈ 0.05t-table
F(2, 27) 95th percentile3.354 → p ≈ 0.05F-table
R sleep dataset, paired tt = −4.0621, df = 9, p = 0.002833R
R PlantGrowth ANOVAF = 4.846, p = 0.01591, η² = 0.264R
Anscombe I correlationr = 0.81642, p = 0.00217Anscombe
Mann-Whitney, fully separated n₁=n₂=4U = 0, p = 2/70 exactlyexact enumeration