Free tools / GLB → OBJ
GLB to OBJ.
Extract the static geometry of a GLB or embedded glTF as Wavefront OBJ. Coordinates stay in glTF metres with Y up; normals and texture coordinates are kept, materials and animation are not.
Specification
What this tool does
Loads a self-contained GLB or embedded glTF without decoding images, bakes node transforms and instances, uses bind geometry for skinned meshes and writes the result as OBJ in the same metre, Y-up frame.
- Inputs
- GLB, or glTF with embedded buffers
- Outputs
- OBJ text with positions, normals and UVs in metres, Y up; one object per mesh
- Controls
- None; coordinates are copied from the glTF scene
- Limits
- Model 64 MiB per file; expanded geometry is bounded at 1,000,000 vertices
- External .bin or image files are rejected before any request
- No MTL, textures, skin or animation in the output
Privacy: Files are parsed, previewed and written back inside your browser. Nothing is uploaded, no account is needed and no generation credits are spent.
Maintained by Bake3D · Updated
Extract static geometry from a GLB
GLB is the binary container for glTF 2.0. One file can hold a scene graph, meshes, PBR materials, textures, a skeleton, skin weights, morph targets and animation. OBJ holds polygon geometry with optional normals and texture coordinates, and nothing else. Converting GLB to OBJ is useful when a sculpting, CAD or rendering application needs the shape but not the runtime features, or when a pipeline step only accepts OBJ.
This converter loads a self-contained GLB or a glTF with embedded buffers, bakes every node transform, expands instanced meshes, uses bind geometry for skinned meshes and writes the static result as Wavefront OBJ. Images inside the GLB are never decoded because the output cannot use them; that keeps large textured assets fast to convert and avoids fetching anything.
Convert and keep the glTF frame
- Choose a
.glbor embedded.gltffile up to 64 MiB, or try the sample wedge. - Inspect the preview, the mesh count and the reported dimensions in metres.
- Download the OBJ.
- Import it into the destination and confirm a known dimension and the up axis.
The OBJ keeps glTF’s coordinate conventions: metres, Y up, right-handed. No scale or rotation is applied, so a 1.8 m character remains 1.8 units tall in the OBJ. Applications that treat OBJ as centimetres or Z up will show the model small or lying down; apply the unit and axis conversion in the destination, or convert to a print-oriented STL with the GLB to STL converter, which adds a millimetre scale control.
Each glTF mesh becomes one o object in the OBJ. Node names are used when present, and instances are numbered. Hierarchy is flattened because OBJ has none; the world position of every part is baked into its vertex coordinates.
What is kept, what is dropped
Positions, normals and the first UV set are written when the source has them. Normals are recomputed only for meshes that lacked them. Texture coordinates are preserved so you can reattach textures in an editor, but the textures themselves, the PBR material parameters, vertex colours, tangents and morph targets are not part of the output and no MTL file is written.
Skinned meshes are written in their bind pose, not in the first frame of an animation. If you need a posed snapshot, pose the character in an editor and export a static mesh from there. Animation clips, cameras and lights are dropped. Reflected transforms get a winding correction so mirrored parts do not appear inside out, and unused vertices are removed so the bounds match the visible geometry.
Hidden nodes are skipped. Draco or meshopt compressed geometry needs a decoder this single-file tool does not ship; re-export uncompressed. External .bin or image files are rejected before any network request is made, so a glTF that references sidecar files must be repackaged as a GLB first.
Use the right tool for the job
This is a geometry extraction, not a conversion of the whole asset. If you need the materials, keep the GLB and import it directly: Blender, Godot and three.js read glTF natively, and Unity uses glTFast. The Blender import guide shows what survives a native import, including textures and animation that OBJ cannot carry.
If the GLB came out of the Bake3D studio, note that the studio’s own export tab also offers a static OBJ of the current pose with UVs. Use this free converter for GLB files from any other source, or when you want the bind pose rather than a posed frame.
Common questions
Why is the OBJ grey and untextured?
OBJ cannot embed textures, and this converter deliberately skips decoding the GLB’s images because nothing in the output could use them. UVs are kept, so you can reassign the original texture images in your editor. Keep the GLB if you need the full material.
Why is the model tiny or lying down?
The numbers are glTF metres with Y up. A destination that assumes centimetres shows a 1.8 m character as 1.8 cm; one that assumes Z up shows it on its side. Set the import unit and axis in the destination, or use the STL route when you need millimetres and Z up.
Why does a skinned character come out in a different pose than my animation?
The converter writes bind geometry. Animation and morph targets are not evaluated because OBJ has no way to store them, and choosing a frame would require a timeline this tool does not have. Pose the model in an editor and export from there.
What do the tests cover?
Automated tests convert a glTF triangle with a node translation, read the OBJ back with an independent loader and confirm the translated bounding box and the metre dimensions. They also assert that no network request is made while the GLB’s texture references are ignored, and that a glTF with an external buffer is rejected before any fetch. The shared flattening stage has its own tests for instances, reflected transforms, hidden meshes and bind geometry. These are software checks on fixtures; confirm your own asset in the destination application. The glTF 2.0 specification defines the units and coordinate system the converter preserves.
Other free tools
- JPG → STLphoto · lithophane
- Image → STLrelief · generator
- FBX → OBJbinary + ascii
- 3MF → STLbinary stl
- GLB → STLgltf too
- OBJ → GLBfor the web
- STL → OBJmm · ascii
- OBJ → STLfor printing
- STL checkerinspect · report
Need to generate a textured mesh, add a rig and create animation? Open the studio with 60 free credits.