How to convert STEP to glTF
- Load the STEP fileSelect a .step or stp file. The CAD kernel validates the ISO 10303-21 header before any geometry is touched.
- Read the B-rep definitionFaces, edges and trimming curves are read as exact geometry — not as triangles — so curvature is preserved at every detail level.
- Tessellate each faceEvery face is triangulated at the chosen detail level. Draft keeps files small; Maximum tightens the deflection until curved silhouettes look smooth at close range.
- Assemble one meshAll faces are merged into a single triangle set and the result is handed to the exporter.
What happens when STEP is converted to glTF
What a CAD file really stores
STEP and IGES are boundary representations: exact surfaces (planes, cylinders, splines) with trimming curves that delimit each face. There are no triangles anywhere in the file — any triangle you see was computed on the fly.
Tessellation is the whole conversion
The kernel converts each exact face into triangles by recursive subdivision until the chordal error stays under the detail level's deflection. A cylinder tessellated at Draft may be 32 segments; at Maximum it can exceed 512. The triangle count scales with surface curvature, not file size.
Only position and normal survive
The mesh handed to exporters carries vertex positions and normals. Nothing else in the source has a destination in a plain mesh format: feature history, assembly structure, materials, names and PMI annotations are dropped.
What the glTF container adds
glTF wraps the mesh in a scene graph with nodes and accessors. For a converted solid that is one mesh node carrying the merged geometry, but the structure matters for the destination: web viewers, three.js and game engines all consume glTF natively, so no further processing is needed on their side.
JSON with embedded buffers vs the binary GLB
This converter writes .gltf as JSON with base64-embedded buffers, which stays hand-editable and diff-friendly. The same geometry as .glb is roughly 25% smaller because binary buffers skip the base64 expansion; pick GLB when size matters and glTF when text tooling matters.
STEP vs glTF
| STEP solid | JSON glTF mesh | |
|---|---|---|
| Feature | STEP source | glTF output |
| Geometry | Exact B-rep surfaces | Indexed triangle mesh |
| Container | ISO 10303-21 text | JSON document, base64-embedded buffers |
| Coordinate convention | Millimetres by convention | Metres by convention — no rescaling is applied |
| Scene graph | Assembly tree, features | One mesh node |
| Colour and materials | Often present in the source | Dropped; position and normal only |
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
This is a one-way flattening
The STEP feature tree, sketches and constraints cannot be recovered from the mesh output. Keep the source file — the conversion cannot be reversed.
Hollow results mean open edges
If the source solid has faces the kernel cannot sew shut, the tessellated shell can come out with open boundaries. Slicers usually repair small gaps, but check the preview.
Detail level changes file size, not accuracy claims
Higher detail means more triangles and a closer fit to the true surface. It does not make the geometry 'more correct' — the underlying B-rep is exact either way.
Scale convention mismatch
glTF is defined in metres; STEP mechanical parts are almost always millimetres. The converter does not rescale, so a 100 mm bracket exports as 100 units. Viewers that honour the metre convention will show it 100× too large — rescale on import if absolute size matters.
Frequently asked questions
Can I convert on this page itself?
No. This page is the reference for the STEP to glTF 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.
Is the glTF self-contained?
Yes. Vertex and index data are embedded in the JSON as base64, so the .gltf file is one self-contained text file with no external .bin or texture dependencies.
glTF or GLB — which should I pick?
Same geometry, different packaging. GLB is smaller (binary buffers) and what most pipelines expect; JSON glTF is human-readable and easier to post-process with scripts.
Does the assembly structure survive?
No. The solid is merged into one mesh node. Component names and the assembly tree are dropped.
References
- ISO 10303-21:2016 — STEP exchange file structure
- Khronos glTF 2.0 specification
- How this site is built and tested
Related converters
All converters
Last updated: