Upload a CSV with an outcome, a treated flag, and the pre-existing differences you can measure. Get the raw gap next to a matched, like-for-like estimate — with covariate balance to prove the comparison is fair. Free.
Free analyses run on up to 10,000 rows. Larger files are randomly sampled to that size — sign up to analyze your full dataset.
Matching treated rows to comparable controls...
Sent to — naive vs matched effect estimates with confidence intervals, covariate balance before and after matching, matched-pair accounting, R code, and AI insights.
Analyze another fileThe analysis fits a logistic model for each row's probability of being treated (the propensity score) from your covariates, then pairs every treated row with the nearest untreated row on the logit propensity scale — within a caliper of 0.2 standard deviations, each control used at most once. It reports the naive raw difference and the matched paired difference side by side with 95% confidence intervals, plus standardized mean differences per covariate before and after matching (|SMD| < 0.1 = well balanced) and the share of treated rows inside the control group's propensity range.
Use it when the groups chose (or were chosen for) the treatment themselves — program membership, feature adoption, voluntary training — and you can measure the pre-existing differences that drove both the choice and the outcome.
Not needed for randomized experiments (use the A/B test tool), and not sufficient when the important confounders were never measured — matching cannot adjust for what is not in the data.
Built for: Analysts and operators evaluating programs, features, or interventions that were not randomly assigned
Typical data source: A spreadsheet or CSV with one row per person or unit: a numeric outcome, a treated/untreated flag, and the pre-treatment attributes that drove selection
One row per customer: the outcome, the treatment flag, and pre-existing attributes. For example, a loyalty program:
Minimum 50 rows · Best with 300-20,000 rows with a 20-60% treated share and 2-6 covariates
Standard-library analysis: compare a treated group against an untreated group fairly when assignment wasn't random. Did loyalty members spend more BECAUSE of the program, or were they already better customers? The analysis models each row's propensity to be treated from the covariates you map, matches every treated row to its nearest comparable control (1-nearest-neighbor on the logit propensity score, 0.2-SD caliper, without replacement), and shows the naive raw difference next to the matched difference with confidence intervals — plus covariate balance before and after matching. Matching adjusts only for observed covariates.
Standardized mean differences before vs after matching — proof of how comparable the matched groups actually are.
Each covariate's remaining imbalance after matching against the 0.1 threshold, at a glance.
The raw gap and the matched estimate side by side with confidence intervals — the headline chart.
Both estimates in full: effect, 95% CI, p-value, and the rows each one uses.
Plain-English interpretation — what the numbers mean, what's significant, and what to do next.
Did the program actually work, or did better customers self-select in?
Map your outcome, the treated flag, and the pre-existing differences you can measure. The report shows the raw gap next to the matched, like-for-like estimate — so you can see how much of the difference the treatment plausibly caused.
See our FAQ for details on pricing, data privacy, and how the analysis works. Every report includes a Methodology section showing the statistical test, assumptions checked, and diagnostics run.
Run any analysis on your own data — validated R analyses, interactive reports, AI insights, and PDF export.
Try Free — No Credit CardTell us what went wrong, in your own words. We capture the page you're on automatically, so no need to describe where you are.