Skip to content
depthue

Free tool

OBJ to STL converter

Drop an OBJ, check the size, download an STL your slicer opens the right way up.

Runs in your browser. Nothing is uploaded.

How to use it

  1. 1Drop the .obj

    Just the .obj is enough. The .mtl file and texture images are not needed, because STL keeps the shape only.

  2. 2Check the parts

    Every object or group in the OBJ is listed as a part with its triangle count and an edge check. Untick any you do not want.

  3. 3Check size and orientation

    The preview shows the model on a build plate. If it lies on its side, switch the up axis. If the size is wrong, change the units.

  4. 4Download the STL

    One merged STL for the whole model, or one STL per part in a zip if you print parts separately or in different colours.

To convert OBJ to STL, drop the .obj file on the converter above, check that the model stands upright and measures right in millimetres, then download the STL. Every object in the OBJ becomes a part you can merge into one STL or save as separate files. Nothing is uploaded.

What happens to materials, textures and colours

An OBJ file describes the shape. Its colours and textures live elsewhere: the OBJ specification points to a separate material library file with mtllib and assigns materials with usemtl, and that library in turn names image files for textures. STL has no standard way to store colour at all, as the Library of Congress notes, so none of this can come along.

If you want the colours in your print, you have two routes:

Why OBJ files come in the wrong size or the wrong way up

OBJ stores plain numbers with no unit and no rule about which axis is up. That causes the two classic surprises:

  1. Sideways model. Files saved with Y as up land on their back in a slicer, which treats Z as up. The converter assumes Y up for OBJ and stands the model upright. If the preview shows it lying down, switch Up axis to Z up.
  2. Wrong size. A file saved in metres reads 1,000 times too small as millimetres. When a model would measure under half a unit across, the converter reads it as metres and says so. Check the size readout, and use Scale to height if you want an exact height.

Objects, groups and polygons

OBJ files name their pieces with o (object) or g (group) lines. The converter makes one part per object; if the file has no objects, one part per group. Faces with four or more corners are split into triangles. Lines and points are skipped, because they have no surface to print.

Check it before you print

Each part gets an edge check after loading. "Watertight" means every edge is shared by exactly two faces, so the slicer sees a closed solid. Models made for games or rendering never had to be closed, so they can have holes or loose faces; if a part shows open edges, fix it in the STL repair tool or check it in the STL viewer.

Other ways to convert

  1. PrusaSlicer: import the OBJ (Ctrl+I), then File > Export > Export Plate as STL/OBJ. Steps are in Prusa's help center.
  2. Blender: File > Import/Export > Wavefront (.obj) to bring it in, then File > Import/Export > Stl (.stl) to save it. The STL exporter has Scale and Scene Unit options for fixing the size, per the Blender manual.

For other formats, the STL file converter also reads GLB, PLY and 3MF, and the OBJ viewer opens an OBJ without converting it.

Questions

Can OBJ be converted to STL?

Yes. The faces of an OBJ convert to STL triangles exactly, with squares and other polygons split into triangles. Materials, textures and colours are dropped, because STL stores the shape only.

Do I need the MTL file to convert OBJ to STL?

No. The .mtl file only describes colours and textures, which STL cannot hold. Drop the .obj on its own.

Why is my OBJ sideways in the slicer?

The OBJ format does not define which axis is up. A file saved with Y as up, the glTF convention, lands on its back in a slicer, which treats Z as up. This converter turns Y-up models upright; if yours was saved Z up, switch Up axis to Z up before downloading.

Why is my converted STL tiny?

OBJ files store numbers without units. A model saved in metres, such as an 80 mm part written as 0.08, prints at 0.08 mm unless it is scaled. The converter spots sizes like this and reads them as metres; you can also set the units yourself.

Is OBJ or STL better for 3D printing?

For a single-colour print the geometry is the same, and STL opens in PrusaSlicer, Bambu Studio and other slicers. OBJ can carry colour through its material file, which some slicers read: Bambu Studio imports OBJ colours, while PrusaSlicer ignores OBJ materials and textures.

Can I keep the objects in my OBJ separate?

Yes. Choose STL per part to get a zip with one STL per object, or convert to 3MF, which keeps every object separate inside one file.

Read next