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 📈 IRT Regression 🏗 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.
Example DataMixed MC + polytomous response matrix · for distractor analysis
CSV
Mixed Response Matrix (MC + Polytomous)
MC items use option letters A–D; polytomous items use integer scores 0–K. Upload with an Answer Key file to enable distractor analysis.
✦ Flexible names

MC items (V1–V10) contain raw option choices (A, B, C, D). Polytomous items (P1–P5) contain integer scores (0–3). Upload this file alongside the Answer Key below. PACER rescores MC items to 0/1 before computing all statistics — polytomous items pass through unchanged.

V1V2V3V10P1P2P5
MC itemMC itemMC itemMC itemPolytomous (0–3)Polytomous (0–3)Polytomous (0–3)
CCCA333
CBCA111
CDAB100
DDAA300
DCDA132
🗝Requires an Answer Key
Upload this file into the main dropzone, then drop the Answer Key file (below) into the key dropzone that appears. PACER uses the key to score A/B/C/D → 0/1 before running any analysis.
📊Distractor analysis
With a key file loaded, each item row in the results table becomes expandable (▶). Click to see per-option statistics: proportion choosing, point-biserial, biserial, and an empirical distractor ICC.
🔢Polytomous items
Columns absent from the key (P1–P5 here) are treated as polytomous — their numeric scores pass through to all CTT statistics unchanged. No distractor rows are generated for them.
Example DataAnswer Key · paired with the MC response matrix above
CSV
Answer Key
Two-column CSV mapping each MC item to its correct option — drop into the key dropzone after loading your response file
⚑ Exact header: item, key

List only your MC items — one row per item. Polytomous items are simply omitted. The correct option value must match what appears in the response data exactly (case-insensitive — PACER normalises to uppercase automatically).

itemkey
Item name — must match response file column headerCorrect option (A / B / C / D)
V1C
V2C
V3C
V4B
V5C
V6B
V7B
V8B
V9C
V10A
📋Header must be item, key
The first row must contain exactly item and key as column headers. Item names in column 1 must exactly match the column headers in your response file.
🔤Case-insensitive matching
PACER normalises both the key values and the response data to uppercase before comparison, so c, C, and C (with trailing space) all match correctly.
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.
Anchor FileItem parameter anchoring · bulk upload
CSV / XLSX / XLS
Anchor File LONG FORMAT
Fix known parameter values before calibration — one row per parameter
✦ Prescribed names

Long-format file with exactly three columns. Each row fixes one parameter of one item to a known value before calibration runs. Use the ⬇ Download template button inside the Anchors accordion to get a pre-filled starter file with all selected item names.

itemparamvalue
Item name — must match selected columnParameter to fixFixed numeric value
V1a1.20
V1b−0.50
V2b0.30
PolyItem1d1−0.40
PolyItem1d20.10
📋Header row required
First row must be column names — exactly item, param, and value (case-insensitive). Any other headers trigger a validation error.
🔗Item names must match selected columns
Values in the item column must exactly match column names that are currently selected in the PACER calibration UI. Unrecognized item names are rejected with an error; valid rows from the same file still load.
Valid param values depend on the item's model
b only for 1PL · a, b for 2PL · a, b, c for 3PL · a, d1, d2, … for GRM/GPCM · d1, d2, … for PCM · RSM items cannot be individually anchored (all items share the same threshold spacings).
🔢Values must be numeric
Blank or non-numeric cells in the value column cause that row to be skipped with an error. All other valid rows from the same file are still loaded.
Duplicate rows
If the same item + param combination appears more than once, the last value in the file wins. A warning is shown in the validation modal.
📊
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.

📈
IRT Regression
Latent Regression · Explanatory IRT (LLTM) · Adjacent-category · Binary
Latent RegressionResponse data + person covariates · File 1 of 2
CSV / XLSX
Response Data with Person Covariates
Wide format — one row per person. Item response columns are matched to the params file by name; remaining columns become person-level covariates.
✦ Flexible names

Item columns are identified by matching their header names against the item IDs in the Item Parameters file. Any column not matched becomes a person-level covariate available for regression. The first column should be a person identifier. Leave missing item responses blank or as NA.

testID273332133026466catVarnumVarweightVarR
Person IDItem response (0/1)Item response (0/1)Item response (0/1)Categorical covariateNumeric covariateContinuous covariate
1979385NA10red0.5320.824
1979423011red1.8660.483
1979573101orange0.1610.926
197960111NAyellow0.7430.351
1979742000orange1.2040.612
🔗Matched by name to item params
PACER reads item IDs from the second file (Item Parameters) and matches them to column headers in this file. Columns not found in the params file become person covariates. The person ID column is auto-detected (first column, or a column named testID, id, person_id, etc.).
📊Covariate types
PACER auto-detects numeric vs. categorical covariates. Categorical columns are dummy-coded (first observed level = reference). You can override types in the Variable Assignment table after uploading.
🔢Item responses
Binary: 0 or 1. Polytomous: integer scores 0–K. Missing: blank or NA. Persons with all items missing are excluded.
🎯Intercept-only model
To estimate just the population mean and SD (no covariates), upload only item response columns with no extra columns. Enable the Intercept toggle in the sidebar to estimate the mean explicitly.
Latent RegressionFixed item parameters · File 2 of 2
CSV / XLSX
Item Parameters
Calibrated item parameters in PACER equating format — these are fixed during latent regression, not re-estimated
⚑ Exact columns: item_id, model, a, b, c

Export this file directly from PACER's IRT Calibration or Equating tools using the CSV export. The item IDs in column 1 must match column headers in the Response Data file exactly.

item_idmodelabc
Item name (matches response file header)1PL / 2PL / 3PL / GRM / GPCMDiscriminationDifficultyGuessing (0 for 1PL/2PL)
273332PL0.709-0.9020.000
213302PL1.2340.1540.000
264663PL1.4702.6630.087
[POLYTOMOUS]
POLY01GPCM1.6742.317
📋Binary items: item_id, model, a, b, c
Columns must be in this exact order. c is the guessing parameter — set to 0 for 1PL and 2PL items. One row per binary item.
🔷Polytomous items: [POLYTOMOUS] sentinel
Add a row containing only [POLYTOMOUS] in the first column to separate binary from polytomous items. Polytomous rows follow: item_id, model, a, d1, d2, d3… where d1, d2, … are the step difficulty parameters.
🔑D scaling
Parameters must match the D scaling used in the Quadrature section. PACER defaults to D = 1.7 for latent regression (standard IRT convention). If your calibration used a different D, update the setting before running.
Explanatory IRT (LLTM)Long format with adjacent-category coding · for polytomous items (no/perhaps/yes)
CSV / XLSX
Long-Format Data — Adjacent-Category (Polytomous)
One row per person–item pair. Ordered responses (no/perhaps/yes) are auto-converted to binary adjacent-category pseudo-items internally.
⚑ Prescribed columns: id, item, resp (+ item attributes)

This is the natural format for verbal aggression-style data where each person responds to every item with an ordered rating. The resp column contains the raw ordered response; PACER internally transforms it to adjacent-category binary pseudo-items (see below). Item attribute columns (btype, situ, mode, etc.) describe the items and are used to build the W design matrix for the LLTM.

iditemrespbtypesitumode
Person IDItem identifierOrdered responseItem attribute (categorical)Item attribute (categorical)Item attribute (categorical)
1S1WantCursenocurseotherwant
1S1WantScoldperhapsscoldotherwant
1S1DoShoutnoshoutotherdo
2S1WantCurseyescurseotherwant
2S1WantScoldnoscoldotherwant
🔄Adjacent-category coding
PACER auto-converts no/perhaps/yes (or equivalently 0/1/2) to two binary pseudo-items per original item. no → adj1=0, adj2=NA; perhaps → adj1=1, adj2=0; yes → adj1=NA, adj2=1. Both pseudo-items share the same item attribute row in the W matrix.
🏷Item attributes = W matrix
All columns after resp (except person-ID, item, and response columns) are treated as item attributes and used to build the LLTM design matrix W. Drag them into the Add Predictors panel in the sidebar. Categorical attributes are dummy-coded; numeric attributes enter as-is.
🔍Auto-detection of column roles
PACER identifies item attribute columns as any column whose value is constant across all rows for the same item (e.g. btype is always "curse" for S1WantCurse regardless of person). Person-varying columns (Anger, Gender) are available as predictors but are not item attributes.
📋Required column names
The person ID column must be named id, person_id, sid, or similar. The item column must be named item or key. The response column should be named resp or response; alternatively r2 for a binary version. An optional binary column named r2 (Y/N) can also be used — select which column to use as the response in the What to Predict? sidebar panel.
Explanatory IRT (LLTM)Long format with binary responses · simpler case, no polytomous coding needed
CSV / XLSX
Long-Format Data — Binary Responses
One row per person–item pair with 0/1 responses. Item attributes in additional columns drive the W design matrix directly, with no polytomous transformation needed.
⚑ Prescribed columns: id, item, resp (+ item attributes)

Use this format when items have binary (correct/incorrect) responses and you want to model item difficulty as a function of item design features. Each item needs a set of attributes (content area, cognitive level, word count, etc.) that are constant for all persons who saw that item.

iditemrespcontentdokformatwordcount
Person IDItem identifier0 or 1Content area (categorical)Depth of Knowledge (categorical)Item format (categorical)Word count (numeric)
EX001MATH_011algebra2MC42
EX001MATH_020geometry3CR87
EX001MATH_031algebra1MC28
EX002MATH_011algebra2MC42
EX002MATH_021geometry3CR87
1️⃣One row per person–item pair
Each combination of person and item gets its own row. If person EX001 answered 30 items, there are 30 rows for EX001. It is fine if not every person saw every item (sparse designs are supported).
📐Item attributes drive the W matrix
Numeric attributes (e.g. wordcount) enter W as-is. Categorical attributes (e.g. content, format) are dummy-coded with first-occurrence reference coding. Select which columns are predictors in the Add Predictors sidebar panel after upload.
Difference from the polytomous format
Binary format uses 0/1 directly — no internal transformation. Polytomous format uses no/perhaps/yes (or 0/1/2) and PACER creates two binary pseudo-items per original item. Both formats use the same long-format layout and are processed identically after the response column is resolved.
🏗
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.