Upload a CSV in long format, map your subject, condition, and measurement columns, and get the repeated-measures ANOVA with Mauchly's test of sphericity, Greenhouse-Geisser and Huynh-Feldt corrected p-values, partial and generalized eta-squared, corrected post-hoc comparisons, and a per-subject profile grid. 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.
Fitting the within-subject model and testing sphericity...
Sent to — condition means with error bars, a per-subject profile grid, the repeated-measures ANOVA table with both effect sizes, Mauchly's test with the Greenhouse-Geisser and Huynh-Feldt corrections, corrected post-hoc comparisons, R code, and AI insights.
Analyze another fileThe model is base R's aov with a subject error stratum — aov(value ~ condition + Error(subject / condition)) — which separates the between-subject variance from the within-subject error, and aov(value ~ group * condition + Error(subject / condition)) when a between-subjects factor is mapped. Sphericity is handled directly from the covariance of the repeated measures rather than by a package: the covariance is projected onto an orthonormal basis of the contrasts orthogonal to the unit vector, Mauchly's likelihood-ratio statistic is computed from that projection with the standard chi-square approximation and its second-order refinement, the Greenhouse-Geisser epsilon is the squared trace over the number of contrasts times the trace of the square, and the Huynh-Feldt epsilon rescales it by the subject and group counts. Both epsilons multiply the numerator and denominator degrees of freedom before the F is read. Effect sizes are partial eta-squared and generalized eta-squared, which differ in whether the subject variance sits in the denominator. Post-hoc comparisons are paired t-tests on each subject's own difference between two conditions, corrected with base p.adjust.
Use it when the same subjects are measured three or more times — across timepoints, treatments, tasks, or settings — and you want to know whether the measurement differs across them, which pairs carry the difference, and whether the answer survives the sphericity correction.
Not when each condition is a different set of subjects — that is a between-subjects design, use the group comparison tool. Not when there are exactly two conditions — that is a paired comparison, use the before-versus-after tool. Not for a categorical outcome, and not as a causal estimate of what the conditions did.
Built for: Researchers, clinicians, UX and product analysts, and quality engineers running within-subject or longitudinal designs
Typical data source: Any spreadsheet or CSV in long format with a subject column, a condition or timepoint column, and a numeric measurement — one row per subject per condition
Long format: one row per subject per condition. For example, a pain score measured at four study visits:
Minimum 15 rows · Best with 15-500 subjects across 3-8 conditions
Standard-library analysis for within-subject designs, with sphericity handled properly. Map a subject identifier, the condition or timepoint each measurement was taken under, and the measured value in long format, and get the repeated-measures ANOVA that removes the stable subject-to-subject differences from the error term: the F test with partial and generalized eta-squared, Mauchly's test of sphericity with the Greenhouse-Geisser and Huynh-Feldt corrected p-values, pairwise post-hoc comparisons corrected for multiplicity, condition means with confidence intervals, and a per-subject profile grid. An optional between-subjects group turns it into a mixed design with a group-by-condition interaction.
The mean measurement under each condition with 95% confidence intervals — the shape of the effect, with the caveat that these bars carry the between-subject spread.
One row per subject across the conditions — whether the effect is consistent across individuals or driven by a subset.
How the variation splits between subjects, conditions, any interaction, and the residual, with both effect sizes.
Mauchly's test, both epsilon estimates, and the uncorrected, Greenhouse-Geisser and Huynh-Feldt p-values side by side.
Every pair of conditions compared on each subject's own difference, corrected for testing them all at once.
The exact model and formulas, plus what a within-subject design does not establish.
Plain-English interpretation — what the numbers mean, what's significant, and what to do next.
Did the measurement really move across the timepoints?
Map the subject identifier, the timepoint, and the measurement in long format. Because every subject contributes every timepoint, the stable differences between subjects are removed from the test rather than left in the noise, which is why this design detects a real change with far fewer subjects than comparing independent groups.
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.