Back to the BIM & IFC blog
Validation · 2026-06-03 · 12 min
How to Validate an IFC File Before You Send It (Free, No Upload)
Your BEP says 'deliver a quality IFC' but never defines how to check it. Here are the three real ways to validate an IFC file — the buildingSMART service, IfcOpenShell, and an in-browser health check — what each one actually catches, and the pre-send checklist that stops models being rejected at the CDE.
How to Validate an IFC File Before You Send It (Free, No Upload) — IFC Viewer Online article cover
Almost everyone exports an IFC and sends it. Almost no one checks it first — not because they don't care, but because 'validate the IFC' is genuinely ambiguous. Validate against what? The schema? The project requirements? Whether it'll open in the coordinator's tool? Those are three different questions with three different tools, and conflating them is why so many models get rejected at the Common Data Environment.
This is the practical map: what 'valid' means, the three ways to check it, what each one will and won't catch, and the checklist to run in the ten minutes before you hit send.
The 60-Second Answer
If you just need the model checked before a deadline, this is the whole workflow:
- Export to a local folder — never straight to the CDE.
- Open the file in a browser validator: it parses locally, so nothing is uploaded.
- Read the Health Score, then sort the issues by severity rather than by count.
- Fix the causes in the authoring tool — Revit, ArchiCAD, Tekla — and re-export. Never hand-edit the IFC.
- Re-check, confirm a Health Score of 80 or above, then upload and record the score on the transmittal.
The rest of this article is why each step is there, and which tool to reach for when the fast route isn't enough.
What 'Valid' Actually Means
There are two layers, and they're independent. A file can pass one and fail the other.
Schema validity
Does the file conform to the IFC standard (ISO 10303-21 syntax, IFC schema, MVD rules)? A file can be schema-valid and still be useless for coordination.
Practical health
Will it actually work downstream? Stable GUIDs, correct spatial hierarchy, named elements, sensible coordinates, present property sets. This is what gets models rejected — and it's not what schema checkers measure.
There is a third layer above these two: checking the model against your project's own information requirements with buildingSMART IDS. That belongs to the EIR rather than to the file itself, and it has its own guide — see IFC Model Checker: schema, quality and IDS. This article stays on the two layers you have to clear before any delivery.
Option 1: The buildingSMART Validation Service
The official, free, web-based service from buildingSMART International. It judges conformity against the IFC standard: STEP syntax, schema compliance, normative rules, and buildingSMART Data Dictionary alignment. It produces an authoritative pass/fail report — this is the reference for schema correctness.
- Best for: certifying that a file conforms to the IFC standard, especially for formal or contractual schema-conformance claims.
- What it doesn't do: it isn't a practical 'is this good enough to coordinate' score, and you upload the file to a service — a non-starter for confidential project data you can't send to a third party.
Option 2: IfcOpenShell (for developers)
If you write Python, IfcOpenShell validates from the command line: python -m ifcopenshell.validate model.ifc. It's scriptable, free, runs locally, and integrates into CI pipelines for teams that automate QA.
# Validate an IFC file locally with IfcOpenShell
python -m ifcopenshell.validate path/to/model.ifc
# Pipe the results into your own pre-delivery checks
python validate_and_score.py model.ifc
- Best for: developers and BIM-automation teams who want validation inside a script or build pipeline.
- What it doesn't do: there's no 3D view and no one-click report — a coordinator who just wants to know if the model is OK won't install Python for it.
Option 3: An In-Browser Health Check (30 Seconds)
Drag the IFC into the viewer. It parses client-side via WebAssembly — nothing is uploaded — runs 44 practical validation rules in a background thread, and returns a single Health Score from 0 to 100 plus a per-issue breakdown you can see against the 3D model. This is the layer the other two don't cover: a fast, private, practical judgment of whether the model is fit to send.
Validate a model live
Open the buildingSMART duplex to see a clean Health Score and report, then drop in your own export to check it before delivery. Your file never leaves your machine.
IFC2x3 · 2.4 MB
Open the interactive IFC viewer
What Each Tool Actually Catches
The three options aren't competing answers to one question — they cover different failures. This is the honest breakdown:
| Check | buildingSMART service | IfcOpenShell | Browser health check |
|---|
| STEP / schema conformance | Yes — authoritative | Yes | Basic integrity only |
| Normative rules and bSDD | Yes | Partial | No |
| Duplicate or malformed GlobalIds | Partial | Partial | Yes |
| Spatial hierarchy and orphan elements | No | Partial | Yes |
| Coordinates far from the origin | No | No | Yes |
| Missing property sets and names | No | No | Yes |
| Single deliverability score | No | No | Yes — Health Score 0–100 |
| Issues navigable against the 3D model | No | No | Yes |
| Runs without uploading the file | No | Yes | Yes |
| Scriptable in CI | Via API | Yes | No |
Coverage as of August 2026. "Partial" means the failure is detectable but not reported as a named, actionable issue.
Which One to Use, When
Use the in-browser health check when…
- You want to know if a model is fit to send, right now
- The file is confidential and can't be uploaded anywhere
- You need a number to put in a transmittal or BEP
- You want to see issues against the 3D model, not just a log
- You are a coordinator, not a developer
Use buildingSMART / IfcOpenShell when…
- You need authoritative schema-conformance certification
- You are automating QA inside a CI pipeline (IfcOpenShell)
- You write Python and want scriptable checks
- A contract requires a formal standard-conformance statement
- You need MVD / bSDD compliance specifically
The Practical Pre-Send Checklist
Whatever tool you use, these are the things that actually get models rejected. Each maps to a validation rule with a step-by-step fix guide:
- No duplicate or out-of-range GlobalIds.
- Every physical element sits inside a storey, not directly under Site or Building.
- Exactly one IfcProject at the root, with a complete spatial hierarchy.
- No orphan elements and no broken aggregates.
- Coordinates are sensible — the model is near the world origin, not kilometres away.
- Standard property sets are present; elements are named.
- Health Score ≥ 80 before any CDE upload.
When the Score Comes Back Low
A low score is rarely a verdict on the model — it's a pointer at the export settings. Almost every failure traces back to one of five causes, and each is fixed in the authoring tool, not in the IFC:
| What the report says | Usual cause | Where to fix it |
|---|
| GlobalIds changed since the last issue | The export regenerates GUIDs instead of persisting them | Authoring tool export settings |
| Elements outside any storey | Levels not flagged as 'Building Story' on export | Level settings in Revit |
| Model far from the origin | Exported in survey coordinates instead of shared/project coordinates | Coordinate setup before export |
| High share of IfcBuildingElementProxy | Families with no IFC class mapping | IFC export mapping table |
| Property sets missing | Pset export disabled, or parameters never mapped | Export configuration |
Each of these has its own walkthrough: Why IFC GUIDs Change on Every Export, Why Your Revit IFC Export Breaks, IFC Coordinates Are Wrong and IFC Properties Missing After Export.
Turning the Check Into a Rule
A check that depends on someone remembering to run it isn't a quality process. Put the threshold in the BEP, and attach the evidence to the delivery:
| Delivery stage | Minimum Health Score | Evidence to attach |
|---|
| Internal concept review | 70 | Score only |
| Coordination round / CDE upload | 80 | Score + issue report |
| ISO 19650 milestone, LOD 300+ | 90 | Score + issue report + resolved-issue log |
Once the threshold is agreed, the rest is repetition: export locally, validate, fix the cause, re-export, deliver with the score attached. For the wider picture of what quality means across a whole project, see The Complete Guide to IFC Quality.
How to Validate an IFC File Before You Send It (Free, No Upload)