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 StudioSTL vs OBJ at a glance
| STL | OBJ | |
|---|---|---|
| Created by | 3D Systems, first released in 1987 for stereolithography printers | Wavefront Technologies, for its Advanced Visualizer animation software |
| Stores | Triangles only: three corners and one facet normal each | Vertices, UV coordinates, vertex normals and faces |
| Face types | Triangles only | Triangles, quads and larger polygons; the spec also has free-form curves and surfaces |
| Colour and textures | None in the standard | Yes, through a separate .mtl file and image files |
| UV map | No | Yes |
| Units | None (the numbers are unitless) | None (the numbers are unitless) |
| Encoding | ASCII text or binary (binary is far more common) | Text |
| Files | One | The .obj, plus a .mtl and images when it has materials |
| Typical use | Single-colour 3D printing, CAD export | Exchanging 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 studioQuestions
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 texturingStep-by-step tutorials
Keep reading
How to add colour to an STL file (and print it in colour)
STL files cannot store colour. Learn why, which formats can (3MF, OBJ, PLY, GLB), and 4 ways to add it: slicer painting, part splitting, textures, full colour.
What is a GLB file? (and how it differs from glTF)
A GLB file is a 3D model in glTF 2.0’s binary format. What a GLB holds, how the file is built, GLB vs glTF compared in a table, and how to open or edit a GLB.
UV unwrapping explained (and why it matters for AI texturing)
UV unwrapping explained simply: what UVs are, why seams and islands exist, what texel density means, and what UV problems do to AI texturing, with fixes.
What is AI texturing? A plain-English guide for beginners
AI texturing paints the surface of a 3D model from a text prompt. Learn what it is, how it works, what it is good and bad at, and how to try it on your model.
Sources
Checked 2026-10-17. Other tools change their features and prices often, so check their own pages too.