Skip to content
Free tool · runs in your browser

SEM & CFA Fit Index Checker

Paste your lavaan, AMOS or Mplus output, or type the numbers in. Get an overall good / acceptable / poor verdict against widely cited cutoffs (Hu & Bentler for good fit), the RMSEA 90% confidence interval and PCLOSE computed from your χ², df and N, and an APA fit sentence ready to report. A second tab compares two nested models (Δχ², ΔCFI) for measurement invariance.

Everything runs in your browser; your numbers never leave this page. Want the fit indices computed straight from your data, with the write-up done for you? Run your CFA/SEM in Explonia.

Which cutoffs it checks

The tool compares each index against the standard thresholds and colour-codes them: CFI and TLI ≥ .95 (good) or ≥ .90 (acceptable); RMSEA ≤ .06 (good) or ≤ .08 (acceptable), always reported with its 90% confidence interval; SRMR ≤ .08 (good) or ≤ .10 (acceptable). The strict good-fit values (CFI/TLI ≥ .95, RMSEA ≤ .06, SRMR ≤ .08) follow Hu & Bentler (1999; https://doi.org/10.1080/10705519909540118); the more lenient acceptable values come from other, mostly older sources: CFI/TLI ≥ .90 from Bentler & Bonett (1980; https://doi.org/10.1037/0033-2909.88.3.588), applied to CFI by convention; RMSEA ≤ .08 from Browne & Cudeck (1993); SRMR ≤ .10 from Schermelleh-Engel, Moosbrugger & Müller (2003). The model χ² is shown for completeness but carries no verdict, because it is sensitive to sample size: with large N it is almost always significant even when the model fits well, so the overall verdict rests on the approximate-fit indices.

APA style drops the leading zero for statistics that cannot exceed 1 (for example .95, not 0.95), and reports p < .001 rather than an exact tiny value. The tool applies both rules for you. The χ², df and the information criteria print normally because they can exceed 1.

RMSEA, its confidence interval and PCLOSE

RMSEA measures how badly the model misses, per degree of freedom and per case. It takes the part of the χ² that exceeds its df — the estimated noncentrality — and scales it by the df and the sample size:

RMSEA equals the square root of the larger of chi-square minus df and zero, divided by the square root of df times the sample size.

Because RMSEA is estimated from a single sample, it carries uncertainty, and the interval is the honest way to show it. The 90% confidence interval is found by asking which population noncentrality values would still make your χ² a plausible result: the lower bound is the noncentrality that puts your χ² at the 95th percentile, the upper bound the one that puts it at the 5th. Both bounds are then put back on the RMSEA scale with the same formula. This needs the noncentral χ² distribution, which is why the tool loads a small extra script the moment you give it a sample size — and why so many people type the interval by hand instead. A wide interval is itself a finding: with a small sample the upper bound can sit far above .08 even when the point estimate looks fine, and reviewers read that bound.

PCLOSE is the p value of the test of close fit. Its null hypothesis is that RMSEA is .05 or lower in the population, so a PCLOSE above .05 means close fit cannot be rejected — the result you want — and a PCLOSE below .05 says the model is worse than close fitting. It is not a test of perfect fit, and it inherits the sample-size sensitivity of every χ²-based test. lavaan prints it as rmsea.pvalue and AMOS prints it as PCLOSE. The idea of judging models by close fit rather than exact fit, and the interval itself, come from MacCallum, Browne and Sugawara (1996; https://doi.org/10.1037/1082-989X.1.2.130).

Comparing two nested models

Two models are nested when they are fitted to the same data, the same cases and the same variables, and one of them is the other plus constraints — equal loadings across groups, a path fixed to zero, equal intercepts. For such a pair the difference in χ² is itself a χ² statistic on the difference in df, so a p value follows directly. In measurement invariance this is the whole workflow: configural, then metric (equal loadings), then scalar (equal intercepts), each step tested against the one before it.

The catch is sample size again: with several hundred cases the Δχ² test rejects differences too small to matter. That is why Cheung and Rensvold (2002; https://doi.org/10.1207/S15328007SEM0902_5) proposed reading ΔCFI instead, with a drop of more than .01 marking a real loss of fit, and why Chen (2007; https://doi.org/10.1080/10705510701301834) added ΔRMSEA ≤ .015 as a companion rule. Report both, and say which one your decision rests on. The Compare tab does the arithmetic and writes the sentence.

χ²/df, AIC, BIC and SABIC

The χ²/df ratio is an old rule of thumb: 2 or lower is usually called good and 3 or lower acceptable (Carmines & McIver, 1981; Schermelleh-Engel, Moosbrugger & Müller, 2003). It shares the weakness of the χ² test itself, so treat it as a rough signal and never as the deciding number. AIC, BIC and SABIC are for comparing models that are not nested, where a Δχ² test does not apply — the model with the lower value is preferred. This page writes them on the χ² scale: AIC = χ² + 2q, BIC = χ² + q·ln(N) and SABIC = χ² + q·ln((N+2)/24), where q is the number of free parameters. Those forms differ from the likelihood-based values lavaan prints by a constant that is identical for every model fitted to the same data, so the difference between two models is the same as lavaan's while the absolute numbers are not. Take the values you report in a paper from your software, and use the ones here to compare models on the same data.

Does this analyse my data?

No. It checks fit numbers you already have from your CFA/SEM output and turns them into APA wording, with the RMSEA interval and PCLOSE computed from your χ², df and N. To compute the fit indices themselves from raw data — and get the paragraph written for you — run the analysis in Explonia. See results verified against R (lavaan) →

Should I rely on a single index?

No. Hu & Bentler (1999) recommend a joint criterion: SRMR close to .08-.09 combined with CFI ≥ .95 (or with RMSEA ≤ .06) gives the best balance of detecting misspecification while avoiding false rejection. Report several indices together, not just one.

Can I trust an RMSEA confidence interval I typed by hand?

Hand-typed intervals are where mistakes creep in: a digit is dropped, the bounds are swapped, or the two numbers come from a different solution than the point estimate next to them. Give the tool your χ², df and N instead. It computes the interval and PCLOSE with the same noncentral χ² method your software uses, reports the computed interval, and tells you when a value you typed differs from it by more than .005.

What output can I paste?

The paste box reads lavaan summary(fit, fit.measures = TRUE) and the printed fitMeasures(fit) vector, and does its best with the AMOS fit tables (CMIN, Baseline Comparisons, RMSEA) and the Mplus model-fit section. Nothing is filled in until you have seen every value we read next to the line it came from and pressed Apply.

How to cite this tool

If this tool helped your research, you can cite it (APA 7):

Szymkowiak, A. (2026). SEM and CFA fit-index checker [Computer software]. Explonia. https://explonia.com/tools/fit-index-checker/

From fit numbers to a finished Results section

Collect your data and run CFA, CB-SEM or PLS-SEM in your browser — Explonia computes the fit indices, checks the cutoffs, and drafts the APA paragraph with your real numbers filled in. Free to start. No credit card.

Run your analysis free

Related tools

Tool
CFA / SEM APA Results Generator

Turn your fit indices into an APA-ready write-up.

Open
Tool
Sample Size Calculator for SEM & CFA

Check if your sample size is large enough for the model.

Open