STL vs OBJ: what is the difference, and which should you use?

Updated · 5 min read

STL stores only a model’s surface as a list of triangles: no colour, no textures, no UVs and no units. OBJ stores the geometry plus UV coordinates and vertex normals, allows faces with more than three corners, and points to an MTL file for materials and texture images. Use STL for single-colour printing, OBJ when you need textures.

Below is a side-by-side table, what is inside each file, which one to send to a 3D printer, and what happens when you convert one into the other.

Try it on your own model

Upload a GLB, OBJ, FBX, STL or PLY file (or pick a sample), describe the look, and let AI paint it from every side.

Open the AI 3D Texturing Studio

STL vs OBJ at a glance

STLOBJ
Created by3D Systems, first released in 1987 for stereolithography printersWavefront Technologies, for its Advanced Visualizer animation software
StoresTriangles only: three corners and one facet normal eachVertices, UV coordinates, vertex normals and faces
Face typesTriangles onlyTriangles, quads and larger polygons; the spec also has free-form curves and surfaces
Colour and texturesNone in the standardYes, through a separate .mtl file and image files
UV mapNoYes
UnitsNone (the numbers are unitless)None (the numbers are unitless)
EncodingASCII text or binary (binary is far more common)Text
FilesOneThe .obj, plus a .mtl and images when it has materials
Typical useSingle-colour 3D printing, CAD exportExchanging models between 3D apps, rendering, textured assets

What is inside an STL file

An STL describes the surface as a "triangle soup". Each triangle is written on its own, with its facet normal (the direction it faces) and its three corners. There is no list of shared vertices, so a corner used by six triangles is stored six times.

A binary STL has an 80-byte header, a 4-byte triangle count, then 50 bytes per triangle: twelve 32-bit numbers (the normal and three corners) and a 2-byte "attribute" field. That makes the size easy to predict: 84 + 50 × triangles bytes, so a 100,000-triangle model is about 5 MB.

The standard has no colour. A few programs (VisCAM and SolidView, and Materialise Magics in a different way) hide colour in that 2-byte attribute field or the header, but those are non-standard and most software ignores them.

STL also has no units. The numbers are just numbers; 3D printing slicers usually read them as millimetres. A model exported in metres or inches can therefore open far too small or too big, and needs scaling.

What is inside an OBJ file

OBJ is a plain text format you can open in any text editor. It lists the vertices once, then builds faces by pointing to them:

  • v lines: vertex positions (x, y, z).
  • vt lines: texture (UV) coordinates, which say where each corner sits on a texture image.
  • vn lines: vertex normals, for smooth shading.
  • f lines: faces, each a list of three or more vertex numbers.

Materials are not in the OBJ itself. A mtllib line names an .mtl file, usemtl lines pick a material for the faces that follow, and the .mtl names the image files, for example map_Kd for the colour texture. So a textured OBJ is really a set of files, and the texture is lost if the .mtl or an image goes missing.

Like STL, OBJ has no units. Some programs add a colour after each vertex position, but vertex colours are not part of the original spec and many apps ignore them. OBJ also has no animation or rigging.

STL or OBJ for 3D printing?

For a normal single-colour print, STL is the safe choice: every slicer reads it, it is one file, and the printer only needs the shape. Many slicers also open OBJ, and for a plain print the result is the same, because the printer ignores UVs and textures either way.

For colour printing, plain STL cannot carry the colour at all. OBJ with textures, or the newer 3MF format, can; check which your printer’s software accepts. Whichever you use, the mesh should be closed (watertight) with no holes. Our STL repair tool can fix common problems.

Which file is smaller?

It depends on the mesh. Binary STL is compact per triangle but repeats every shared corner. OBJ is text, which takes more bytes per number, but lists each vertex only once, and it grows when it also stores UVs and normals. For the same mesh, neither is always smaller.

What converting between STL and OBJ changes

  • STL to OBJ: the shape converts perfectly, but nothing is added. The OBJ has no UVs, no materials and no colour, because the STL never had them. Use STL to OBJ when an app only accepts OBJ.
  • OBJ to STL: the shape converts, faces with more than three corners are split into triangles, and the UVs, materials and textures are dropped. Use OBJ to STL when a slicer or service wants STL.

In short: conversion changes the container, not the content. To get a coloured model from an STL, the mesh needs a UV map and a texture painted onto it, and then a format that can carry both.

Add colour to an STL or OBJ in your browser

The AI 3D Texturing Studio opens STL and OBJ files (plus GLB, glTF, FBX and PLY) up to 60 MB and 600,000 triangles. An STL has no UV map, so the studio makes one automatically, then AI paints the model from several views. An OBJ is read on its own: its geometry and UVs are used, but its .mtl and images are not loaded, since the studio paints a new texture.

Download the result as one GLB with the texture inside. GLB keeps the new UVs and the texture together, which an STL cannot do. The full walkthrough is in how to add colour to an STL file; for what a GLB holds, see what is a GLB file.

Just want to look first? Open the file in our STL viewer or OBJ viewer.

Turn a grey STL into a textured model

Upload an STL or OBJ, describe the colours, and download a textured GLB.

Open the studio

Questions

Is OBJ better than STL?

Not better, different. OBJ stores more (UVs, normals, materials through an MTL file, polygons with more than three sides), so it suits textured models. STL stores only triangles, which is all a single-colour 3D print needs.

Does an STL file have colour?

Not in the standard. A few programs use non-standard colour bits in binary STL, but most software ignores them. For colour you need a format such as OBJ with textures, 3MF or GLB.

Does converting STL to OBJ add colour or textures?

No. The OBJ gets the same triangles and nothing more: no UVs, no materials, no colour. The model has to be UV-mapped and textured to gain colour.

Why is my OBJ grey when I open it?

The texture is not inside the OBJ. It is named in the .mtl file, and the .mtl and the images must sit where the OBJ expects them. If any of them is missing, the model opens without its texture.

Do STL and OBJ files store units?

No. Both store plain numbers with no unit. Slicers usually assume millimetres, so check the size after import.

Ready to texture something?

Upload a GLB, OBJ, FBX, STL or PLY file (or pick a sample), describe the look, and let AI paint it from every side.

Start texturing

Step-by-step tutorials

Keep reading

Sources

Checked 2026-10-17. Other tools change their features and prices often, so check their own pages too.