How to convert GLB or glTF to OBJ
A GLB is a whole scene. An OBJ is one mesh. The conversion has to flatten the first into the second, and it matters how.
Steps
- Open the mesh converter.
- Drop your
.glbfile on the page. It is read on your machine; nothing is sent anywhere. - Pick OBJ in the format list.
- Press Convert. In Chrome or Edge you choose the destination file first and the result is written to it as it is produced, so the size of the output is limited only by your disk.
A .gltf file works too, as long as its data is inside the file — either in the JSON as a data: URI, or as the single binary chunk of a .glb. A .gltf that points at a separate .bin next to it cannot be read from a single dropped file; convert the .glb instead.
What flattening means
glTF arranges meshes in a node tree, and each node carries a translation, rotation and scale. A mesh may also be split into several primitives, one per material. To produce a single OBJ, the converter walks the default scene, multiplies each node's transform down the tree, applies the result to every vertex, and merges all primitives into one mesh in scene order.
Normals get the inverse-transpose of the transform rather than the transform itself, so they stay perpendicular to the surface under a non-uniform scale, and are then re-normalised to unit length.
What is kept and what is lost
- Kept: positions, normals, texture coordinates and vertex colour.
- Lost: materials and textures, cameras, lights, animation, skinning and the node hierarchy itself. OBJ has no way to express any of them.
- Note: glTF positions are 32-bit floats by specification, so that is the precision available to the output whatever format you pick.
Primitives that are not triangles — point and line modes — are skipped, because OBJ faces are polygons.
Going the other way
The converter also writes GLB. The result is a single-mesh, single-node scene with no material, which is what a format holding only geometry can honestly produce. It passes the Khronos reference validator.