How to Convert 3D Models Online
Convert between GLB, GLTF, OBJ, STL, PLY, 3MF, FBX and OFF in your browser — which pairs are actually offered, what each target format keeps, and how to tell a conversion bug from an expected loss.
What conversion actually does
Converting a 3D file is not a file-format swap. It is a decision about what the destination format is able to represent, followed by a translation into whatever it can hold. Everything interesting about conversion follows from that: some pairs are near-identity, some throw away most of the scene, and a few are refused outright because the output would be meaningless.
GLBKit runs the whole process in your browser — the scene is loaded, re-serialised into the target structure and handed back as a downloadable file, with nothing transmitted. That is also why conversion can be stepped through and inspected: the model is in the viewport before you convert it and the result can be loaded back in without a round trip. When you want to know what is worth keeping before choosing a target, the 3D Model Analyzer will tell you what the source actually contains.
Before converting, you can also inspect the source in the 3D Model Viewer to confirm that the geometry, materials and textures loaded as expected.
Step by step
Load the model you want to convert
Drop the file onto the GLBKit workspace. Formats that point at external buffers, materials or textures should be uploaded as a .zip so their references resolve. Uploads are capped at 150 MB.
Open the Convert panel
The panel header shows the detected source format followed by “Convert to:”. The target list is built from the source format, so it only shows pairs that are genuinely supported.
Choose a target format
Available targets are GLB: GLTF, OBJ, STL, PLY, 3MF, FBX, OFF, and similarly for each other source. The same-format conversion is never offered.
Run the conversion
Conversion runs in the browser and moves through Preparing, Converting and Ready. Large scenes take longer because the geometry is re-serialised rather than copied.
Check the result before downloading
On success the panel shows the output filename plus Download and Start over, and two shortcuts that load the converted file straight into the Viewer or the 4K Screenshot panel.
Download the converted file
Click Download to save the artifact. GLTF output arrives as a multi-file package; every other target is a single file.
Which targets are offered for each source
The target list is derived from the format you loaded, not from a fixed menu. That is deliberate: an empty or missing entry means the pair is not implemented, rather than that the conversion failed. If the format you need is not in the list, there is no route to it through GLBKit — sometimes because the formats are incompatible, sometimes simply because that combination is not implemented.
| Source | Targets you can choose |
|---|---|
| GLB | GLTF, OBJ, STL, PLY, 3MF, FBX, OFF |
| GLTF | GLB, OBJ, STL, PLY, 3MF, FBX, OFF |
| OBJ | GLB, GLTF, STL, PLY, 3MF, FBX, OFF |
| STL | GLB, GLTF, OBJ, PLY, 3MF, FBX, OFF |
| PLY | GLB, GLTF, OBJ, STL |
| 3MF | GLB, GLTF, OBJ, STL, FBX, OFF |
| FBX | GLB, GLTF, OBJ, STL, PLY, 3MF, OFF |
| OFF | GLB, GLTF, OBJ, STL, PLY, 3MF, FBX |
Note that PLY offers only four targets while GLB offers seven. That is the point-cloud distinction explained below, not an inconsistency.

What each target format keeps
Every target here can represent less than a full scene. The table below is the part worth memorising, because most disappointing conversions are explained by one row of it.
| Target | Keeps | Loses or changes |
|---|---|---|
| GLB | Geometry, PBR materials, textures, animations, skins, scene hierarchy | Nothing the source file already contained |
| GLTF | Same scene data as GLB, split across a .gltf, .bin and texture files | Single-file packaging |
| OBJ | Vertex positions, normals, UVs, face groups, MTL materials | Vertex colours, animation, skinning, scene hierarchy |
| STL | Triangle geometry and normals | Materials, textures, colours, UVs, hierarchy |
| OFF | Triangle geometry | Vertex colours, materials, textures, animation |
| PLY | Geometry, normals, vertex colours, or a point cloud | Image textures and materials |
| 3MF | Geometry, materials, colours, print metadata | Texture export is not implemented |
| FBX | Geometry, materials, skeleton, animation, embedded textures | glTF PBR values are mapped onto the FBX material model |
If you need to understand the differences between the two most common web delivery formats, see the GLB vs GLTF guide.
Meshes, scenes and point clouds
Two distinctions explain almost every missing target.
Point clouds are not meshes
A PLY file, a PCD file or a LAS/LAZ scan can contain a point cloud rather than a surface. Converting points to a triangle mesh requires deciding how to reconstruct a surface, and different algorithms give different results — so GLBKit does not make that decision for you. A point-cloud source converts only to targets that can carry points, which is why PLY offers a narrower list than a mesh source.
CAD is tessellated on load
STEP and STP describe solid geometry as B-Rep surfaces — exact curved boundaries, not triangles. Converting to a mesh format means tessellating those surfaces into polygons, and the result looks exactly like what you saw in the viewer. Curved edges will be faceted at whatever resolution the tessellation used, and the original surfaces are not recoverable from the converted file.
Same-format conversion is never offered
GLB to GLB is not in the list because it would do nothing. The panel omits it rather than offering a round trip that produces a different file with identical content.
Telling a bug from an expected loss
When a converted file looks wrong, work through this order. It distinguishes the two real causes quickly.
1. Did the target format ever carry that data?
Check the limits table first. Converting a textured model to STL and being surprised that it is grey is not a bug — STL has no texture fields. Most apparent failures are this.
2. Did the source actually contain the data?
Open the Info panel before converting. If Materials or Textures is empty in the source, no target can have preserved it. A source file that loaded untextured usually had a companion-file problem, so the conversion faithfully reproduced a model that was already missing its textures.
The 3D Model Analyzer is useful here because it lets you inspect the source geometry, materials, textures and bounds before comparing the converted result.
3. Compare the two side by side
The success panel offers shortcuts that load the converted artifact straight into the Viewer, so you can compare it against the original without downloading. Use the Analyzer panel on both and compare mesh counts: a large discrepancy points at a real problem, while a matching count with different appearance points at materials.
You can also open the 3D Model Viewer to inspect the converted file directly in the browser.
When converting is the right answer
Conversion is the right tool when the consumer of the file cannot read what you have. The wrong tool when you want to make the file smaller or nicer — neither of those is a format problem, and neither is solved by exporting to a different extension.
| Goal | Use | Because |
|---|---|---|
| Deliver a web asset in one request | Convert to GLB | Geometry, materials and textures end up in a single file with no sidecar paths to break. |
| Hand a file to an engine or tool that needs OBJ | Convert to OBJ | OBJ plus MTL is what that pipeline reads, even when the original was a better format. |
| Pass a model through a review tool that accepts GLTF | Convert to GLTF | The reviewer wants the JSON structure; the .bin and textures travel alongside it. |
| Reduce file size | Do not convert | Size is driven by geometry and texture resolution. Re-export the source asset with lower settings instead. |
| Improve texture quality | Do not convert | Every target copies textures as they are. Upscaling has to happen in the modelling tool. |
| Fix a broken file | Usually not | Round-tripping through a lossier format to clean a file will drop more than it repairs. |
| Produce a version for a colleague who lacks your DCC | Convert to OBJ | It is the most broadly readable interchange format there is. |
One caveat on the size row: converting to GLB from a glTF folder does usually shrink the download, because everything becomes one request instead of many. That is a packaging win, not a compression win — the geometry and pixel data inside are unchanged.
If you are specifically preparing a model for web delivery, the GLB vs GLTF guide explains when the single-file GLB package is the better choice.
FAQ
Are conversions lossless?
Not in general, and the honest answer is that no conversion between these formats can be. GLB and glTF carry the same scene data, so conversions between them lose only packaging. Moving to STL, OFF or PLY discards materials and textures, because those formats have nowhere to put them. The Convert panel lists only pairs that are supported, and each target has documented limits.
Which formats can I convert to?
Eight output formats are available: GLB, GLTF, OBJ, STL, OFF, PLY, 3MF, FBX. The targets offered for your file depend on its source format — for example a GLB can become GLTF, OBJ, STL, PLY, 3MF, FBX or OFF, while a PLY mesh offers GLB, GLTF, OBJ and STL. The panel never shows a pair that would fail.
Why is my target format missing from the list?
Two reasons. The panel lists only implemented pairs, so an absent entry means that conversion is not offered rather than that it failed. Separately, GLBKit treats point clouds and meshes differently: a PLY or PCD point cloud can only go to point-cloud and scene targets, because generating surfaces from points is a modelling decision the tool does not make for you.
Can I convert a STEP file?
Yes. STEP is tessellated into triangles when it loads, and the converted mesh carries the CAD colours where the source defined them. The original B-Rep surfaces are not preserved — what you get is the tessellated geometry you saw in the viewer.
What happens to textures when I convert to STL or OFF?
They are dropped. Both formats store geometry only: STL holds triangles and normals, OFF holds triangles. Neither has material or texture fields, so a default material is applied on export. If appearance matters, convert to GLB, GLTF, OBJ, PLY or 3MF instead.
Why does my OBJ output have no vertex colours?
OBJ has no vertex colour channel in the form GLBKit writes. It preserves vertex positions, normals, UVs, face groups and MTL materials, but not per-vertex colour — that data is dropped on export. PLY is the target that carries vertex colours through.
Does converting to glTF produce one file?
No. glTF output is a multi-file package: the .gltf JSON, a .bin buffer and the texture images. That is the format's normal structure rather than a limitation of the conversion. Choose GLB if you want a single self-contained file.
Does the converter upload my file?
No. Conversion runs entirely in your browser, which is why the panel reports Preparing and Converting states rather than a server job. Files up to ${UPLOAD_LIMIT_MB} MB are handled the same way as anything else in the workspace.
How long does a conversion take?
It scales with geometry and texture volume, because the scene is re-serialised rather than copied. A dense mesh with large textures will spend most of its time in the Converting state. Nothing is lost by waiting for the Ready state.
How do I verify the converted file?
Use the shortcuts in the success panel, which load the converted artifact directly into the Viewer or the Screenshot panel so you can compare it against the original without downloading. Then open the Info panel on the result and confirm the mesh and material counts match what you expect.
Related guides
Convert a 3D model
Load a file and <Link href="/3d-tools?panel=convert" className={highlightLinkClass}><strong>Convert panel</strong></Link> offers the targets valid for its format. Conversion runs in your browser, with files up to 150 MB.