Convert GLB to STL

Converting GLB to STL pulls the triangles out of a single-file glTF model and writes the binary file a slicer expects. The conversion itself is uncomplicated; what decides whether you get a print is the model inside, because an asset built to be rendered is usually a set of surfaces rather than a solid.

  • Where it runs In your browser. The file is never uploaded.
  • Rebuilt STL works differently from a GLB, so this is not the gradual degradation a lossy codec applies. What STL can express is reproduced faithfully; what it has no equivalent for does not survive at all.
  • File size limit Up to 100 MB per file, free, without an account.
  • Worth knowing Geometry only. Materials, colours, textures and animation are not carried across, and a model placed several times comes back with each copy baked into its own position.

Up to 100 files at once. Mixed formats are fine.

A GLB was modelled to be looked at, not to be made

This is the sentence the rest of the page follows from. A renderer draws whatever polygons it is given from whichever side the camera happens to be on, so an artist has no reason to close a shape that will never be seen from inside. A cape can be a single sheet with no thickness. A window can be one plane. An arm can pass through a torso rather than join it, because the seam is hidden.

A slicer cannot work that way. It has to decide, for every layer, which regions are inside the object and which are outside, and that question only has an answer if the surface is closed. So the conversion succeeds and the model still fails, and the failure appears in the slicer rather than here. Knowing that in advance turns a confusing afternoon into a twenty-minute repair.

Zero thickness is the commonest reason a converted GLB will not slice

A surface with no thickness has no volume, and a printer cannot deposit material into no volume. Slicers respond in one of two ways: they ignore the region entirely, so the cape or the leaf or the sail is not printed at all, or they produce a single-extrusion-wide sliver that fails on the first layer.

The fix is a modelling operation rather than a conversion setting. Blender’s Solidify modifier gives a flat surface a thickness in one step and is the usual answer; a millimetre or two is enough for most decorative geometry. Do it before converting, in the source model, where the geometry is still organised into named objects you can pick out. Doing it afterwards means selecting the right shell out of one undifferentiated triangle list.

Intersecting parts, and whether the slicer merges them

A character model is typically a set of separate closed pieces that overlap: head into neck, hand into sleeve, sword through a fist. Every mesh found in the GLB is written into a single STL, so those pieces arrive as separate shells occupying the same space.

Modern slicers handle this better than their reputation suggests — both PrusaSlicer and Cura union overlapping closed volumes and produce a sensible result — but only if each piece is itself closed. A closed head intersecting a closed neck is fine. A head with a hole in it intersecting anything is not, and the union propagates the problem rather than hiding it. If the print comes out with strange internal walls, overlapping shells that are individually broken is the first thing to check.

Inverted faces in the GLB, and what the STL does with them

Face winding decides which side of a triangle is the outside. A renderer with backface culling switched off does not care, so an artist can leave a flipped face in place for years without noticing. A slicer cares a great deal: a patch of inverted faces makes a region that reads as inside-out, and the result is a hole in the print or a solid block where a cavity should be.

The STL writer recomputes each face normal from the winding order rather than copying anything from the source, which means the stored normals are internally consistent — and it cannot fix a winding that was wrong to begin with. Blender’s Face Orientation overlay shows the outside in blue and the inside in red, and Mesh, Normals, Recalculate Outside fixes most cases in one keystroke. That is worth doing in the source, before converting.

Scale: the GLB counted in metres and the slicer counts in millimetres

Neither format declares a unit, and the two ecosystems settled on different assumptions. glTF and GLB are authored as though one unit is one metre; every slicer treats one STL unit as one millimetre. The numbers pass through the conversion untouched and their meaning changes underneath them, so a model that filled a viewer arrives on the build plate as a speck.

Multiplying by 1000 is right for a GLB exported by a tool that followed the convention and wrong for one exported by a CAD package that was already working in millimetres. Rather than guessing, pick a dimension you can verify — a base width, a known height — and check it after scaling. Two seconds of arithmetic against one failed print is not a close call.

Draco compression stops a GLB before anything is read

Models distributed for the web are very often Draco-compressed, because the extension can halve the download. The vertex data then sits in a compressed stream that needs its own decoder, and that decoder is not shipped here. The conversion stops with a named message rather than producing a broken file.

The remedy is a re-export. `gltf-transform` will decode it — `gltf-transform dedup input.glb output.glb` and similar commands write an uncompressed file — and Blender will import the model and export it again without Draco. If the model came from a marketplace, the download page frequently offers an uncompressed variant alongside the web-optimised one, and taking that is quicker than any tooling.

Node transforms are baked, so the STL keeps the arrangement

A GLB places its meshes with a scene graph: a node holds a matrix, its children inherit it, and one mesh can appear several times in different places. The converter walks that graph from the default scene, composes each node’s matrix with its parent’s, and applies the result to the vertices before writing them.

The consequence is that the arrangement you saw in the viewer is the arrangement you get, which is what you want. What is lost is the instancing: a model that placed one bolt mesh twelve times arrives with twelve full copies of the bolt geometry and twelve times the triangles. For printing that is unimportant, since the plate needs twelve bolts anyway. For file size it is the reason a converted STL can be much larger than the source suggested.

How large the STL is, and how many triangles came across

The arithmetic is fixed: eighty-four bytes of header plus fifty bytes per triangle, with no vertex sharing anywhere in the format. A 300,000-triangle model is 15 MB as an STL whatever it was before. The free ceiling is 100 MB, which is around two million triangles and well past what most slicers enjoy.

If the triangle count is far lower than the model advertised, the reason is usually that some primitives were not triangle lists. glTF mode 4 is triangles; strips and fans, modes 5 and 6, are skipped rather than converted, as are points and lines. A model exported by a tool that emits strips converts to less than it contains, and comparing the slicer’s reported triangle count against the source’s is the way to notice.

Checking the STL before you commit filament to it

Load it and read what the slicer says before pressing anything. PrusaSlicer reports the number of open edges and offers to repair; Cura marks the model and can repair on import. Windows has no answer of its own any more — Microsoft deprecated 3D Builder in July 2024 and pulled it from the Store — so on Windows the slicer is the first line. Blender’s 3D-Print Toolbox is the most informative of the group — it counts non-manifold edges, zero-area faces, thin regions and self-intersections, and jumps the viewport to each one.

Do the repair after scaling rather than before. Every one of those tools works to a tolerance, and a tolerance applied to a two-millimetre model removes detail that the same tolerance leaves alone on a two-hundred-millimetre one. Scale, repair, then look at the sliced preview rather than at the model — a cross-section halfway up tells you in one glance whether the walls are where you think they are.

When a GLB is not worth converting at all

If the model is interesting because of its texture — a painted figure, a scanned object, a product render — an STL throws away the reason it was worth having. Nothing about the conversion is wrong; the format has no colour at all, and a grey print of a painted model is a disappointment that could have been predicted.

If the model is very dense, say beyond a million triangles, look for a lower-resolution download before converting rather than decimating afterwards. And if the model was purchased, read what the licence permits: marketplace terms routinely cover use in a rendered scene and are silent on physical reproduction, which is a separate right and occasionally an expensive assumption.

How to turn a GLB model into an STL for printing

  1. Drop the .glb onto this page, or click to choose it.
  2. The scene graph is walked and the triangles written as a binary STL, in your browser.
  3. Scale in the slicer, run a repair check, and look at the sliced preview before printing.

GLB and STL: a rendered asset against a printable solid

GLB compared with STL
GLBSTL
Full nameBinary glTFStereolithography
File extension.glb.stl
Media typemodel/gltf-binarymodel/stl
First published20161987
Published byKhronos Group3D Systems
SpecificationglTF 2.0
LicensingOpen standardOpen standard
Standing todayCurrentCurrent
Opens in a browserNo browserNo browser
Considered insteadGLTF, OBJ3MF, OBJ, PLY

Opening the result

Blender reads both GLB and STL, so there is a way to check the result against the original without a second tool.

What each format is for

The two are aimed at different work: GLB at the web and handing a finished file over, STL at 3D printing. That is worth weighing before converting, because the reason one exists is usually the reason the other is awkward.

GLB is Khronos Group's format, published in 2016. The specification is glTF 2.0, and it is worth reading if the file has to outlive the tool that wrote it.

STL comes from 3D Systems and dates from 1987. Blender, PrusaSlicer and Cura all read it.

STL was published in 1987 and GLB in 2016. The older one is generally the safer file to hand to somebody; the newer one usually does the job in fewer bytes.

GLB to STL: repairs, scale and what is lost

Are my GLB files uploaded anywhere?

No. This conversion runs entirely inside your browser, so the file never leaves your device. You can confirm it yourself: open the network tab of your browser's developer tools and convert something. You will see the page load, plus the analytics and advertising the site is paid for with — and nothing carrying your file.

Will a GLB from a model marketplace print?

Often not without work. Rendering assets are frequently built from surfaces with no thickness, parts that pass through each other, and inverted faces, none of which affects a render and all of which a slicer has to resolve. Convert first, then check in a repair tool.

What does "non-manifold" mean when my slicer says it?

That the surface does not cleanly separate an inside from an outside — an edge shared by one face or by three, or a hole. The slicer has to guess where the plastic goes. PrusaSlicer and Cura both offer to repair it on load and usually succeed on small defects.

Why is the model the wrong size on the plate?

Because a GLB is conventionally authored in metres and a slicer reads an STL as millimetres. A model that looked correct in a viewer arrives a thousand times too small. Scale it against a dimension you can verify rather than by eye.

The conversion says something about Draco. What is that?

Draco is a geometry compression extension, widely used on models distributed for the web, and its decoder is not shipped here. Re-export the model without Draco, or run gltf-transform with Draco disabled, and the file reads normally.

Do the colours survive?

No. Textures, base colour, vertex colours and UV coordinates are all dropped, because an STL has nowhere to keep them. If the model is worth printing because of its colour, an STL is not the file to print it from.

Is my model uploaded anywhere?

No. The GLB is read and the STL written by JavaScript in this tab, with no engine download and no request carrying the file. Purchased assets often come with terms that forbid uploading them, so this is the practical route as well as the private one.

More about these formats