local engine

IFC → OBJ

Free IFC to OBJ Converter

IFC is a building information model: geometry wrapped in storeys, element types, global IDs and property sets. OBJ is a text mesh with vertices, faces and nothing else. Converting one to the other keeps the shapes and discards the building semantics, which makes the result useful for editing, rendering or repair, and useless as a record of what the model meant.

IFC → OBJ
workbench
Open the IFC to OBJ workbench .IFC · IFC2x3 and IFC4 · web-ifc Convert in browser →
  • Full-size 3D preview before you download
  • 28 input formats and 8 output formats, four detail levels for CAD sources
  • Reads the file in your tab — nothing is uploaded
224conversions here
28mainstream formats
0 Buploaded anywhere

How to convert IFC to OBJ

  1. Drop the .ifc fileThe workspace loads web-ifc on demand, opens the model and streams its element meshes. The file is read in the tab and never uploaded.
  2. Wait for the geometry passEach element's mesh and placement matrix are read, and transforms are applied so every element lands in world coordinates. Elements without a usable mesh representation contribute nothing.
  3. Set the scaleIFC is in metres and OBJ is unitless. Multiply by 1000 in the workspace scale control if the receiving tool expects millimetres, or scale on import.
  4. Convert to OBJThe exporter writes Wavefront text: vertex positions, normals and faces. Materials are not written, so the OBJ has no companion .mtl and no colour.
  5. Import and inspectOpen the OBJ in a modelling tool, confirm the dimensions, and check for missing elements or open shells before using it downstream.

What happens when IFC becomes OBJ

BIM semantics do not cross the boundary

An IFC file is an object-oriented building model. A wall is an IfcWall with a global identifier, a containment relationship to a storey, material associations, property sets and quantities, and only then a shape representation. OBJ knows vertices, texture coordinates, normals, faces and groups. There is no field for a class, an identifier or a property, so all of the semantic layer is dropped before the first vertex is written. What remains is the shape.

Geometry is streamed per element

web-ifc walks the spatial structure and returns a flat mesh per element, each with a geometry and a placement transformation. The workspace applies that matrix and collects the triangles, using the element colour for the preview where one is available. Elements whose representation the kernel cannot tessellate simply produce no geometry. That is why an IFC that looks complete in a BIM viewer can convert to an OBJ with gaps.

Metres in, unitless out

IFC coordinates are metres by specification. OBJ has no unit declaration, and most importers assume millimetres unless told otherwise. The exporter copies coordinates through unchanged, so a metre-scale building arrives a thousand times too small in a millimetre-defaulting tool. Scaling is a manual decision in the workspace or on import, exactly as with STL.

Materials, properties and hierarchy are lost

The OBJ writer emits positions, normals and faces, and no material library. IFC's colour assignments, material layers and property sets therefore disappear. Object grouping may survive in a generic form, but storey containment and element types do not, so the exported file cannot be filtered by building semantics. Treat the OBJ as a shape for editing or rendering, and keep the IFC as the record.

IFC vs OBJ

IFC sourceOBJ output
Model typeBuilding information modelPlain polygon mesh
UnitsMetres by specificationNone
SemanticsClasses, GlobalIds, storeys, propertiesNone
MaterialsAssociations and colour assignmentsNo material library written
GeometryElement representations, often pre-meshedVertices and faces in world space
StructureSpatial hierarchy and containmentFlat groups
Readerweb-ifc, fetched on first useNot applicable
PurposeDesign coordination and facilities dataEditing, rendering and repair

Supported formats

FormatReadWriteNotes
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)YesYesBinary and ASCII triangles, no units
OBJ (.obj)YesYesv / vn / f records; .mtl references ignored
PLY (.ply)YesYesBinary position and normal arrays
GLB / glTF (.glb .gltf)YesYesglTF 2.0, binary or JSON with data URI
3MF (.3mf)YesYesOPC/ZIP package, declares millimetres
FBX (.fbx)Yes–Binary and ASCII, static mesh only
DAE (.dae)YesYesCollada scene graph is flattened
3DS (.3ds)Yes–Legacy chunk-based 3D Studio format
AMF (.amf)Yes–XML, ZIP-compressed packages supported
USDZ (.usdz)YesYesZIP containing a USD stage

Known limitations and why a conversion can fail

The kernel arrives from a CDN

The model is never uploaded, but web-ifc is fetched from jsDelivr on the first IFC conversion in a session. A blocked network stops the conversion before the file is read.

Missing elements

Only elements with a representation web-ifc can tessellate contribute geometry. Parametric or unsupported representations can yield nothing, leaving visible gaps in the OBJ.

No materials, no semantics

Colours are preview-only and the OBJ has no material library. GlobalIds, classes, storeys and properties are not exported in any form.

Large models exhaust memory

Building models can hold millions of triangles. Convert a sub-model or a single storey if the tab runs out of memory before the export completes.

Frequently asked questions

Can I convert on this page itself?

No. This page is the reference for the IFC to OBJ 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.

Why does the first IFC conversion need a network connection?

Because the IFC kernel is a WebAssembly library, web-ifc 0.0.78, fetched from a content delivery network the first time it is needed. The model file itself is never uploaded; only the library is downloaded, and only once per session. On a locked-down network that fetch is the thing that fails, not the IFC file. Every other format on this site uses kernels served from this domain.

Why is my model a thousand times too small in Blender?

Because IFC is authored in metres and OBJ declares no unit. The exporter writes the coordinates it read, so a three-metre wall becomes coordinates around 3.0, and an OBJ importer that defaults to millimetres reads it as three millimetres. Set the import scale in Blender to 1000, or apply the factor with the workspace scale control before exporting. Nothing in the OBJ records the intended unit.

Where did the colours and element names go?

The IFC reader does read per-element colours for the preview, but the OBJ exporter writes geometry only and produces no material library. Element colours are therefore lost, and although object groups may appear with generic names, the IFC semantics behind them — GlobalId, IfcClass, storey, property sets, quantities — have no representation in OBJ at all. Keep the IFC as the authoritative record.

Why are some walls or elements missing?

Because web-ifc streams geometry only for elements that carry a representation it can tessellate. Elements whose shape is expressed through parametric operations, booleans or unsupported representation types can produce no triangles, and they are skipped rather than approximated. The conversion reports success because the elements it did read are valid; the gap is in the source geometry, not in the exporter.

Why does a large building model fail?

Because a browser tab has a finite WebAssembly address space and a building model can contain millions of triangles across hundreds of elements. The kernel streams meshes into memory and the OBJ text is generated on top of that, so a large model can exhaust the tab before anything is written. Export a single storey or a sub-model from the BIM authoring tool, then convert that.

Is OBJ the right output for a BIM model?

It depends on the destination. OBJ is editable text, widely accepted by modelling and repair tools, and it retains object groups, which makes it a good intermediate for cleanup or rendering. For the web or AR, GLB is the better target and preserves the preview materials. For printing, STL or 3MF is more direct. None of them preserve IFC semantics.

References

Related converters

All converters

Last updated: