Which 3D model format keeps textures? GLB, OBJ, FBX, STL and 3MF compared

Updated · 7 min read

You texture a model, send it to a friend or drop it into an engine, and it shows up grey. Nine times out of ten the texture was never inside the file at all. Some formats pack images inside, some only point to images that sit next to them, and some cannot hold colour of any kind.

This guide goes through the common formats one by one, says exactly where each keeps its textures (based on the official specs, linked at the bottom), and ends with a simple rule for which one to use.

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

The short answer

If you want one file that carries the model and its textures, use GLB. It is the binary form of glTF 2.0, the open format from the Khronos Group, and it can pack the mesh, the UVs, the materials and the texture images into a single file that browsers, game engines and most 3D apps open.

FormatCan it hold textures?Where the images liveGood for
GLBYesUsually inside the fileWeb, games, AR, sharing
glTF (.gltf)YesSeparate files or base64 text insideEditing by hand, pipelines
OBJ + MTLYes, by referenceSeparate image files named in the .mtlOld but universal exchange
FBXYesEmbedded if exported with Embed Media, else separateAnimation, Autodesk tools, Unity/Unreal
STLNo (no colour in the standard)NowhereSingle-colour 3D printing
PLYVertex colours, texture coordinatesImage (if any) is a separate fileScans and point data
3MFYes (Materials extension)Inside the 3MF packageColour 3D printing

GLB and glTF: does a GLB file have textures?

A GLB file can have textures, and when it is exported normally it does. The glTF 2.0 spec defines GLB as a 12-byte header followed by a JSON chunk (the description of meshes, materials and textures) and a binary chunk. Texture images can be stored in that binary chunk, so everything travels together.

But "can" is not "always". A GLB with no texture is still a valid GLB: the material may just use a flat base colour, or the model may carry vertex colours (the spec’s COLOR_0 attribute) instead of an image. Many CAD exports and many AI-generated meshes come out like this. The spec also allows a GLB to point to external image files, although that is rare.

What a textured glTF material holds

  • Base colour texture (the albedo, the paint itself).
  • Metallic-roughness texture: roughness in the green channel, metalness in the blue channel.
  • Normal map for fine surface detail, occlusion (AO) in the red channel, and an optional emissive map.

In the core spec, images are PNG or JPEG; other image formats need extensions. If these map names are new to you, PBR maps explained covers what each one does.

.gltf vs .glb

A .gltf file is the same format written as readable JSON text. Blender’s exporter offers three variants: glTF Binary (.glb), one file with textures packed; glTF Separate, a .gltf plus a .bin and the texture images as separate files; and glTF Embedded, one .gltf with everything written inside as base64 text, which Blender’s manual calls the least efficient option. If you send someone a "Separate" .gltf without the other files, they get a grey model or an error.

OBJ + MTL: textures by reference

OBJ stores geometry: vertex positions, texture coordinates (UVs) and normals. Materials live in a second text file, the .mtl, which the OBJ names with a mtllib line. The .mtl in turn names the images: map_Kd for the colour texture, plus keys such as map_Ks, bump and map_d for other maps.

So a "textured OBJ" is really at least three files: model.obj, model.mtl and one or more images. Lose any of them, or rename a folder so the paths break, and the texture is gone. That is the most common reason an OBJ opens grey. When you share an OBJ, zip the whole folder.

The MTL format was written long before PBR, so it describes older-style colours (ambient, diffuse, specular) rather than the metal-roughness maps modern engines expect. Some programs write vertex colours after each vertex position in an OBJ, but that is a non-standard extension and many apps ignore it.

FBX: embedded or not, depending on one checkbox

FBX is Autodesk’s proprietary format, saved as binary or ASCII. It is strong on animation, rigs and scene data, which is why game studios move characters between Maya, Blender, Unity and Unreal with it.

For textures, it depends on how it was exported. Autodesk’s exporter has an Embed Media option: when it is on, the textures are stored inside the FBX (bigger file), and importers extract them to a .fbm folder next to it. When it is off, the FBX only stores the paths to the images, and the textures can go missing once the file moves to another computer. Autodesk also notes that ASCII FBX files in versions 2010 and earlier carry no embedded textures.

STL, PLY and 3MF: the 3D printing and scanning side

STL describes only the surface triangles. The standard has no colour and no texture. A couple of programs added non-standard colour tricks to binary STL (per-facet colour bits), but most software ignores them. If you have an STL and want colour, the model first needs UVs and a texture, then a format that can carry them: our guide to adding colour to an STL file walks through it.

PLY was designed for 3D scanners. It can store per-vertex colour, normals and texture coordinates, which is why scans often come as coloured PLY files. The image itself, if there is one, is a separate file.

3MF is the modern 3D printing format. A 3MF file is a zip package, and its Materials and Properties extension defines colour groups and texture 2D groups, so a 3MF can carry real texture images for colour printers and slicers that support them. Support varies between slicers, so check yours.

GLB vs OBJ

GLBOBJ + MTL
FilesOneThree or more
TexturesPacked insideSeparate images, named in the .mtl
PBR materialsYes (metal-roughness built in)Not in the original spec
AnimationYesNo
Opens in a browserYes (three.js, model-viewer and others)Yes, but needs all files
Human-readableNo (binary)Yes (text)

Pick GLB to share or publish a textured model. Pick OBJ when an old tool only takes OBJ, and keep the folder together.

GLB vs FBX

GLBFBX
Who defines itKhronos Group, open specAutodesk, proprietary
TexturesPacked inside by defaultOnly with Embed Media
MaterialsOne PBR model everywhereVaries by app; often needs fixing after import
Web and ARNativeUsually needs another format first
Animation and rigsYesYes, very mature

Pick GLB for the web, AR, sharing and most real-time use. Pick FBX when a pipeline built around Autodesk tools asks for it, and tick Embed Media.

What the AI 3D Texturing Studio reads and writes

The AI 3D Texturing Studio opens GLB, glTF, OBJ, FBX, STL and PLY files up to 60 MB and 600,000 triangles. The model opens in your browser; only the camera views are sent to the AI. A few format details matter:

  • GLB works best. If your GLB has UVs, Keep my UVs paints straight into them, and the download keeps the file’s own glTF material and its other maps with the new colour texture.
  • glTF must be a single file. A .gltf that points to separate .bin or image files is refused with a message asking you to export one .glb.
  • OBJ is read on its own: the geometry and UVs are used, the .mtl and its images are not loaded. That is fine here, because the studio paints a new texture anyway.
  • STL and most PLY files have no UV map, so the studio makes one for you. A PLY that is only a point cloud (no faces) cannot be painted.
  • 3MF is not accepted as input yet. You can look at a 3MF in our 3MF viewer, then export the model as GLB, OBJ or STL from the program that made it.

Every model starts as grey clay, and you leave with Download textured model (GLB), a single file with the texture packed inside, or Texture only (PNG) if you kept your own UVs and want to plug the image into your own material. The tutorial on downloading your textured GLB covers both.

Want to check what is in a file before you start? Our GLB viewer, OBJ viewer and FBX viewer open it in the browser.

Get a GLB with the texture inside

Upload a GLB, OBJ, FBX or STL, texture it with AI, and download one GLB that keeps its texture.

Open the studio

Questions

What is the best 3D model format with textures?

For sharing, the web and most engines, GLB: one file with the mesh, materials and texture images packed inside. For colour 3D printing, 3MF if your slicer supports textures.

Why does my OBJ have no texture?

The texture is not inside the OBJ. It is named in the .mtl file, and the image must sit where the .mtl expects it. If the .mtl or the image is missing or the paths changed, the model opens grey.

Does STL support colour or texture?

Not in the standard. Some programs use non-standard colour bits in binary STL, but for real colour you need UVs, a texture and a format such as GLB or 3MF.

Is GLB better than FBX?

For sharing textured models and for the web, usually yes, because textures are packed in by default and the material model is the same everywhere. FBX is still common for animation work in Autodesk-based pipelines.

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.