From a modelling format to a printing format
Slicers such as PrusaSlicer, Cura, Bambu Studio, OrcaSlicer and Chitubox read STL and 3MF. Modelling and scanning tools export OBJ, GLB and PLY. This converter bridges the two: it loads any of those formats, triangulates any faces with more than three corners, drops the parts an STL cannot carry (materials, textures, colours, object names) and writes a binary STL with one 50-byte record per triangle.
Binary rather than ASCII because it is five to seven times smaller and every slicer reads it. If you need the text form for some reason, the binary to ASCII converter takes the output of this page.
Like every tool on this site, the work happens in your browser. The file is read from your device, parsed in memory and drawn with WebGL; no copy is sent anywhere. Open the network panel of your browser's developer tools while you load a model and you will see no upload. Close the tab and the model is gone.
Worked example: a Blender OBJ that would print 1000 times too small
You modelled a 50 mm tall vase in Blender and exported vase.obj with the default settings. Drop it here.
- The preview shows the vase. The status line reads
24,576 triangles(Blender exported quads; each became two triangles),12,290 vertices. - The dimensions panel reads
0.03 x 0.03 x 0.05and shows the unit warning. Blender's scene unit is the metre, so a 50 mm vase is 0.05 units, and a slicer reading the STL as millimetres would print a 0.05 mm speck. This is the single most common reason an OBJ to STL conversion "does not work". - Two fixes. Either re-export from Blender with the scale field set to 1000, or download the STL as is and set the scale to 100000 percent in your slicer. The converter does not scale for you, because it cannot know whether 0.05 was meant to be metres, and guessing wrong is worse than warning.
- Click Download STL. The file is 84 + 50 x 24,576 = 1,228,884 bytes, a little over 1.2 MB.
- Open it in the slicer, check the height reads 50 mm after scaling, and slice.
The same story applies to GLB, which stores metres by definition, so the factor is always 1000, and to PLY from scanners, which is usually already in millimetres and needs no change.
What is kept and what is dropped
| In the source | In the STL |
|---|---|
| Vertex positions | Kept, as 32-bit floats |
| Triangles | Kept |
| Quads and n-gons (OBJ, PLY) | Split into triangles |
| Several objects or meshes (OBJ groups, GLB nodes, 3MF items) | Merged into one shell soup; 3MF and GLB placement transforms are applied first |
| Normals | Recomputed from the triangle winding |
| Materials, textures, vertex colours | Dropped; STL cannot store them |
| Units | Numbers are copied as they are; 3MF units are converted to mm, others are not |
| Object names | Dropped, apart from the 80-byte header |
Limitations
- No scaling. Read the dimensions panel and scale in your slicer or modelling tool if the numbers are off by 25.4 or 1000.
- No hole filling. An open mesh converts to an open STL; run STL repair afterwards to fix normals and duplicates and to see the open-edge count.
- A .gltf with external .bin or image files cannot load them; use .glb.
- Draco or Meshopt compressed GLB is not decoded.
- Multiple objects become one STL. Split them in a slicer or modelling tool if you need separate files.
- Files are held in memory; hundreds of MB of geometry can exceed a phone's limit.
Last updated 2026-09-16. Runs in your browser; nothing is uploaded.