local engine

IFC → STL

Free IFC to STL Converter

Yes. Drop an IFC file, choose STL and download. IFC is in metres and STL is assumed to be millimetres, so the mesh prints a thousand times too large unless you scale it on import.

Converting IFC to STL extracts the triangulated geometry of every building element and writes it as a flat list of STL facets. This is the path for 3D-printing a building component — a column capital, a facade detail, a scale model piece — straight from the BIM model. The kernel triangulates each element, project coordinates line the parts up, and the STL writer emits slicer-ready facets.

Drop an IFC file, get STL Reads IFC, writes STL here .ifc → .stl Pick an IFC file, export STL
  • 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 STL

  1. 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.
  2. 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.
  3. 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.
  4. Merge and exportThe triangulated elements are merged into one mesh and written in the target format.

What happens when IFC is converted to STL

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 drops the entire semantic layer.

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 declares its length unit in the project's IfcUnitAssignment — usually metres, but millimetres and feet also occur. glTF and USDZ assume metres by convention, and the conversion does not rescale, so check the header if the model looks wrong.

Printing a building element: what to check first

STL carries no units, and IFC coordinates arrive exactly as the project declares them. A slicer that assumes millimetres will render a 3-metre wall as 3 mm when the file is in metres. Either scale the part in the slicer (usually by 1000x for metre-to-millimetre) or confirm the bounding box before printing.

What an element carries, and what an STL can keep

Every IFC product is a typed object before it is a shape. An IfcWall owns a global ID, an owner history with creation metadata, an object type, a name, a material association, a set of property sets and a quantity set, and only then a representation. None of that has a destination in a facet record: binary STL gives each triangle three vertices and a normal, and reserves nothing else except two unused attribute bytes. So the conversion keeps the outer skin of the building and discards the model’s entire reason for existing. If your workflow depends on filtering by class, reading fire ratings or counting volumes per storey, that analysis has to happen in the BIM tool against the IFC; the STL is for printing, coordination visuals and massing studies.

Storeys, layers and relationships disappear

The spatial structure of a project is expressed through relationships rather than nesting: IfcRelAggregates ties a site to its buildings and storeys, IfcRelContainedInSpatialStructure lists which elements sit on which storey, and IfcRelDefinesByProperties attaches property sets to objects. Wall composition lives separately in IfcMaterialLayerSetUsage, which records the order and thickness of each leaf of a cavity wall. An STL stores no relationships of any kind, so after conversion a façade is one continuous shell in which the boundaries between storey, wall, slab and cladding panel exist only as coincident triangles. Splitting a model back into printable panels is a geometric selection task in a mesh editor, not something the file can tell you.

Where the model sits in space decides whether it survives

Each element is placed through a chain of IfcLocalPlacement transforms, composing element, storey, building and site offsets into project coordinates. Real survey-coordinate projects can place a building hundreds of thousands of metres from the project origin, and that matters because STL stores coordinates as 32-bit floats, which carry roughly seven significant decimal digits. A vertex 500,000 m out is then resolved only to within tens of millimetres, and two surfaces that should meet exactly can end up a centimetre apart. The practical answer is to reset the shared coordinates or export a local, origin-near view in the BIM application before converting. Large offsets are also what make a converted model spin oddly around a distant origin in a viewer.

Why a big IFC file stops with a memory error

An IFC file is unusually efficient for what it holds, which is exactly the problem: a fifty-megabyte model can describe a whole campus, because most of it is text and references rather than geometry. The reader has to expand that into explicit triangle soup inside the browser tab, and WebAssembly runs in a 32-bit linear memory that cannot grow past roughly four gigabytes. Every mesh copy, index buffer and per-element transform competes for that single heap, so the tab runs out of memory long before the source file size looks alarming. Converting one building or one storey at a time is the reliable workaround; there is no streaming mode.

Which representations actually produce geometry

An element may carry several representations, and only the view the reader understands contributes triangles. Faceted breps, triangulated face sets and mesh representations come through directly. Swept-area solids and extrusions have to be expanded into facets first, which the kernel does for the common cases. Boolean and clipped representations are the fragile ones, and an element whose only usable shape is one of those can contribute nothing, leaving a visibly incomplete model while the conversion itself reports success. If a specific element type keeps vanishing, re-export it from the BIM tool as a faceted or brep representation.

IFC vs STL

IFC building modelSTL facets
FeatureIFC sourceSTL output
GeometryTriangulated per element by the kernelFacet soup, one merged body
UnitsMetres (declared project-wide)None — plain numbers
ConsumerBIM tools (Revit, ArchiCAD, Blender+BIM addon)Cura, PrusaSlicer, any slicer
Detail controlNone — kernel triangulationn/a
SemanticsRich element modelDropped

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

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.

The IFC reader is loaded by the workspace, not by this page

An IFC file needs a second kernel, and putting it in front of every landing page would make the documentation heavier than the conversion it describes. The button at the top of this page opens the workspace with IFC to STL already selected; that page fetches the reader on demand, so the round trip is one click and the file still never leaves your device.

Frequently asked questions

Can I 3D-print a whole storey?

Technically the conversion will try, but a full storey produces a huge, non-manifold tangle. Extract or isolate the element you actually want to print in your BIM tool first.

Why is the STL in metres when slicers expect millimetres?

STL stores no unit. The numbers come straight from the IFC, which is metres. Scale by 1000 in the slicer, or check its import unit setting.

Do wall layers or materials survive?

No — the conversion keeps one triangle mesh per element set. Material layers, finishes and profiles are dropped.

Can I convert on this page itself?

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

Which IFC schema versions are read?

The reader accepts the ISO 10303-21 physical file layout that both IFC2X3 and IFC4 use, and it works from the element geometry rather than the schema definitions, so a newer or unusual schema does not change what appears in the output. What does change the output is which representation an element carries. A file that opens in a BIM viewer but produces a partial STL is normally missing usable shape representations on the absent elements rather than being rejected for its schema header.

Can I convert one storey or one building only?

Yes, and it is the most useful thing to know about large models. Export a filtered IFC from the BIM application with only the storey, building or selected elements included; the converter has no concept of a storey because spatial grouping arrives as relationships rather than geometry, so there is nothing for it to slice on. Selecting before export also keeps you inside the browser memory limit and produces a mesh you can position on a build plate without hunting through a campus.

Does the STL preserve wall layers or the order of leaves?

No. The layer stack of a cavity wall is defined by IfcMaterialLayerSetUsage, which lists materials and thicknesses as data attached to the element. A conversion to a mesh format keeps only the outer surface triangles of whatever representation was used, so the internal leaves, the cavities and the material order are simply not in the file. If you need a printable section that shows the layers, generate that geometry in the BIM tool as a solid and convert the result.

Why do two surfaces that should touch leave a gap?

Usually a coordinate-precision problem rather than a modelling error. STL coordinates are 32-bit floats with about seven significant digits, and a project placed far from its origin loses absolute resolution, so vertices that meet exactly in the model land millimetres apart in the file. Re-export with the project origin near the geometry. Where the gap survives that change, it came from the source: elements in different buildings or linked models are frequently placed with rounding that never actually coincides.

References

Related converters

All converters

Last updated: