Convert OBJ to STL

Runs on your device · Your file never leaves your device.

An OBJ carries shape, colour and texture; a slicer wants none of that. Drop the OBJ and get back a binary STL — the geometry, watertight as it was, in the format slicers such as Cura and PrusaSlicer open directly.

The colours are not lost through any fault of the conversion: STL has no way to store them. It describes triangles and nothing more, which is exactly why it became the printing standard. If you need the colours later, keep the OBJ — this gives you a printable file beside it, not instead of it.

The conversion runs on your own machine, which for a 3D file is the whole point: a model is usually a client’s product, a scanned property or something not yet announced. Nothing is sent to a server, so there is nothing to delete afterwards and nothing to take anyone’s word for.

How to convert OBJ to STL

  1. Drop the OBJ file; the .mtl and texture images are not needed, because an STL keeps only the shape.
  2. Check that STL is selected.
  3. Press Convert.
  4. Download the STL file.

Supported formats and limits

Input
OBJ
Output
STL
Companion files
Not needed — an STL keeps only the shape
Keeps animation
No — the format cannot store it
Where it runs
In your browser; the model is never uploaded

Not for: Repairing non-manifold geometry or holes — this converts the shape as it is; it does not mend a model that was already unprintable.

What goes into the STL

Every object and group in the OBJ is merged into one list of triangles, because STL has no way to keep parts apart or to name them. Faces with four or more corners are split into triangles by joining the first corner to each pair of the others. That is correct for flat faces without an inward corner. An L-shaped face, for example, can come out with triangles that cross its edge, so triangulate faces like that in your modelling program before you export the OBJ.

Lines and single points in the OBJ are left out, since an STL can only hold triangles. The OBJ's own normals are not copied either: the direction each triangle faces is worked out from the order of its corners, so a triangle wound the wrong way in the OBJ also faces the wrong way in the STL. Coordinates are stored as 32-bit numbers, which keep about seven significant digits, so a model placed very far from the origin loses fine detail; move it near the origin before exporting.

Getting the size right for a slicer

STL stores no unit, and slicers read its numbers as millimetres. An OBJ states no unit either, so the page shows its measured size as bare numbers and asks what one unit was meant to be. If the OBJ was modelled in millimetres, leave it as it is: the numbers go into the STL unchanged, and a part that measures 45 arrives as 45 mm.

If it was saved in centimetres, inches or metres, choose that unit, and the STL is written in millimetres from it. Many modelling programs work in metres by default, and an OBJ from one of them needs A metre. The page shows the size in millimetres before you convert.

Which way up it lands on the bed

An OBJ normally has Y as its up direction, while slicers build upwards along Z. Unless you choose to keep the axes, the model is given a quarter turn so that what was up in the OBJ is up on the print bed.

You can leave the .mtl out

An STL keeps none of what an .mtl file and its images describe, so for this conversion the .obj alone is enough. Adding them does no harm, but the tool waits for every image to finish loading before it writes the file, so leaving them out is quicker.

Frequently asked questions

Are my files uploaded to a server?
No. This conversion runs inside your browser using your own device’s processing power, and the file is not uploaded. Once a tool has been used once (video, text recognition and background removal download their engine from this site the first time), it keeps working when your connection drops.
Why did my model lose its colours?
STL cannot store colour at all — it is a list of triangles. Every STL from every program is like this. Keep your OBJ for the coloured version and use the STL for printing.
Is the STL binary or text?
Binary, which is about a fifth the size of the text form for the same shape and is read by slicers such as Cura and PrusaSlicer. Nothing is lost by it being binary — the numbers are identical.

Related tools

More in 3D models

This page in other languages: العربية · Deutsch · Français · Español · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা