GLB, glTF, OBJ, STL, FBX, PLY, 3MF, DAE, USDZ, ZIP · up to 250 MB · or drop it here
Pick an OBJ with its MTL and textures, or a glTF with its .bin, in one go. A ZIP that holds them works too.
Or try a model made on this site
Drop a 3D model to convert it. The file stays in this tab; nothing is uploaded.
STL to OBJ converter
The STL to OBJ converter reads a binary or ASCII STL in your browser and writes an OBJ with a plain gray MTL, zipped together. STL carries no unit, so it is read in millimetres unless you choose centimetres, metres or inches, and the OBJ is written Y-up in metres for 3D apps.
STL to OBJ in numbers
Millimetres by default, or centimetres, metres or inches when the STL was drawn in one of those.
A part 50 mm tall in the STL is 0.05 units tall in the OBJ, which a program reading OBJ in metres shows as 50 mm.
An STL stores triangles alone, so the OBJ has no texture coordinates and one plain gray material.
The largest STL the page opens; it is read inside the browser tab and 0 bytes are uploaded.
The sample fox through the STL to OBJ converter
Read back from the downloaded ZIP.
247 KB of STL in, 205 KB of ZIP out
The binary STL fox, 5,054 triangles, became a ZIP holding a 1.99 MB OBJ and a 69-byte MTL; the OBJ is text, so it unzips to about eight times the STL.
Z height became Y height
Read in millimetres, the fox stood 998 mm tall on the STL's Z axis; the OBJ gives the same 0.998 m to its Y axis, so it stays upright in a Y-up program.
No texture coordinates written
The OBJ holds 15,162 vertices and normals and no vt lines, because the STL had no UV layout to pass on.
What carries over
What survives STL to OBJ
An STL has little to lose; most rows are about what it never held.
| What | What happens |
|---|---|
| Every triangleKept | All facets are written as OBJ faces, with no smoothing, decimation or hole filling. |
| Flat shadingKept | Normals are worked out from each triangle and written for its three corners, so the faceted look of the STL is kept. |
| SurfaceAdded | The MTL gets one gray material, so the OBJ opens shaded instead of missing a material file. |
| Scale and up axisChanged | Millimetres, or the unit you pick, become metres, and the Z-up part is turned Y-up, the OBJ convention. |
Why an STL needs a unit before it becomes an OBJ
The same numbers mean different sizes to a slicer and to a modeling program.
An STL's numbers have no unit
The file stores bare coordinates. Slicers read them as millimetres, which is the convention the converter starts from.
OBJ readers tend to think in metres
Blender, Unity and Godot take one OBJ unit as a metre, so the converter divides millimetres by 1,000 to keep the real size.
Printers stand parts on Z, OBJ on Y
An STL is Z-up for the print bed, while OBJ files are conventionally Y-up and importers such as Blender's convert from that; turning the part keeps it standing.
Convert an STL to OBJ in three actions
The page opens with OBJ picked; the unit is the one choice worth a look.
Drop the STL
Pick the .stl, binary or ASCII. The page names the format, counts the triangles and shows the size in millimetres.
Check the unit
If the size reads 25.4 times too small, the STL was drawn in inches; 10 times too small, in centimetres. Pick that unit.
Convert and unzip
Press Convert to OBJ and unzip the download, keeping the .obj and .mtl side by side.
Limits of STL to OBJ conversion
The OBJ cannot hold more than the STL had to give.
No texture to recover
The OBJ is bare shape without a UV layout. AI retexture with TRELLIS.2 takes the STL or the OBJ and paints a new textured surface.
A wrong unit guess changes the size
An inch STL read as millimetres comes out 25.4 times too small. The size readout shows it before you convert.
Facets stay facets
Nothing is smoothed, so a coarse print mesh looks just as coarse in a renderer; a remesh or a polygon pass comes after.
Questions about STL to OBJ
Answers about size, orientation, color and privacy.