File Format Reference

Template Library

Every file format PACER accepts, with example data you can view and download. Each tool expects a specific layout — use these as starting points for your own data. Some formats are flexible: column headers become identifiers within the analysis, so you can name them anything that makes sense for your data. Others are prescribed: PACER looks for specific column names to locate the right data, and the wrong name will trigger a validation error. Each file card is labeled so you know which rule applies before you start formatting your data.

📐 Item Analysis ⚙ IRT Calibration 📊 IRT Scoring ⚖ Equating 🧠 CDM Calibration 🎯 Skill Profiler 🏗 Test Construction
📐
Item Analysis
Classical test statistics · Point-biserial · DIF
Example DataResponse matrix · one file required
CSV / XLSX
Response Matrix
Wide format — each column is an item, each row is an examinee
✦ Flexible names

Column headers are item names. Values are numeric scores (0/1 for binary, 0–K for polytomous). An optional group column may be included anywhere for DIF analysis. Leave missing values blank or code as NA.

Q1Q2Q3Q4Q5group
Item columnItem columnItem columnItem columnItem columnOptional — DIF grouping
10110Reference
11101Reference
01011Focal
10111Focal
00100Reference
📋Header row required
First row must be column names — they become item identifiers used throughout all output tables and charts.
🔢Score values
Binary items: 0 or 1. Polytomous items: integer scores starting at 0 (e.g. 0, 1, 2, 3). Leave missing values blank or code as NA.
👥DIF analysis
Include a column named exactly group (lowercase) with at least two distinct values (e.g. Reference / Focal) to enable Mantel-Haenszel and SMD differential item functioning analysis.
IRT Calibration
1PL · 2PL · 3PL · GRM · GPCM · RSM
Example DataResponse matrix · one file required
CSV / XLSX
Response Matrix
Wide format — examinees as rows, items as columns
✦ Flexible names

Same wide-format layout as Item Analysis. Binary items use 0/1; polytomous items use integer scores 0–K. Binary and polytomous items may be mixed in the same file — PACER auto-detects: any column with a value > 1 is treated as polytomous. Leave missing responses blank or code as NA.

ITEM01ITEM02ITEM03ITEM04POLY01POLY02
Binary itemBinary itemBinary itemBinary itemPolytomous (0–3)Polytomous (0–4)
101123
110112
011034
101101
00012
🏷Column names are item IDs
Column headers become item identifiers used throughout all calibration output — results tables, plots, and exported parameter files all reference these names.
🎛Override model in the UI
After uploading, you can force a specific model per item (e.g. GRM vs GPCM for a polytomous item) directly in the PACER interface before running calibration.
📊
IRT Scoring
MLE · MAP · EAP · TCC

Scoring requires two files: item parameters and response data. If you ran calibration in PACER, both are loaded automatically — you only need to upload manually when working with external parameter estimates.

Example DataFile 1 of 2 · Item parameters
CSV / XLSX
Item Parameters File 1 of 2
One row per item — binary and polytomous items may be mixed
⬡ Names required

Binary items use a, b, c. Polytomous items (GRM / GPCM) use a plus threshold columns d1, d2, d3…. Leave unused cells blank. The name column may also be called itemKey, item, key, itemId, or id — PACER accepts all of these.

columnNamemodelabcd1d2d3
Item name (or itemKey, item, key, itemId, id)1PL · 2PL · 3PL · GRM · GPCMDiscriminationDifficultyGuessingThreshold 1Threshold 2Threshold 3
ITEM012PL0.8794-0.9216
ITEM023PL1.7345-0.31420.1316
ITEM03GRM2.1200-1.0851-0.13001.4424
ITEM04GPCM0.9530-1.98180.1647
COL Required — exact name
COL Optional — include when applicable
Example DataFile 2 of 2 · Response data (long format)
CSV / XLSX
Response Data — Long Format File 2 of 2
One row per examinee–item pair
⬡ Names required
💡 If your data is wide-format, run IRT Calibration first — PACER saves your responses in the required long format automatically, so you never need to convert manually.

Three required columns: testID (examinee identifier — also accepted: personId, id), key (the item's name — must match a value in columnName of the parameter file), score (0/1 for binary; integer for polytomous). Sparse data is supported.

testIDkeyscore
Examinee ID (or personId, id)Matches columnName value in params0/1 binary · 0–K poly
EX001ITEM011
EX001ITEM020
EX001ITEM032
EX002ITEM011
EX002ITEM021
EX002ITEM041
🔗key must match columnName
The key values in this file must exactly match the columnName values in the parameter file. Also accepted: itemKey, itemId, item. Case matters.
🕳Sparse data is fine
Items not administered to a given examinee can simply be omitted. There is no need to fill in blank rows — PACER handles missing responses automatically.
Equating / Linking
Stocking-Lord · Haebara · Mean-Sigma · Mean-Mean

Equating requires two parameter files — the Item Bank (old scale parameters) and the New Form (new form parameters). Both files use the same column layout. Items shared between forms serve as anchors; their item_id values must match exactly across both files.

Example DataBinary parameters · upload two files (Item Bank + New Form)
CSV / XLSX
Binary Item Parameters 2 files
Same column layout for Item Bank and New Form
⬡ Names required
Binary Items — one row per item
item_idmodelabc
Unique identifier1PL · 2PL · 3PLDiscriminationDifficultyGuessing (blank = 0)
ITEM0012PL0.8794-0.9216
ITEM0022PL0.6494-0.5570
ITEM0033PL1.7345-0.31420.1316
ITEM0043PL1.6109-0.97190.1766
COL Required — exact name
COL Optional — include when applicable
📂Two files, same format
Upload the old-scale parameters as Item Bank and the new-form parameters as New Form. Both files use this exact same column layout.
Anchor items
Items appearing in both files with matching item_id values are automatically used as anchors. Only these shared items drive the linking transformation.
🧠
CDM Calibration
DINA · DINO · EM Algorithm

CDM Calibration requires two files: a binary response matrix and a Q-matrix that maps items to skills.

Example DataFile 1 of 2 · Binary response matrix
CSV / XLSX
Response Matrix File 1 of 2
Examinees × Items · binary 0/1 only
✦ Flexible names

Wide format. Header row with item names required. Values must be 0 or 1. Item column names must correspond in order to rows of the Q-matrix.

Q1Q2Q3Q4Q5Q6
Item columnItem columnItem columnItem columnItem columnItem column
101101
111010
010111
101100
001011
Example DataFile 2 of 2 · Q-matrix
CSV / XLSX
Q-Matrix File 2 of 2
Items × Skills · specifies which skills each item requires
✦ Flexible names

One row per item, in the same order as the response matrix columns. One column per skill. A value of 1 means the item requires that skill; 0 means it does not. Column headers become skill names throughout the output.

Skill1Skill2Skill3
Skill (0 or 1)Skill (0 or 1)Skill (0 or 1)
100
010
110
001
101
011
🔢Row count must match
The number of rows in the Q-matrix must equal the number of item columns in the response matrix — they are linked by position, not by name.
🧠DINA vs DINO
DINA — examinee must master all required skills for a high probability of correct response. DINO — examinee needs any one required skill.
🎯
Skill Profiler
CDM Scoring · MLE · MAP · EAP skill profiles

The Skill Profiler loads parameters from a saved CDM Calibration session automatically. If uploading manually, three files are needed: item parameters, a Q-matrix, and a response matrix.

Example DataFile 1 of 3 · CDM item parameters
CSV / XLSX
CDM Item Parameters File 1 of 3
Slip and guess parameters — output from CDM Calibration
⬡ Names required

Three columns: itemName (item identifier), guess (probability of correct response without required skills), slip (probability of incorrect response despite having all required skills).

itemNameguessslip
Item identifierP(correct | no skills)P(incorrect | all skills)
Q10.18240.0951
Q20.21030.1240
Q30.08830.1571
Q40.15670.0724
Q50.22910.1138
Q60.16400.0873
CSV / XLSX
Q-Matrix & Response Matrix Files 2 & 3 of 3
Identical format to CDM Calibration
↑ See formats above

The Q-matrix and response matrix use the exact same format as CDM Calibration above — same column layout, same ordering requirements.

🏗
Test Construction
Automated Test Assembly · Blueprint · Item Groups · TIF Spec

Test Construction requires up to three files: an Item Bank (required), a Blueprint (optional), and a TIF Spec (optional). The item bank drives everything — any metadata column you include automatically becomes an available blueprint dimension with no configuration needed.

Example DataItem Bank · one file required
CSV / XLSX
Item Bank
One file — binary and polytomous items mixed freely in any order
⬡ Names required

Binary and polytomous items go in the same file. Binary items use a, b, c and leave threshold columns blank. Polytomous items use a and threshold columns (b1, b2…) and leave b and c blank. Any extra columns — content_area, strand, dok, anything — become blueprint dimensions automatically.

itemidmodel abcd1d2 content_areaitem_typeenemy_setgroup_id
Unique IDModel name DiscriminationDifficulty (binary)Guessing (3PL only) Threshold 1 (poly)Threshold 2 (poly) Any metadataAny metadataEnemy items (optional)Passage group (optional)
13PL0.0732.5530.066Strand1Binary
23PL0.330-3.6460.006Strand1Binary
33PL0.1721.8800.175Strand1Binary4;5
4GPCM0.7800.5832.987Strand1Polytomous3;5
5GPCM0.354-2.0990.457Strand1Polytomous3;4
63PL0.6872.9570.073Strand2Binary
73PL0.960-1.0160.104Strand2Binarypassage_A
8GPCM0.8681.0502.650Strand2Polytomouspassage_A
9GPCM0.560-1.090-0.550Strand2Polytomouspassage_A
COL Required — exact name
COL Optional — include when needed
🗂One file for everything
Binary (3PL/2PL/1PL) and polytomous (GPCM/GRM/PCM/RSM) items are freely mixed. PACER detects the type from the model column — no separate files needed.
📐IRT parameters by type
Binary: fill a, b, c (leave c blank for non-3PL). Polytomous: fill a and threshold columns d1, d2… Leave unused cells blank, not zero.
🏷Metadata columns
Any column beyond IRT parameters (content_area, dok, strand, etc.) automatically becomes a blueprint dimension — no configuration required.
enemy_set
Items that cannot share a form. Single: 4. Multiple: 3;5 or "3;4;5". One-directional declaration is enough — PACER resolves symmetrically.
🔗group_id & GROUP rows
Items sharing a group_id form a stimulus group — selected all-or-nothing (strict mode) or with pruning (pruned mode). To enable group-level blueprint constraints, add a GROUP descriptor row per group: set model = GROUP, set group_id to the group's own ID, and fill in group metadata columns (group_type, subject, etc.). Leave IRT columns blank. See the Item Groups card below.
Example DataItem Groups · GROUP descriptor rows + group-level blueprint
CSV / XLSX
Item Groups
Add GROUP rows to the item bank to enable group-level blueprint constraints
⬡ Names required

Groups are collections of items that belong together — a science scenario, a math exhibit, a reading passage, a topic cluster, or any atomic set. To use group-level blueprint constraints, add one GROUP descriptor row per group directly in your item bank file. Items in the group reference it via group_id. Standalone items (no group_id) coexist in the same file and are unaffected.

💡 A GROUP row's metadata columns (e.g. group_type, subject) are used for group-level blueprint constraints. Item metadata columns (e.g. content_area, dok) are used for item-level blueprint constraints. Both live in the same file — they never conflict.
Item Bank with GROUP Descriptor Rows
itemidmodelgroup_id group_typesubject abcd1d2 content_areadok
ID or group nameGROUP or model namePoints to self (GROUP) or parent group (item) Group-level metadataGroup-level metadata IRT params — blank for GROUP rows Item-level metadataItem-level metadata
G001 GROUP G001 literaryreading
item_013PLG0011.20-0.500.18reading2
item_023PLG0010.950.100.21reading1
item_033PLG0011.100.800.15reading3
G002 GROUP G002 persuasivereading
item_043PLG0021.40-0.200.14reading2
item_05GPCMG0021.05-0.800.60reading3
G003 GROUP G003 physicsscience
item_062PLG0031.30-0.40science2
item_072PLG0031.000.30science1
item_082PL0.88-0.80science1
item_092PL1.200.60reading2
COL Required — exact name
COL Optional metadata — name freely
GROUP descriptor rows
Blueprint with Group-Level Constraints

When your bank has GROUP rows, the blueprint can use constraint_unit = group to constrain how many groups of each type are selected. Item-level constraints work exactly as before — both types can coexist in the same blueprint file.

dimensioncategory min_itemsmax_items constraint_unitnotes
Column name or keywordValue to match Min count per formMax count per form item (default) or groupFree text
── Total row ────────────────────────────────────────────────────────────────────────────
total3232Total items per form
── Group-level constraints — constraint_unit = group means min/max count groups, not items ──
group_typeliterary22groupExactly 2 literary groups
group_typepersuasive11groupExactly 1 persuasive group
subjectscience12group1–2 science groups
── Item-level constraints — unchanged from standard blueprint, constraint_unit defaults to item ──
content_areareading182218–22 reading items total
content_areascience8128–12 science items total
dok1610DOK 1 items
dok21418DOK 2 items
dok348DOK 3 items
COL Required — exact name
COL Optional — include when needed
Group-level rows
🪪GROUP descriptor row
Set model = GROUP, set group_id to the group's own ID (references itself), and fill any metadata columns (group_type, subject, etc.). Leave all IRT parameter columns blank — GROUP rows are metadata only, not items.
Group metadata vs item metadata
The GROUP row owns group-level dimensions (group_type = literary). Each item owns its item-level dimensions (content_area = reading). They are independent and never compete — both live in the same file.
🎛constraint_unit = group
In the blueprint, set this column to group to make min_items / max_items count groups, not items. Matches against GROUP descriptor metadata. Leave blank or item for normal item-level behaviour.
🔓Standalone items are unaffected
Items with no group_id behave exactly as in a standard bank. Grouped and standalone items can be freely mixed in the same file and blueprint.
🔀Assembly modes
When your bank has GROUP rows, a toggle appears in the toolbar. Strict — all items in a group are selected together or not at all. Pruned — items may be dropped to satisfy blueprint constraints, subject to a minimum group size.
Missing GROUP descriptor
If items reference a group_id with no matching GROUP row, PACER warns at import. The group still works for atomicity, but group-level blueprint constraints cannot apply to it.
Example DataBlueprint · optional constraint file
CSV / XLSX
Blueprint
Content constraints + optional solver objective — one row per rule
⬡ Names required

Each row is one constraint or directive. The dimension column references either a metadata column from your bank or a built-in keyword (model_type, model). All blueprint row types are shown below.

dimensioncategory min_itemsmax_items dimension2category2 constraint_typetarget_thetaconstraint_unitnotes
Column name or keywordValue to match Min per formMax per form 2nd dimension (joint only)2nd category (joint only) Objective row onlyObjective row onlyitem (default) or groupFree text
── Total row — required; sets form length ──────────────────────────────────────────────────────
total2020Total items per form
── Content constraints — any metadata column in the bank ──────────────────────────────────────
content_areaStrand155Exactly 5 from Strand1
content_areaStrand255Exactly 5 from Strand2
content_areaStrand355Exactly 5 from Strand3
content_areaStrand455Exactly 5 from Strand4
── model_type — built-in keyword: dichotomous or polytomous ───────────────────────────────────
model_typedichotomous1518Binary items
model_typepolytomous25Polytomous items
── model — built-in keyword: exact model name ──────────────────────────────────────────────────
model3PL10153PL items only
modelGPCM25GPCM items only
── Joint constraint — both dimensions must match simultaneously ─────────────────────────────────
content_areaStrand123item_typePolytomousPolytomous items in Strand1
── Group-level constraint — constraint_unit = group counts groups, not items ──────────────────
group_typeliterary22groupExactly 2 literary groups
── Objective row — dimension and category left blank; constraint_type and target_theta used ────
maximize_tif0.0Maximize info at θ=0
COL Required — exact name
COL Optional — include when needed
📏Total row
Set dimension = total with min_items and max_items to define form length. When present, the Target input in the PACER toolbar is locked to this value.
🏷Content constraints
Set dimension to any metadata column from your bank (content_area, dok, etc.) and category to the value to match. min_items / max_items are per-form counts.
🔑Built-in keywords
model_type — values: dichotomous or polytomous. model — exact name: 3PL, 2PL, 1PL, GRM, GPCM, PCM, RSM. No extra bank column needed.
🔀Joint constraints
Fill both dimension2 and category2 to require items matching both dimensions simultaneously (e.g. strand=Reading AND dok=3). Both must be present or both absent.
🎯Objective rows
Leave dimension and category blank. Set constraint_type to maximize_tif or minimize_sem and target_theta to the ability point. Only the first objective row is used.
🔗constraint_unit = group
Set to group to count groups instead of items. Requires GROUP descriptor rows in the bank. Leave blank or item for standard item-level behaviour — see the Item Groups card above.
💡Spacer rows & tips
Rows with both dimension and category blank (and no constraint_type) are silently skipped — safe to use as visual separators. Constraint minimums must be jointly satisfiable given your bank size, or the solver returns Infeasible.
Example DataTIF Spec · optional information band file
CSV / XLSX
TIF Spec
Pointwise information band — each row constrains test information at one θ value
⬡ Names required

Each row tells the solver that the assembled form's Test Information Function must fall within [min_info, max_info] at that exact θ. All rows are hard constraints — the solver will report Infeasible if the bank cannot satisfy them. You can edit these values directly in the TIF Spec table within the app after uploading.

thetamin_infomax_infolabel
θ value (any real number) Minimum information required Maximum information allowed (blank = no upper bound) Optional display label
-308low range
-2312below average
-1510lower target
0612target region
1510upper target
2312above average
308high range
COL Required — exact name
COL Optional — include when needed
Row order
Rows can be in any order — PACER sorts by θ internally before rendering the band on the plot.
One-sided bounds
Leave max_info blank for a floor only (no ceiling). Set min_info = 0 for a ceiling only (no floor).
🔒Hard constraints
All rows are hard — if the best possible form from your bank cannot reach min_info at any θ point, the solver reports Infeasible rather than returning a violating solution.
Editable in-app
After uploading, every value is editable directly in the TIF Spec table in the app. Changes take effect on the next Auto-Assemble run. Export the edited spec with the ↓ CSV button.