BeltConvert

OBJ to STL Converter

Drop a .obj file and download an STL of its geometry; materials and textures are left out, as STL has none.

How to use

  1. Step 1Drop a .obj file from Blender, Maya, 3ds Max, ZBrush, Meshmixer or a photogrammetry app. The .mtl and texture files that came with it are not needed.
  2. Step 2The conversion starts as soon as the file lands: groups and objects are merged, quads and polygons split into triangles. Check the triangle count, group count and size shown next to the download.
  3. Step 3Load the STL into the slicer. The numbers are taken as millimetres, so a Blender model exported at scale 1 with metre units arrives 1000 times too small: set Scale to 1000 in the exporter, or scale in the slicer.

OBJ and STL

OBJ comes from Wavefront Technologies' Advanced Visualizer of the late 1980s and is still the plain-text mesh format modelling and sculpting programs share. Lines starting with v are vertices, vt texture coordinates, vn normals, f faces; faces may have any number of corners, and negative indices count back from the last vertex. Groups (g), objects (o), smoothing groups (s) and material assignments (usemtl, with the materials themselves in a separate .mtl file next to textures) organise the model. There is no unit: a vertex at 1.0 is one of whatever the artist had in mind.

STL keeps the geometry and nothing else. Every face is a triangle with a normal, groups and materials do not exist, and slicers read the coordinates as millimetres.

OBJSTL
FacesTriangles, quads, any polygonTriangles only
Materials and texturesVia .mtl and image filesNone
NormalsOptional, per vertexOne per triangle, recomputed here
Groups and objectsNamedMerged into one mesh
Vertex coloursUnofficial extensionNone
Size on diskTextBinary, 50 bytes per triangle

What the conversion does

Every polygon is split into triangles from its first corner: a quad becomes two triangles, an n-sided face n minus 2. For flat quads the surface is identical. A concave or strongly non-planar polygon can be split badly by that fan, so if a model has such faces, triangulate it in the modelling app first (Blender's OBJ exporter has a Triangulated Mesh option, and the Triangulate modifier does the same).

All groups and objects with faces are merged into one STL in file order; the group count is shown so you can tell whether a multi-part model went in. Lines and points, which OBJ can carry, are skipped. Materials, texture coordinates and vertex normals are dropped, and every STL normal is recomputed from the corner order. OBJ faces are counter-clockwise by convention, so the result faces outwards; a model that was mirrored with a negative scale may come out inside-out, which Recalculate Normals in Blender fixes before export.

Printing notes

  • Models from sculpting and modelling apps are often not watertight. Run Blender's 3D-Print Toolbox or the slicer's repair before printing; the STL here is the OBJ's faces as they are.
  • Overlapping objects in one OBJ come out as overlapping shells. Slicers usually union them; if yours complains, export the objects separately and print them as parts.
  • Blender works in metres by default: a 20 cm figure exported at scale 1 is 0.2 units tall and lands in the slicer as 0.2 mm. Export with Scale 1000, or set the scene's Unit Scale to 0.001 and model in millimetres.
  • Apply scale and rotation before exporting (Ctrl+A in Blender), or the numbers in the file will not match what you see on screen.

Questions and answers

Do I need the .mtl file?

No. It holds materials and points at texture images, and STL cannot store either. Drop the .obj alone; the page notes that materials were left out when the file references them.

My OBJ has quads. Will the STL look different?

Each quad becomes two triangles along its first diagonal, which is the same surface for a flat quad. For twisted quads or concave n-gons the split matters; triangulate in the modelling app first to choose it yourself.

Why is the STL so small in the slicer?

OBJ has no unit and STL is read as millimetres. Blender exports metres by default, so a model that looked fine on screen shrinks by a thousand. Scale the object in the slicer or export again with Scale 1000.

Can I keep the objects separate?

This page merges everything into one STL. To get one STL per object, export them one at a time from the modelling app (Blender's exporter has a Selection Only option). If you have the model as 3MF, the 3MF to STL page writes one file per object.

Does the STL keep vertex colours from ZBrush or a photogrammetry scan?

No. Vertex colours are an unofficial OBJ extension and STL has no colour at all. Keep the OBJ, or export a 3MF or PLY from the app, for tools that need colour.