SEM χ² df calculator (aka Jen Jr. ... don't ask, just don't)
Degrees of freedom for the model chi-square (χ²) fit statistic in structural equation modeling: the number of non-redundant data points minus the number of freely estimated parameters.
Model type
Model size
Invariance level
Presets set which parameters are held equal across groups (uncheck any row's "Equal across groups" box to customize). Each level assumes the one before it also holds.
Freely estimated parameters 0
Note: different SEM software packages estimate different parameters by default. For example, some use reference indicators by default, some, for no good reason, estimate residual covariances by default, etc.
Total freely estimated (q)0
Path diagram
Shows every freely estimated parameter with a matching count. Since the calculator tracks totals rather than a specific model syntax, the exact factor–indicator layout below is one illustrative assignment (indicators split evenly across factors) — only the counts are guaranteed to match your inputs.
Result
0
df = knowns − q
Groups (k)
1
Known data points
0
Freely estimated parameters (q)
0
Reporting table
Builds a knowns/unknowns accountability table in the style of Table 12 in Cortina et al. (2017) and Table 2 in Nielsen & Cortina (2025) — one row per model, with every known and unknown category itemized next to the resulting df. Useful for reporting a full SEM, or a configural/metric/scalar invariance sequence, in a paper or appendix.
Try "Download CSV" first. If clicking it does nothing — common on some embedded websites that block file downloads — click "Show CSV text" instead, then select all the text in the box (Ctrl/Cmd+A) and copy it (Ctrl/Cmd+C) to paste into a spreadsheet or a new .csv file.
Click inside the box below, select all (Ctrl/Cmd+A), and copy (Ctrl/Cmd+C). Open a blank spreadsheet and paste into cell A1 — that should split the text into columns and rows automatically. If it just pastes everything into that one cell instead, select column A, then use Data → Text to Columns → Delimited → Comma to split it. (Or paste into a plain text editor and save the file with a .csv extension.)
No rows yet — set up a model above, give it a label (e.g. "Configural invariance"), and add it as a row. Rows stay only in this browser session; download the CSV before you close the page.