Free tools / STL → OBJ

STL to OBJ.

Read a binary or ASCII STL and write Wavefront OBJ geometry with recomputed normals. Keep the STL axes for CAD workflows or rotate to Y up for viewers and game engines.

Specification

What this tool does

Parses a binary or ASCII STL, welds the triangle soup into indexed geometry, derives vertex normals and writes an OBJ file. The numbers stay millimetres because OBJ has no unit field; you choose whether Z stays up or becomes Y.

Inputs
Binary or ASCII STL
Outputs
OBJ text with positions and normals; millimetre values, Z up or Y up
Controls
OBJ up axis: keep Z up (coordinates unchanged) or convert to Y up
Limits
Model 64 MiB per file; expanded geometry is bounded at 1,000,000 vertices
Up to 2,000,000 triangles
STL per-facet colours are not written; no MTL file

Privacy: Files are parsed, previewed and written back inside your browser. Nothing is uploaded, no account is needed and no generation credits are spent.

Maintained by Bake3D · Updated

Move STL geometry into an OBJ workflow

STL describes a surface as a list of independent triangles, each with its own three corners and a facet normal. It has no units, no vertex sharing, no texture coordinates and no material. OBJ is also a plain geometry format, but it stores shared vertices, optional normals and texture coordinates, and it is accepted by almost every modelling, sculpting and rendering application. Converting STL to OBJ is useful when you want to clean up, retopologize, unwrap or render a model that only exists as a print file.

This converter reads binary and ASCII STL, welds the repeated corners into shared vertices, derives smooth vertex normals and writes an OBJ file. It does not add texture coordinates, because the STL never contained any, and it does not create an MTL material file. The geometry you download is the geometry you uploaded, described more compactly.

Convert with the right axis convention

  1. Choose a .stl file up to 64 MiB, or use the sample wedge. Binary and ASCII forms are detected automatically.
  2. Decide what the OBJ’s up axis should be. Keep Z up writes the coordinates unchanged, which is what CAD programs, slicers and most print utilities expect. Convert to Y up rotates the mesh so the STL’s Z axis becomes the OBJ’s Y axis, matching glTF viewers and most game engines.
  3. Inspect the preview, triangle count and dimensions. The preview always shows the model upright regardless of the option, because the viewer itself is Y up.
  4. Download the OBJ and import it into the destination application.
  5. Compare a known dimension there. OBJ has no unit field, so the receiving application decides how to read the numbers.

The numbers in the file stay millimetres because STL files are conventionally written in millimetres and OBJ cannot declare a unit. A 40 mm wedge becomes an OBJ whose longest edge measures 40 units. If the destination interprets OBJ as metres, apply a 0.001 scale there or convert the file with a unit-aware tool such as the OBJ to GLB converter, which asks for the source unit explicitly.

What welding and normals change

An STL repeats every shared corner once per triangle. A cube therefore lists 36 corners for 8 actual vertices. The converter welds corners whose coordinates are exactly equal, which restores shared vertices and lets smooth normals be computed across faces. Welding is exact, not tolerant: corners that differ in the last decimal place stay separate, and the OBJ inherits that seam. If you see a hard edge where you expected a smooth surface, check the source in the STL checker for boundary edges.

Smooth vertex normals are derived from the welded triangles and written as vn lines. Hard edges in the source, such as the sides of a box, still look hard in most renderers because the normals only blend where triangles share a vertex. A sculpting or modelling program will usually recompute normals anyway, so treat them as a preview aid rather than authored shading.

Per-facet colours that some binary STL writers store in the attribute bytes are not carried into the OBJ. The stored facet normals are also discarded in favour of the recomputed ones; if a facet normal disagreed with its winding in the source, the OBJ follows the winding.

What the output does not include

The OBJ contains vertices, normals and faces, organised as one object per STL file. It does not contain texture coordinates, materials, colours, units, a rig or animation. Nothing in the STL could have provided them. If you need a textured or rigged character rather than a bare shell, that is a separate modelling task or the image-to-rigged-character workflow in the studio.

Converting also does not repair geometry. Holes, self-intersections, inverted faces and duplicate shells in the STL survive the trip. Run the STL checker first if you suspect problems, then decide whether to fix them before or after conversion in your modelling application.

Common questions

Why is the model lying on its side after import?

You kept Z up and the destination expects Y up, or the other way around. Re-run the conversion with the other axis option rather than rotating in the destination; a baked rotation in the file is easier to track than one hidden in a scene transform.

Why is the model a thousand times too large or too small?

OBJ carries no unit. The values are millimetres, so a destination that reads OBJ as metres will show a 40 mm part as 40 metres. Scale by 0.001 on import or use a unit-aware conversion. The reported dimensions on this page tell you what the numbers mean before you download.

Does the OBJ include colours or textures?

No. STL has no texture coordinates or materials, so the OBJ is a plain grey shell with no MTL file. Any colour a slicer showed came from the slicer, not the file.

How is this conversion tested?

Automated tests read the exported OBJ again with an independent loader and compare its bounding box with the source: the 40 × 30 × 20 mm sample wedge keeps those dimensions with Z up and reports 40 × 20 × 30 when rotated to Y up, and the triangle count is preserved. These are software checks on defined fixtures, not a guarantee about every STL file. Read the Wavefront OBJ format notes in the Blender manual for how a common destination interprets the file.

Other free tools

Need to generate a textured mesh, add a rig and create animation? Open the studio with 60 free credits.