How to convert IFC to GLB
- Load the IFC fileSelect an .ifc file. The web-ifc kernel validates the ISO 10303-21 (STEP) physical file structure and reads the IFC schema (IFC2X3 or IFC4) before geometry is touched.
- Extract element geometryEvery product element — walls, slabs, columns, beams — is triangulated by the kernel in its own placement context. Only elements with representable solids contribute geometry.
- Apply project coordinatesElement meshes are transformed from local placements into the shared project coordinate system, so the parts line up as they do in a BIM viewer.
- Write and exportEach element is written as its own node, keeping its IFC express ID as the node name, and the scene is packed into the target format.
What happens when IFC is converted to GLB
IFC is semantics first, geometry second
An IFC file is a building information model: every wall, door and storey is a typed object with relationships, properties and a spatial hierarchy. Geometry is just one attribute of many. Converting to a mesh format keeps the shapes and one node per element, but drops properties, relationships and the storey hierarchy.
Triangulated by web-ifc, not by tessellation settings
Unlike STEP, IFC geometry arrives already triangulated by the kernel — swept solids, extrusions and B-reps are converted internally. There is no user-facing detail level for IFC; the triangle count is what the kernel emits.
Units come from the IFC project
IFC does not fix one global unit: the project's IfcUnitAssignment declares length, and metres, millimetres and feet all appear in real files. glTF assumes metres by convention, so a model authored in another unit keeps its numeric coordinates and may need scaling on import. Check the header rather than assuming — STEP files work the same way.
Why GLB is the natural target for BIM geometry
GLB keeps the coordinates exactly as the kernel emits them, carries normals for clean shading, and opens in three.js, Babylon, Blender and Windows 3D Viewer without plugins. For web-based model sharing — the most common reason to leave IFC — it is the shortest path.
IFC vs GLB
| IFC building model | Binary glTF mesh | |
|---|---|---|
| Feature | IFC source | GLB output |
| Model type | BIM: typed elements + relationships | Triangle meshes, one per element |
| Geometry | Triangulated per element by the kernel | Indexed mesh with normals |
| Units | Declared in IfcUnitAssignment (m, mm, ft) | Metres by convention, not rescaled |
| Structure | Spatial hierarchy (site/storey/space) | One node per element, hierarchy lost |
| Properties | Rich (materials, fire ratings, types) | Dropped |
Supported formats
| Format | Read | Write | Notes |
|---|---|---|---|
| STEP (.step .stp) | Yes | – | ISO 10303 B-rep, AP203 / AP214 / AP242 |
| IGES (.iges .igs) | Yes | – | Entity-based surfaces, up to 5.3 |
| BREP (.brep) | Yes | – | OpenCascade native B-rep |
| STL (.stl) | Yes | Yes | Binary and ASCII triangles, no units |
| OBJ (.obj) | Yes | Yes | v / vn / f records; .mtl references ignored |
| PLY (.ply) | Yes | Yes | Binary position and normal arrays |
| GLB / glTF (.glb .gltf) | Yes | Yes | glTF 2.0, binary or JSON with data URI |
| 3MF (.3mf) | Yes | Yes | OPC/ZIP package, declares millimetres |
| FBX (.fbx) | Yes | – | Binary and ASCII, static mesh only |
| DAE (.dae) | Yes | Yes | Collada scene graph is flattened |
| 3DS (.3ds) | Yes | – | Legacy chunk-based 3D Studio format |
| AMF (.amf) | Yes | – | XML, ZIP-compressed packages supported |
| USDZ (.usdz) | Yes | Yes | ZIP containing a USD stage |
Known limitations and why a conversion can fail
Properties, types and relationships are dropped
Fire ratings, material sets, storey assignment and element relationships have no destination in a mesh file. The conversion is geometry extraction, not model conversion.
Large IFC files hit browser memory
Real-world IFC exports routinely reach 50-500 MB. The kernel streams what it can, but very large models can exhaust the tab's memory — split the model by discipline or storey in your BIM tool for reliable results.
Only element geometry with a solid representation converts
Spaces, annotations, grids and 2D drawings are skipped. An IFC that is mostly documentation can legitimately yield little or no geometry.
Measured on this machine
An IFC building model converted three times, with the GLB parsed for triangle count and size. Time is the median, from dropping the file to the finished download.
| Triangles | GLB size | Time |
|---|---|---|
| 14,660 | 1.01 MB | 1.64 s |
119 elements became 119 nodes, named with their IFC express IDs, and 119 materials, all near-white. The file declares millimetres in its unit assignment but its coordinates are metre-scale (25.3 × 5.9 × 9.7), which is exactly why the header matters more than the assumption. Sample: example.ifc, 414 KB, two storeys. Tested on Chrome 156 / Windows 10 / Intel i7-7700K / 16 GB.
Frequently asked questions
Can I convert on this page itself?
No. This page is the reference for the IFC to GLB path, and the conversion itself runs in the workspace that the button above opens, with both formats already selected. Your file is read in that browser tab and the download is written locally, so there is no upload stage in either place. Keeping the documentation and the engine on separate addresses lets file support and detail levels change behind one workspace without breaking the page you are reading.
Does the GLB keep storeys or element names?
No. Each element becomes its own node, named with its IFC express ID, but the storey hierarchy and element metadata are dropped. Split by storey in your BIM tool before converting if you need separate files.
Why convert IFC at all instead of sharing the IFC file?
IFC viewers are heavy and the files are large. A GLB is 10-100x smaller, opens in any web viewer, and is what AR and game engines expect.
Which IFC versions are supported?
IFC2X3 and IFC4, which cover the overwhelming majority of files in the wild.
References
- buildingSMART IFC 4.3
- web-ifc — IFC geometry engine
- Khronos glTF 2.0 specification
- How this site is built and tested
Related converters
All converters
Last updated: