Guide

What Is an OBJ File?

Updated · Mesh OBJ to STL only

Learn what Wavefront OBJ stores, how MTL and UVs relate to it, and when to export a mesh to STL for printing. Convert locally in your browser.

OBJ is a text mesh format that came out of Wavefront. You will see it as a .obj file, sometimes with a .mtl file beside it and a folder of images the MTL points at. Modelers such as Blender write it when you ask for Wavefront. Slicers can sometimes open it, and they often behave better with STL. This page is the primer. The converter on the home page is what turns the mesh into that STL.

What the text contains

An OBJ is line-oriented. Lines that start with v are vertex positions, three numbers each. Lines that start with f are faces, written as indices into that vertex list. A face can list three indices (a triangle) or more (a quad or an n-gon). Normals, when present, use vn. Texture coordinates use vt. A face can then look like f 1/1/1 2/2/2 3/3/3, which is vertex, UV, and normal packed together. Object lines (o) and group lines (g) split the file into named chunks. Comments start with #.

None of those letters declare a unit. The numbers are just numbers. A vertex at 10 0 0 might be 10 mm or 10 m. That silence is why the converter asks you, and why the millimeters vs meters guide exists. The file will not settle the argument for you.

Because it is text, you can open a small OBJ and read it. A production sculpt is still text, and it can be huge. This site refuses files over 40 MB before parse so a single drop does not freeze the tab on size alone. Dense files under that cap can still be heavy. The triangle count after parse tells you what the STL will contain.

Materials are a second file

The mtllib line names an MTL file. Inside the MTL you may find colors and paths to images. Those images are not inside the OBJ. They are ordinary pictures on disk. This converter ignores mtllib, ignores usemtl, and ignores UVs. The STL format we write has nowhere honest to put a texture. If the OBJ is a game asset or a render, keep the OBJ, the MTL, and the images together. Make a separate STL for the slicer. OBJ vs STL is the decision table for that split.

Several named objects become one triangle list in the STL. That is a convenience for a single print and a problem if you wanted separate parts. Export separate OBJs when the parts are separate jobs. The object count on the converter tells you how many mesh chunks were merged.

What we can convert, and what we cannot

We convert mesh faces. Quads and n-gons are triangulated. Points and line segments are skipped. If nothing with area remains, the page says the OBJ has no triangle faces.

We do not convert STEP or STP. Those are boundary-representation CAD files. They are not a list of v and f lines, and this site does not include a CAD kernel. Export a mesh OBJ from the CAD program, then come back.

We do not convert PNG or JPG. An image has pixels, not faces. Naming a picture model.obj will fail the extension check if the suffix is still an image suffix, and a renamed file with no faces will fail the empty-mesh check. Neither path becomes a heightmap. Build a mesh in a modeler if you need geometry, then export OBJ.

A file that is already STL should stay STL. Dropping it here is rejected so you do not “convert” a print file into a second print file by accident.

From this file to a slicer

The practical sequence is short. Export OBJ from Blender with scale applied. Drop it on the converter. Match units. Read the bounding box and the triangle count. Download binary STL. Open that STL in Bambu Studio, Cura, or PrusaSlicer and confirm the size. The longer click path is how to convert OBJ to STL. What you have at the end is described in what STL is.

OBJ is a good exchange format and a bad place to store a promise about printability. Faces can be inside out. Shells can be open. The converter will still write triangles. Look at the preview if you want a quick look at orientation, then trust the slicer’s own checks before a long print.

Questions

Is every .obj file a triangle mesh?

No. OBJ can store polygons, and some files contain only points or lines. This converter needs faces. Polygons are triangulated during parse. Files with no faces fail with a clear error.

What is the MTL file next to my OBJ?

MTL is a material library. It names colors and texture files. This converter does not read it. Keep it if you still render the OBJ. It is not required to build an STL.

Can an OBJ be a STEP model in disguise?

No. STEP is a different CAD format. Renaming it to .obj will not make it a mesh. Export a real OBJ from the CAD app.

Convert this kind of OBJ to STL