Convert OBJ to STL
OBJ is a modelling format. STL is what a 3D printer and a slicer expect. This tool turns one into the other on your own computer, shows you the model first, and lets you set the units and the up axis before you download anything.
Drag a 3D file here, or.
This page is set up for OBJ files. Other formats we can read work here too.
The file is read on your own computer. It is never uploaded.
Your file is read by your own browser and never sent to a server. There is no upload, no account and no copy of your model anywhere but on your computer.
What actually happens to your model
An OBJ file can hold several named objects, each with its own material. STL holds one body of triangles and nothing else. So every object in the OBJ is merged into a single shape, and the material names, the colours in the .mtl file and the texture coordinates are all dropped. This is not a limit of this tool. STL has nowhere to put any of it.
The shape itself is kept exactly. Every triangle keeps its corners in the same place. What changes is the bookkeeping around them: duplicate points are joined, triangles that faced the wrong way are turned round, and flat triangles with no area are removed. A slicer is much happier with the result.
Units: the part that catches people out
Neither OBJ nor STL records what one unit means. A cube that is 10 units wide might be 10 millimetres or 10 metres, and the file does not say. Most modelling programs export OBJ in whatever units the scene used, and most slicers read STL as millimetres.
That is why there are two unit boxes below the model. Set the first to what the OBJ actually used and the second to millimetres, and the measurements shown next to the 3D view will tell you straight away whether your part is the size you expected.
Up axis
OBJ files usually come out of programs where Y points up. Slicers and CAD programs treat Z as up. If your model arrives in the slicer lying on its side, this is why. Change the second up-axis box to Z and the file is written the right way round.
The coloured marker in the corner of the 3D view shows which axis is up in the file that will be written. The model is drawn upright either way, so the marker is the thing to watch.
Quads and n-gons become triangles
OBJ allows a face to have any number of corners, and most modelling programs write quads because quads are what you model with. STL has exactly one kind of face: a triangle. So every quad is cut into two triangles and every larger polygon is fanned out into several, which is why the triangle count beside the 3D view is usually about double the face count your modelling program showed you.
The cut is made across the shorter diagonal of each quad. On a flat face it makes no difference at all. On a quad that is not flat — which happens whenever a surface curves — the two possible diagonals give slightly different surfaces, and the shorter one is the better approximation of the two. Nothing you need to do; it is worth knowing when a curved panel looks very slightly different after conversion.
What survives, and what does not
Kept in the STL file
- The exact shape, triangle for triangle
- The overall size, converted to the units you choose
- Several objects, merged into one printable body
Lost on the way
- Materials and colours from the .mtl file — STL stores none
- Texture coordinates and image textures
- Object and group names
How to convert OBJ to STL
Drop the .obj file in
Drag it onto the page, or click to pick it. The .mtl file is not needed for STL, because there is no colour in an STL to put the materials into.
Check the model is the right way up
The 3D view shows what was read. If the model is on its side, the OBJ was written Y-up and your slicer wants Z-up.
Set the input unit to what the OBJ used
Most modelling programs write OBJ in metres. If you exported from CAD for printing, it is probably millimetres. This one box causes more failed prints than anything else on the page.
Set the output unit to millimetres and the up axis to Z
That is what every slicer expects. Then read the width, depth and height under the 3D view and check they match the object you have in mind.
Choose binary STL and download
Binary is about five times smaller than ASCII and every slicer reads it. Pick ASCII only if something has specifically asked for a text STL.
OBJ and STL compared
| Property | OBJ.obj | STL.stl |
|---|---|---|
| File contents | Plain text, one item per line. Materials live in a separate .mtl file beside it. | Binary or plain text. Binary is an 80-byte header, a triangle count, then 50 bytes per triangle. |
| Geometry | Triangles and polygons. Also stores free-form curves, which almost nothing writes. | Triangles only. Curves are approximated when the file is made, and cannot be recovered. |
| Units | None. Like STL, the numbers are bare, though exporters usually mean metres. | None. The file stores bare numbers, and every reader has to guess what they mean. |
| Colour and texture | Material names and texture coordinates, with the materials themselves in the .mtl file. | None. There is no place in the format for a colour, a material or a texture. |
| Separate objects | Named objects and groups, each able to carry its own material. | One body. Several parts written into one STL become one undivided lump of triangles. |
| Published by | Wavefront Technologies, 1980s, for the Advanced Visualizer. | 3D Systems, 1987, for the first stereolithography machines. |
| Written by | Blender, Maya, 3ds Max, ZBrush and most modelling programs. | Every CAD program and every slicer, as the common denominator. |
Questions
- Do I need to include the .mtl file?
- No. The .mtl file only holds colours and materials, and STL cannot store either. The OBJ on its own is enough.
- Should I choose binary or ASCII STL?
- Binary, unless something specifically asks for text. It is about five times smaller and every slicer reads it. ASCII STL is a plain text file you can open in an editor, which is occasionally useful and always much larger.
- My model came out tiny in the slicer. What went wrong?
- The OBJ was almost certainly in metres or in inches. Set the first unit box to match and the second to millimetres, then check the width, depth and height shown beside the 3D view before downloading.
- Is my file uploaded anywhere?
- No. The conversion runs inside your browser using your own computer. Nothing is sent to a server, which is why this works with confidential parts.
- My OBJ has quads. Will that cause a problem?
- No. Quads are cut into triangles automatically, across the shorter diagonal. Expect the triangle count to be roughly twice the number of faces you saw in your modelling program.
- Can I convert several OBJ files into one STL?
- Not in one step. Convert them separately and combine them in your slicer, which is where you would want to position them relative to each other anyway.
Having it printed
If the part is larger than your bed, needs a material your printer cannot handle, or you do not have a printer, these will print it and post it to you. Work out what it would cost you first — the cost calculator on this site gives you a figure to compare against.
- JLC3DPCheapest for resin and nylon, slow shipping
- CraftcloudCompares dozens of printers at once, including local ones
- PCBWayMetal printing and CNC as well as plastic
These are ordinary links, not paid referrals — we earn nothing if you use them. The converter above is the same whether you do or not.
Where to go next
The other direction
Other things to do with a OBJ file
Other ways to get a STL file
Related guides and tools
- Repair an STL that will not sliceClose the holes and separate the bad edges so a slicer accepts it
- Reduce the size of an STL fileFewer triangles, the same shape, a much smaller file
- Check whether an STL is ready to printFind out what is wrong with a model before you print it
- Gridfinity generatorBins and baseplates, any size, built in the browser
- Turn text into an STLType a word and print it, without drawing anything
- Convert BLEND to OBJGuide
- Convert BLEND to STLGuide
- STL to G-codeGuide
- How to convert an STL file to G-codeGuide