STL to GLB converter
Drop your .stl file — we convert it to .glb right in your browser. Files never leave your computer.
Why convert STL to GLB?
Adding a 3D preview of a printed part to a shop listing, portfolio, or documentation page means hitting GLB — STL does not load in <model-viewer> natively. This conversion is the easiest way to make a printable STL embeddable on any website or AR viewer.
Who runs this conversion
Etsy / Thangs / Printables sellers embedding previews on their listings, makers showing finished prints on personal sites, AR-curious hobbyists wanting one-tap AR from a mobile link.
Things that commonly go wrong
- STL normals are per-face — the resulting GLB shades faceted unless you weld vertices first (Blender: Merge by Distance).
- GLB embeds all geometry in one file. High-poly prints balloon fast; consider Draco compression for mobile.
- No material info survives because STL has none — expect a flat default grey PBR surface unless you re-author.
Technical note for this tool
Three.js STLLoader → BufferGeometry with vertex-welding → GLTFExporter binary. A default metallic-roughness material is embedded so the model renders out of the box.
STL vs GLB— what's the difference?
Triangle-mesh format that every 3D printer slicer understands. Geometry only — no units, colours, or assemblies.
- Universal 3D printing format — Cura, PrusaSlicer, Bambu Studio all speak STL
- Tiny, simple, extremely fast to load
- Great for meshing workflows, simulation pre-processors, quick previews
- Triangulated approximation — curved surfaces lose precision
- No colour, material, or assembly data
- One shell per file by convention (multi-body gets flattened)
Binary glTF — the JPEG of 3D. Self-contained, small, and loads natively on the web, in AR, and in every modern 3D engine.
- Everything (geometry, textures, materials, animations) packed into one file
- Tiny and fast — designed for streaming and web delivery
- Native support in Blender, Unity, Unreal, three.js, <model-viewer>, Android ARCore…
- PBR materials (metallic-roughness) render consistently everywhere
- Binary — not hand-editable
- Less common in traditional CAD pipelines
Deeper context on the formats
STL — where it came from
Invented by 3D Systems in 1987 for the first commercial stereolithography machine (hence the name — "STereoLithography"). It was supposed to be a throwaway internal format; nearly four decades later it is still the default hand-off between CAD and every slicer on the market, simply because nothing else got universal support in time.
- STL has no units — a file authored in inches and re-opened in a metric slicer prints at 1/25.4 scale. Always confirm the source units before slicing.
- Non-manifold meshes (holes, flipped normals, internal walls) slice silently but print as unsolvable garbage. Run the mesh-repair tool before wasting filament.
- ASCII STL is ~5× larger than binary STL with zero benefit — always export binary unless you specifically need to diff the file.
Real-world use: Every FDM and SLA slicer (Cura, PrusaSlicer, Bambu Studio, Lychee, Chitubox) reads STL as a first-class input. Simulation pre-processors (Ansys, Abaqus) also consume STL for meshing. Fabrication-on-demand services (Shapeways, JLCPCB's 3D print arm, Protolabs) accept STL uploads directly.
GLB — where it came from
glTF 2.0 was ratified by the Khronos Group in 2017 and quickly became the W3C-recommended format for web 3D. GLB is the "one-file-to-rule-them-all" binary packaging — geometry, textures, animations, and the scene graph all in a single .glb. Adoption was explosive because <model-viewer>, Android Scene Viewer, and every modern game engine landed support almost simultaneously.
- The PBR material model assumes linear-space textures — DCC tools that export gamma-baked colour maps will look washed-out in web viewers.
- Draco mesh compression bloats load time if the decoder is not preloaded; turn it off unless you actually need the bandwidth savings.
- Y-up vs Z-up: glTF is strictly right-handed Y-up. Blender, 3ds Max, and most CAD exports need an axis flip on import or the model lies on its side.
Real-world use: E-commerce product pages (IKEA, Amazon, Shopify 3D), Android AR Quick View, <model-viewer>-powered docs, NFT marketplaces, and real-time configurators. If a 3D asset has to render in a browser tab without plugins, the answer is GLB.
How to convert STL to GLB
- 1Drop a .stl file onto the page. Binary or ASCII STL both work. Everything runs locally.
- 2Preview the mesh in 3D and confirm the geometry looks right.
- 3Click Download .GLB. Embed in three.js, <model-viewer>, Unity, Unreal, or Android ARCore.
FAQ
Why convert STL to GLB?
STL is a 3D-printing interchange format with no material or colour. GLB is the web-native 3D format — tiny, self-contained, and renders natively in every browser and AR runtime. If you want to show the model online, GLB is what you want.
Will the GLB be smaller than the STL?
Roughly comparable. Binary STL and GLB both pack vertices tightly; GLB adds small scene metadata but compresses vertex indices more efficiently. Expect ±20%.
Does it add a material?
GLTFExporter writes a default PBR metallic-roughness material so the model is visible. STL carries no material data, so there is nothing to preserve — set a proper material in your target engine.
Can I drop the GLB into <model-viewer> for a web AR button?
Yes — that is the canonical use case. Combine with an Android ARCore-compatible Scene Viewer link and you have one-tap AR from any mobile browser.
Is anything uploaded?
No. Three.js loads the STL in your browser and re-exports GLB via GLTFExporter. The file never leaves your machine.