Cookies for analytics and advertising
We use cookies for analytics and advertising, both sent to Google. Refusing changes nothing you can see.Read the privacy page
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.
Up to 100 files at once. Mixed formats are fine.
They convert one after another and download together as a ZIP.
GLB to STL
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
| GLB | STL | |
|---|---|---|
| Full name | Binary glTF | Stereolithography |
| File extension | .glb | .stl |
| Media type | model/gltf-binary | model/stl |
| First published | 2016 | 1987 |
| Published by | Khronos Group | 3D Systems |
| Specification | glTF 2.0 | — |
| Licensing | Open standard | Open standard |
| Standing today | Current | Current |
| Opens in a browser | No browser | No browser |
| Considered instead | GLTF, OBJ | 3MF, OBJ, PLY |
Blender reads both GLB and STL, so there is a way to check the result against the original without a second tool.
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.
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.
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.
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.
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.
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.
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.
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.