Skip to main content
Guide

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.

Portrait of Sujit Koji

Written by

Published 4 min read

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

Targets offered for each source format
Targets offered for each source format
SourceTargets you can choose
GLBGLTF, OBJ, STL, PLY, 3MF, FBX, OFF
GLTFGLB, OBJ, STL, PLY, 3MF, FBX, OFF
OBJGLB, GLTF, STL, PLY, 3MF, FBX, OFF
STLGLB, GLTF, OBJ, PLY, 3MF, FBX, OFF
PLYGLB, GLTF, OBJ, STL
3MFGLB, GLTF, OBJ, STL, FBX, OFF
FBXGLB, GLTF, OBJ, STL, PLY, 3MF, OFF
OFFGLB, 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.

GLBKit Convert panel open beside a loaded model, headed GLB → Convert to:, with target format buttons grouped under Scene & Material, Mesh and Point Cloud.
The Convert panel. Its header names the detected source format, and the grid below lists only the targets valid for it.

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.

What each conversion target preserves and discards
What each conversion target preserves and discards
TargetKeepsLoses or changes
GLBGeometry, PBR materials, textures, animations, skins, scene hierarchyNothing the source file already contained
GLTFSame scene data as GLB, split across a .gltf, .bin and texture filesSingle-file packaging
OBJVertex positions, normals, UVs, face groups, MTL materialsVertex colours, animation, skinning, scene hierarchy
STLTriangle geometry and normalsMaterials, textures, colours, UVs, hierarchy
OFFTriangle geometryVertex colours, materials, textures, animation
PLYGeometry, normals, vertex colours, or a point cloudImage textures and materials
3MFGeometry, materials, colours, print metadataTexture export is not implemented
FBXGeometry, materials, skeleton, animation, embedded texturesglTF 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.

When to convert, and when not to
When to convert, and when not to
GoalUseBecause
Deliver a web asset in one requestConvert to GLBGeometry, 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 OBJConvert to OBJOBJ plus MTL is what that pipeline reads, even when the original was a better format.
Pass a model through a review tool that accepts GLTFConvert to GLTFThe reviewer wants the JSON structure; the .bin and textures travel alongside it.
Reduce file sizeDo not convertSize is driven by geometry and texture resolution. Re-export the source asset with lower settings instead.
Improve texture qualityDo not convertEvery target copies textures as they are. Upscaling has to happen in the modelling tool.
Fix a broken fileUsually notRound-tripping through a lossier format to clean a file will drop more than it repairs.
Produce a version for a colleague who lacks your DCCConvert to OBJIt 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.

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.

Was this guide helpful?