Local-first survey analytics for macOS
Survey analytics, built for market researchers.
Statsflow reads and writes SPSS files without losing a byte of metadata, builds weighted banner tables with proper significance testing, and runs 20 statistical models — fast enough that a 50,000-interview study feels instant. All on your Mac, all private.
Free · v0.7.0 · Apple Silicon · macOS 12 or later
A workbench, not a spreadsheet
Statsflow is metadata-native from the ground up. It wraps best-in-class statistics with a survey-aware interface — built for studies of 1k–100k interviews and thousands of variables.
Lossless SPSS files
Read and write .sav and .zsav with complete metadata fidelity — variable and value labels, measurement levels, user-missing ranges, multi-response sets. CSV, Excel, Parquet, Stata and SAS too.
Weighted banner tables
Publication-grade cross-tabs with proper within-banner significance testing — column-proportions z-tests and Welch's t, computed on the Kish effective base.
20 statistical models
The full regression family, CHAID, clustering, PCA, EFA, correspondence analysis, driver analysis, TURF, ANOVA — plus latent class / profile analysis and multiple correspondence analysis, new in this release. Survey-weighted wherever the mathematics allows.
Native survey weighting
IPF raking, post-stratification and weight trimming built in, parity-tested against R's survey::rake. Effective sample size is surfaced everywhere it matters.
Local-first and private
Your data never leaves your Mac. No account, no cloud, no telemetry — open a file and start working.
AI interpretations
One click turns any model, table or chart into a plain-language write-up — what's significant, how strong the effect is, which bases are too thin to trust. Bring your own OpenAI or Anthropic key; everything else works fully offline.
Built for studies that break spreadsheets
Blazing fast on real survey sizes
Statsflow's engine is built on Polars and Apache Arrow — columnar, multi-core, zero-copy. The work that makes you wait in other tools happens before you've let go of the mouse.
The bundled European Social Survey demo opens, filters and cross-tabs without a spinner — a study size that grinds a spreadsheet to a halt.
Carried with full SPSS metadata — value labels, missing rules, multi-response sets — and still navigable in real time.
A full K-Means run across all 50k respondents finishes while you're still reading the config panel. Regression and driver analysis return on the spot.
Stack up a dozen weighted banner tables, toggle a weight, swap a filter, flip significance testing on — the whole grid re-renders as fast as you can click. No batch runs, no progress bars, no waiting for the spreadsheet to recalculate.
Twenty analyses, one workbench
Everything a survey study needs — from a quick frequency table to model-based segmentation — survey-weighted wherever the mathematics allows, and parity-tested against R and SPSS.
Regression & prediction
Linear regression
OLS and WLS with robust and survey-design standard errors, VIF diagnostics and conformal prediction intervals — the workhorse, done properly.
Logistic regression
Binary outcomes with odds ratios, a ROC curve and conformal prediction sets — on a genuinely weighted GLM path, not the broken Logit shortcut.
Ordered logit / probit
Likert and rating-scale outcomes modelled with their ordering intact, a Brant proportional-odds check and an optional Bayesian mode.
Multinomial logistic
Unordered choice outcomes with a proper Hausman-McFadden IIA test and per-contrast interpretation.
Driver analysis
Six importance methods on one screen — Shapley, Johnson's RWA, Kruskal, Bayesian RWA, permutation, std-β² — so collinear drivers can't fool you.
Segmentation & trees
CHAID
The classic market-research decision tree, with survey-weighted splits and an interactive zoom-and-pan tree, rules table and sunburst.
Cluster analysis
K-Means and hierarchical clustering with a genuinely weighted silhouette and respondent-friendly cluster profiles.
Latent class / profile analysis
NewModel-based segmentation that uncovers hidden respondent types from categorical, continuous or mixed batteries — defensible with BIC and entropy.
TURF
Reach-and-frequency portfolio optimisation — the smallest set of products or messages that covers the most respondents.
Dimension reduction & latent structure
Principal component analysis
Component extraction with Varimax and Promax rotation and rotation-aware saved scores.
Factor analysis (EFA)
True common-factor EFA with a polychoric kernel for Likert items — loadings that don't under-state.
Correspondence analysis
Brand-image maps from a single cross-tab, with a Rao-Scott survey-design χ² correction.
Multiple correspondence analysis
NewPerceptual maps across many categorical questions at once, with a corrected eigenvalue scree and supplementary-variable projection.
Hypothesis testing
One-way ANOVA
Group-mean comparison with Welch's F, η² and ω², and Tukey / Games-Howell post-hoc tests — weighted where the mathematics allows.
Chi-square / Cramér's V
Independence testing with a Rao-Scott survey correction and honest, uncorrected effect sizes.
Descriptives & exploration
Frequencies
Value-label-aware frequency tables with one-click nets and Save-to-Data recodes.
Descriptives
Means, dispersion, weighted medians and any percentile you ask for, across a whole numeric battery.
Explore (by group)
Side-by-side group comparisons — distributions, normality and dispersion tests in a single pass.
Correlation explorer
An auto-dispatching correlation matrix — Pearson, polychoric, polyserial or tetrachoric, picked per variable pair.
Crossplot
Scatterplots with OLS, polynomial and LOWESS fits that respect value labels and missing values.
Need to compare subgroups? Any eligible model can be run as a split-sample analysis — the same model fitted once per subgroup, with a cross-subgroup interaction test and a coefficient forest chart.
AI interpretation
Every result, explained in plain language
Click Interpret on any model, table or chart and Statsflow turns the numbers into a written read-out — what reached significance, how large the effect is, which bases are too thin to trust, and what to flag for the reader. It's tuned for survey work, not generic data science.
- Base-size aware
- It refuses to interpret an n<30 cell and caveats anything thin — it won't hand you a confident story about 40 respondents.
- Speaks effect sizes
- Written in the language of magnitude and confidence, not p-value worship — the read-out a researcher would actually write.
- Yours to edit
- Every interpretation is fully editable and saved with the run, so it travels with the project and into your report.
Interpretation is everywhere you analyse
The same one-click write-up sits on every result surface in the app:
- Regression results — coefficients, fit, robust SEs
- Weighted banner tables — what the sig testing actually says
- Driver analysis — which drivers to act on, and why
- Cross-subgroup interaction tests — does the effect really differ?
- PCA, EFA & clustering — naming and reading the structure
- Correlation explorer & verbatim text analysis
Bring your own API key
AI interpretation runs on OpenAI or Anthropic models. You supply your own API key in Settings — there's no Statsflow account and no subscription to us. The key is stored locally on your Mac and the result summary is sent directly to the provider you choose; you pay that provider for usage, typically a fraction of a cent per interpretation.
No key, no problem. Every other feature in Statsflow — file I/O, tables, all 20 models, weighting, exports — works fully offline. AI interpretation is the one feature that reaches out, and only with a key you control.
See it in action
Every surface is designed for survey data — value labels, weights and missing values are first-class, not afterthoughts.
Download Statsflow
Free for macOS. One signed disk image — no installer, no account.
Statsflow_0.7.0_aarch64.dmg · ~460 MB · Apple Silicon · macOS 12+
- Version
- 0.7.0
- Released
- 2026-05-19
- SHA-256
- c9a2fffa9fd1ab12…
Statsflow is not yet notarized by Apple, so macOS will warn that it is from an unidentified developer. To open it: right-click the app in Applications, choose Open, then confirm Open again. You only need to do this once.