Skip to content
STLBench

Free online GLB to OBJ converter

GLB to OBJ, keeping the UVs and the names

Drop a .glb and download an .obj, unpacked here in the page with no file sent anywhere. This is the gentler of the two ways out of a GLB: texture coordinates survive, so a UV layout someone spent an afternoon on is not lost, and every mesh keeps its own named group instead of being welded into one body. Coordinates arrive in millimetres rather than the metres glTF stores. What cannot come is the texture images themselves — OBJ keeps those in files beside it, and a download is one file.

  • 100% free
  • No signup
  • UVs kept
  • Groups named
  • Nothing uploaded
Convert to

Drag a file anywhere on this page to open it. F fits the view, W switches shading, G the grid, R spins it.

How to convert GLB to OBJ

Three steps, one of which is about what to keep behind.

  1. Drop the .glb

    The scene is unpacked here: meshes, node hierarchy, texture coordinates and materials. A .gltf works the same way, whether it is self-contained or points at a .bin beside it — in the second case drop the siblings, the folder or a zip along with it.

  2. Keep the textures separately

    The OBJ carries the UV layout, so the mapping survives, but the image files do not travel inside it. If you need the textures, keep the GLB as well and pull them from it in whatever package you are importing into — most will extract embedded images on request.

  3. Download the OBJ

    One named group per mesh, coordinates in millimetres rather than the metres the GLB stored, and the node transforms baked in so the assembly holds its shape.

Technical specifications

Reads.glb, and self-contained .gltf
Writes.obj — text, one group per mesh
UnitMetres in, millimetres out — every coordinate × 1000
KeptGeometry, texture coordinates, part names, world positions
LostMaterials and texture images, animation, the node tree
Not readDraco-compressed and KTX2-textured files
File sizeNo fixed limit — past 100 MB you are told what it will cost this tab, then it opens

Frequently asked questions

Why convert a GLB to OBJ at all?

Because the package at the other end predates glTF or never adopted it. OBJ is the closest thing modelling has to a universal import: ZBrush, 3ds Max, MeshLab, Rhino, CAD packages with a mesh importer, academic tools, and a long tail of pipelines that will read an OBJ and nothing newer. GLB is better in every technical respect and younger by three decades, which is exactly the problem.

Do the textures come with it?

The coordinates do, the images do not. OBJ describes materials in a companion .mtl file, which in turn points at image files beside it — three files minimum, and a single download is one file. What you get is a mesh with its UV layout intact, so reassigning the textures in your own package is a matter of pointing at images rather than re-unwrapping anything.

What size will the model be?

Millimetres, converted from the metres the GLB stored. That factor of a thousand is applied here and printed on screen, because OBJ states no unit at all and would otherwise arrive as a model 0.04 of something across. If your destination expects metres, scale by 0.001 on import — but most mesh tools treat OBJ coordinates as millimetres or as bare units, and millimetres is the more useful assumption.

Does the node hierarchy survive?

Flattened into named groups. A glTF scene is a tree — nodes carrying transforms, with meshes hanging off them — and OBJ has one flat list of groups. Each mesh is written at its final world position with its own group name, so the model looks identical and the parts stay individually selectable, but the parent-child structure and any animation are gone.

Why is the OBJ so much bigger than the GLB?

Because it is text. A GLB packs vertex positions as raw binary floats; an OBJ writes each one as digits, with a line per vertex and a line per face. Three to five times the size for identical geometry is normal, and it compresses well if you are storing rather than opening it.

About what OBJ still does better than its age suggests

It is easy to write OBJ off as the old format, and for anything involving materials that is fair — a scheme where the mesh points at a .mtl which points at images has aged exactly as well as it sounds. But two of its decisions have held up. Faces can have any number of corners, so a quad mesh stays a quad mesh instead of being pre-triangulated for you. And groups are just names in a text file, which means a human can open the thing and see what the parts are called.

Those two are the reason this conversion is worth choosing over STL when the destination is a modelling package rather than a printer. STL would give you a single anonymous body with the UV layout discarded; that page exists for when the destination really is a printer and none of it matters.

One caveat on this particular direction: a GLB from a game or a marketplace is built for a renderer, and much of what makes it look good — normal maps, ambient occlusion, a shader — is not geometry at all. The OBJ will hold the shape it actually has, which is often simpler than the picture suggested. Looking at it first settles that in a few seconds.

Where the conversion happens

Every number on this page is worked out by JavaScript running in the tab you are reading it in. The model you open is read straight off your own disk — it is never uploaded, logged or kept, which is also why these tools carry on working after you disconnect from the network.

One clause specific to this page: a GLB is usually a licensed asset, and the licence almost never contemplates a copy on a conversion service. Nothing here leaves the tab — the unpack, the rewrite and the download are all local.