Convert a 3D model to a printable STL — scaled to real millimetres, turned Z-up, and told plainly whether it is watertight.
Scale. STL stores bare numbers with no unit attached, and every slicer reads those numbers as millimetres. A glTF model authored to the usual convention — a character about 1.8 units tall — therefore arrives in Cura as a 1.8 mm speck. This is the single most common reason a converted model "does not work", and it is not a bug in either format: STL simply has nowhere to record what a unit meant. So this page asks for the real printed size and scales the geometry to it.
Orientation. glTF is Y-up. Cura, PrusaSlicer and Bambu Studio expect Z-up. Convert without rotating and your model arrives lying on its face, which is survivable but means re-orienting it by hand every time. The Z-up toggle is on by default for that reason.
A slicer has to decide, for every point in space, whether it is inside the model or outside it. That question only has an answer if the surface is closed — no gaps, every edge shared by exactly two faces. A mesh that fails this renders perfectly and slices into nonsense: hollow shells, missing layers, or an outright refusal to load.
Converting to STL does not fix it, and no converter that claims to should be believed without saying how. What this page does instead is tell you: the result reports how many open boundary loops and non-manifold edges the model has, before you spend an hour of print time finding out. When it says closed and manifold, it sliced cleanly in testing.
When it does not, the repair tool welds the seams and closes the loops, and you convert the cleaned model.
Text-to-3D output from Meshy, Tripo, Rodin and the rest is generated as a surface, not as a solid. The generator has no concept of manufacturability — it is optimising for how the model looks from the outside, and nothing in that objective rewards a closed volume. So the exports arrive with duplicate vertices along every seam, small disconnected fragments floating inside the mesh, and boundary loops where two surfaces nearly met.
None of that is visible in the preview image the generator hands you, and all of it matters to a slicer. Turning the cleanup on here handles the routine cases: seam duplicates are welded so the surface becomes connected topology, and stray islands under fifty triangles are dropped so the slicer is not asked to print debris.
Colour, texture, materials and UVs. STL is a list of triangles and nothing else — the format has no field for any of it. If your model is textured, the texture is simply gone, and that is the format's limit rather than a shortcoming of the conversion. For colour printing you want 3MF or OBJ+MTL instead.
Animation and skeletons go the same way. A rigged model is exported in whatever pose it currently holds, frozen. If you want a specific pose, set it before converting.
And wall thickness is not checked. A shape can be flawlessly watertight and still have a 0.2 mm blade that no nozzle can produce. That check depends on your printer and your nozzle, so it belongs in your slicer.
The output is binary STL — 50 bytes per triangle, plus an 84-byte header. ASCII STL encodes the same data as text and runs roughly five times larger for no benefit; every slicer reads binary.
That fifty-bytes-per-triangle figure is worth knowing because it makes STL file size a pure function of triangle count. A 300,000-triangle AI model is a 15 MB STL no matter how simple the shape looks, and a slicer will be slow on it. Printing does not need that density — the nozzle cannot resolve it. Running the model through the polygon reducer at 20–30% first gives you a file your slicer opens instantly and a print you cannot tell apart.
Drop the file above, set the printed size in millimetres, and download. The two steps people miss when doing it elsewhere are both handled here: STL has no units so the geometry has to be scaled to the size you actually want printed, and glTF is Y-up while slicers expect Z-up so the model has to be rotated. Skip either and the model arrives in Cura as a millimetre-tall speck lying on its side.
Because STL stores unitless numbers and slicers read them as millimetres. A glTF character authored at 1.8 units becomes 1.8 mm. Set the longest-axis value on this page to the real size you want and the export is scaled to match.
No — STL is a list of triangles with no field for colour, texture or material. This is the format, not the converter. If you are printing in colour, export 3MF or OBJ+MTL from a tool that supports them.
The result tells you. It reports open boundary loops and non-manifold edges, which are the two conditions that make a mesh unprintable — a slicer cannot decide what is inside a surface with gaps in it. If either count is above zero, run the model through the repair tool first, which welds seams and fills the loops.
Yes, FBX drops in directly. A rigged character is exported in its current pose, frozen — STL has no skeleton. Note that most character models are surfaces rather than solids, so expect the watertight report to have something to say.
For a dense model, yes. Binary STL costs 50 bytes per triangle regardless of how simple the shape is, so a 300,000-triangle AI model is a 15 MB file that will make your slicer crawl. Your nozzle cannot resolve that detail anyway — keeping 20–30% of the triangles usually produces an identical print from a file that opens instantly.
No, and nothing that does not know your printer honestly can. Thin-wall limits depend on nozzle diameter and material. A model can be perfectly closed and still have features too fine to print — that check belongs in your slicer, which knows the machine.
Binary. It is about five times smaller for identical data and every slicer reads it. ASCII STL is only worth having if you intend to read the file by hand.
No. Parsing, cleanup, scaling and STL writing all happen in your browser tab.