Back to the BIM & IFC blog
Validation · 2026-10-03 · 9 min
IFC Classification Explained: Uniclass, OmniClass and How Codes Live in the Model
A classification code is the bridge between a model and everything that happens after it — cost plans, specifications, asset registers. In IFC it is not a property but a relationship, which is why so many exports lose it. How it works, which system to use, and how to check it.
IFC Classification Explained: Uniclass, OmniClass and How Codes Live in the Model — IFC Viewer Online article cover
Ask a quantity surveyor, a specification writer and a facilities manager what they need from a model, and the first answer from all three is the same: tell me what each thing is, in my terms. That is what classification does. A wall is not just an IfcWall; it is Ss_25_10_30 in Uniclass, a specific system with a cost line, a specification clause and a maintenance regime.
IFC carries that code — but not where most people look for it, which is why so many exports arrive without it.
A classification code reaches an element through a relationship, not a property. The reference holds the code; the classification names the system.
Key takeaways
- In IFC, classification is a relationship to a classification reference, not a property.
- A code means nothing without its system: Ss_25_10_30 is Uniclass; 21-02 10 10 is OmniClass.
- Check codes with an IDS classification facet — system and code together — on every delivery.
How the code is stored
- IfcClassification names the system and edition — Uniclass 2015, OmniClass, CCI.
- IfcClassificationReference holds one code (Identification) and its name, and points to the system — directly, or through parent references for hierarchical codes.
- IfcRelAssociatesClassification links that reference to one or many elements, or to element types.
Which system?
| System | Where it is common | Structure |
|---|
| Uniclass 2015 | UK; many ISO 19650 projects | Tables by prefix (Ss systems, Pr products, EF elements…) with hierarchical codes |
| OmniClass | North America | Numbered tables (21 elements, 23 products…) |
| CCI | Denmark, Estonia, Czechia and others | Classes by component and construction |
| NL-SfB | Netherlands and Belgium | Numeric element codes |
The right answer is the one in the contract. The wrong answer is two systems on the same project.
Hierarchy: why Ss_25 matches Ss_25_10_30
Codes in Uniclass and similar systems are hierarchical: Ss_25_10_30 sits under Ss_25_10, which sits under Ss_25. A requirement such as "every wall is classified under Ss_25" should accept the deeper code. Good checkers follow the chain of references; naive ones compare strings and fail elements that are perfectly classified.
Checking classification on a delivery
- Agree system and depth in the BEP "Uniclass 2015, Systems table, to at least level 3, on all physical elements."
- Write it as an IDS specification Applicability: the element classes that must be classified. Requirement: a classification facet with the system and the code pattern.
- Run it on every revision Failures come back per element, with the reason — missing code, wrong system, code outside the allowed range.
- Watch it across versions A comparison between revisions shows classification changes as their own category — useful when cost or FM teams depend on the codes.
Writing the specification is covered in IDS explained; comparing revisions in how to compare two IFC versions; and why classification matters at handover in COBie from IFC.
IFC Classification Explained: Uniclass, OmniClass and How Codes Live in the Model