local engine

STL → GLB

Free STL to GLB Converter

STL is a printing format: bare triangles, no unit, no colour, no names. GLB is a delivery format: one binary glTF file with a scene, materials and a defined unit convention that web viewers and phones understand. Going from the first to the second adds a container and a coordinate convention, but it cannot recover information the STL never had — and the unit change is large enough to notice immediately.

STL → GLB
workbench
Open the STL to GLB workbench .STL · binary or ASCII Convert in browser →
  • Full-size 3D preview before you download
  • 28 input formats and 8 output formats, four detail levels for CAD sources
  • Reads the file in your tab — nothing is uploaded
224conversions here
28mainstream formats
0 Buploaded anywhere

How to convert STL to GLB

  1. Drop the .stl fileBinary and ASCII STL are both read in the tab. There is no upload, queue or account step, and the geometry is never sent anywhere.
  2. Decide the scaleSTL numbers are commonly millimetres and glTF coordinates are metres. Apply 0.001 in the workspace scale control if that is your source, or leave it at one when the STL was already authored in metres.
  3. Convert to GLBThe exporter builds a glTF scene containing the mesh, writes a default physically based material, and packs the buffers into one binary .glb file.
  4. Rotate for Y-upSTL has no declared up axis and printing convention is Z-up. If the part should stand in a glTF viewer, rotate it about X in the viewer or before export.
  5. Test in the target runtimeOpen the GLB in the viewer or engine that will ship it, confirm the bounding box and check that the material renders as intended. Add compression there if file size matters.

What happens when STL becomes GLB

A facet stream becomes a scene

STL's structure is minimal: an 80-byte header, a 32-bit facet count and, for each triangle, a normal, three vertices and an attribute word. It has no scene graph, no object names, no material references and no unit. GLB is a binary glTF container holding a JSON scene description plus its buffers and images in one file. Building one from the other means creating a node, a mesh, a primitive, accessors for positions and normals, and a material — none of which the STL supplied.

The unit change is the visible one

glTF defines its coordinates in metres. STL defines nothing, but the printing world writes millimetres. A 100 mm cube therefore has vertices at 0 and 100 in the STL, and a glTF viewer interprets 100 as one hundred metres. The scale control is the bridge. Applying 0.001 produces a 0.1-metre cube, which is the same physical object. Skipping the step produces a model that is technically valid and comically large.

Normals and winding come along

Binary STL stores a facet normal with each triangle, and the exporter carries the geometry's normals into the glTF accessors. glTF also uses counter-clockwise winding for front faces; an STL whose facets were written inconsistently can therefore show dark or inverted faces in a viewer even though it sliced correctly. Recalculate normals in a mesh tool if shading looks wrong. STL's attribute word is ignored, as it almost always is.

Delivery versus manufacturing

The two formats serve different ends of a pipeline. STL is what a slicer consumes; GLB is what a browser, phone or game engine consumes. Round-tripping loses nothing that STL had, but it cannot restore colour, materials or part names that were never in the file. If the asset needs to be edited or repaired, OBJ is the more practical text-based destination; if it needs to be displayed, GLB is the right one.

STL vs GLB

Binary STL sourceGLB output
ContainerFlat facet streamBinary glTF with JSON and buffers
SceneNoneNodes, mesh, primitive, material
UnitsNone; printing convention is millimetresMetres by specification
Up axisUnspecified; printing convention is +Z+Y
ColourNoneMaterial slot, default neutral here
TextureNoneSupported by the format; no source data here
CompressionNoneNone at this stage; Draco or meshopt can follow
PurposeSlicer inputWeb, AR and engine delivery

Supported formats

FormatReadWriteNotes
STEP (.step .stp)Yes–ISO 10303 B-rep, AP203 / AP214 / AP242
IGES (.iges .igs)Yes–Entity-based surfaces, up to 5.3
BREP (.brep)Yes–OpenCascade native B-rep
STL (.stl)YesYesBinary and ASCII triangles, no units
OBJ (.obj)YesYesv / vn / f records; .mtl references ignored
PLY (.ply)YesYesBinary position and normal arrays
GLB / glTF (.glb .gltf)YesYesglTF 2.0, binary or JSON with data URI
3MF (.3mf)YesYesOPC/ZIP package, declares millimetres
FBX (.fbx)Yes–Binary and ASCII, static mesh only
DAE (.dae)YesYesCollada scene graph is flattened
3DS (.3ds)Yes–Legacy chunk-based 3D Studio format
AMF (.amf)Yes–XML, ZIP-compressed packages supported
USDZ (.usdz)YesYesZIP containing a USD stage

Known limitations and why a conversion can fail

No colour survives, because none exists

STL has no colour channel, so the GLB receives a default material. This is not a lost feature but a missing input; convert from a coloured source if appearance matters.

Scale and orientation are manual

Neither format declares a unit or an up axis in a way that can be trusted, so both corrections are decisions for you. The workspace exposes scale; rotation belongs in the viewer or a modelling tool.

Open and non-manifold meshes stay that way

A GLB viewer will happily display an open shell that a slicer would reject. The converter does not repair topology, and glTF has no requirement for watertight solids.

Large STL files load slowly

ASCII STL is verbose and binary STL duplicates every vertex. A dense mesh can be slow to parse in a browser tab. Decimate the source or convert a smaller part if loading stalls.

Frequently asked questions

Can I convert on this page itself?

No. This page is the reference for the STL to GLB path, and the conversion itself runs in the workspace that the button above opens, with both formats already selected. Your file is read in that browser tab and the download is written locally, so there is no upload stage in either place. Keeping the documentation and the engine on separate addresses lets file support and detail levels change behind one workspace without breaking the page you are reading.

Why does my GLB look enormous in a web viewer?

Because STL numbers are usually millimetres while glTF coordinates are defined as metres. A 100 mm part becomes a model whose coordinates reach 100, and a glTF viewer places it in a scene a hundred metres wide. Multiply by 0.001 in the workspace scale control before export, or apply the equivalent scale in the viewer or engine. There is no automatic conversion, because the STL does not actually declare that its numbers are millimetres.

Why is the model lying on its side?

Because printing works Z-up and glTF works Y-up. An STL exported from a slicer-oriented tool has its vertical axis along Z, while glTF viewers treat Y as up. The geometry is copied without a rotation, so a standing part arrives on its back. Rotate minus ninety degrees about X in the viewer, or fix the orientation in a modelling tool before conversion. Neither format records an up axis, so this cannot be resolved automatically.

Can I get colours or materials into the GLB?

Only a default material. STL has no colour channel, so the converter assigns a neutral physically based material when it builds the glTF. There is nothing in the source to map to base colour, metallic-roughness or textures. If the asset needs real materials, the STL is the wrong starting point; go back to the coloured source or author the material in a glTF editor after conversion.

Does GLB keep the STL's duplicate vertices?

The converter writes the triangle geometry it read, and binary STL stores every triangle's three vertices independently. The glTF exporter may index or preserve that layout depending on the geometry it receives, so the GLB is not necessarily smaller than the STL. What GLB adds is a real container, a material and a scene, not compression. Compression is a separate step, typically Draco or meshopt applied afterwards.

Is GLB better than OBJ for the web?

Yes for delivery. A GLB is a single file with embedded buffers, a scene graph and PBR materials, which is what three.js, model-viewer, Unity and most AR runtimes expect. OBJ is text and needs a separate .mtl for appearance. The site offers both conversions; use GLB when the destination is a browser or a phone, and OBJ when the destination is a modelling or repair tool that prefers plain text.

Can I convert an ASCII STL too?

Yes. The reader accepts both the binary and the text flavour of STL. ASCII files are much larger for the same geometry and parse more slowly in the tab, but the resulting GLB is identical because both flavours describe the same triangles.

References

Related converters

All converters

Last updated: