ICF Validator
Paste or type an ICF document and validate it instantly. Powered by the official icf.js library (ICF spec v1.1) running entirely in your browser — nothing is uploaded. The same engine the apps use, plus an extra authoring hint.
Full ICF validation, in real time
Every diagnostic here is produced by icf.js itself — the official parser and validator, not a reimplementation. On top of it, the validator layers one extra editor hint — a directive line missing its @ — that the library leaves to your discretion.
Schema & field counts
Builds the declared schema and checks every data row against its leaf field count — flagging FIELD_COUNT_MISMATCH.
Hierarchy & markers
Catches rows on container nodes, rows without an owner, unknown nodes, and the wrong row marker — WRONG_ROW_MARKER: = for singletons vs - for collections.
Field lists
Detects unclosed [ brackets, duplicate field lists, and lists with no owning node.
Text blocks
Tracks <<TAG … TAG>> preformatted blocks and reports any that are never closed.
Directives & sections
Validates section order, record attributes, multiple @schema id= blocks and master types.
References & primary objects
Resolves Type:Id references — record-local primary= objects first, then @masters, including master-to-master foreign keys — flagging UNRESOLVED_MASTER_REFERENCE and UNRESOLVED_PRIMARY_REFERENCE.
Annotations (v1.1)
Parses !indexes, !defaults, !constraints, !expressions and row !overrides — flagging unknown, misplaced or malformed annotations.
Constraints (v1.1)
Validates required and unique declared in !constraints — REQUIRED_FIELD_MISSING and UNIQUE_CONSTRAINT_VIOLATION, as non-fatal warnings.
Indentation & versions
Warns on tab indentation and on documents declaring a newer ICF version than 1.1.