Vi3W
Skip to content

Guides

How to open an OBJ file, with its textures intact

Open OBJ files on Mac, Windows or in a browser, and fix the grey, untextured model you get when the .mtl file or texture paths go missing.

Aman PorwalFounder @ Vi3W

3 min read

A ceramic teapot split down the middle: glazed teal on the left, grey clay with an even quad mesh grid on the right

Quick answer

How do I open an OBJ file?

Double-click it on a Mac to open in Preview, or drag it into a browser viewer such as Babylon.js Sandbox on any computer. To keep colours and textures, open the .obj together with its .mtl file and the images the .mtl names. Blender imports all three through File, Import, Wavefront (.obj).

What an OBJ file is

Wavefront OBJ dates from the late 1980s, and it is still the format almost every 3D program can read. It is plain text. Open one in a text editor and you will see lines starting with v (a vertex position), vt (a texture coordinate), vn (a normal) and f (a face that joins them). That simplicity is why it has lasted, and also why it has limits: no animation, no skeleton, and no single standard for modern PBR materials.

The three parts of an OBJ model

An OBJ model is usually more than one file:

  1. The .obj file. Geometry and UV coordinates.
  2. The .mtl file. Material definitions: colours, and the names of the texture images to use. The .obj names it on a mtllib line.
  3. The texture images. PNG or JPEG files, named inside the .mtl on lines like map_Kd wood.png.

Keep all of them in the same folder, and move them together. Most "my OBJ is grey" problems happen because one of the three got left behind.

Open it on a Mac

Double-click it. Apple lists Wavefront OBJ among the formats Preview supports. Preview looks for the .mtl next to the file.

Open it in a browser

On Windows, Linux or ChromeOS, use a browser viewer:

  • Babylon.js Sandbox: select the .obj, .mtl and images together and drag them in at once.
  • Online 3D Viewer: the same, and it can convert the result to GLB, which packs everything into a single file.

Open it in Blender

Use File › Import › Wavefront (.obj). Blender reads the .mtl file and builds materials from it. Check two things after import:

  • Orientation. OBJ has no fixed up axis. If the model lies on its back, change the importer's Forward and Up axis settings and import again.
  • Scale. OBJ has no units either, so a model built in centimetres arrives a hundred times too big. Scale it, then apply the scale with Ctrl+A.

Fix a grey or untextured OBJ

  1. Is there a .mtl file? If not, the geometry loads with a default material. You will need to build the materials again or get the file from whoever made the model.
  2. Does the .obj name the right .mtl? Open the .obj in a text editor and look for the mtllib line. The name has to match the file exactly, including capitals.
  3. Are the texture paths relative? Open the .mtl. A line like map_Kd C:\Users\someone\Desktop\wood.png will not work on your machine. Change it to map_Kd wood.png, with the image in the same folder.
  4. Does the model have UVs? Without texture coordinates (vt lines), a texture has nowhere to go. See UV mapping.

When to choose OBJ, and when not to

OBJ is a good choice for static props going into tools that are fussy about other formats, and for 3D-printing workflows that convert to STL. For the web, for AR and for game engines, GLB is usually better, because it is one file with standard PBR materials. The 3D file formats guide compares them.

Vi3W exports OBJ as well as GLB and FBX, so you can pick OBJ when a tool needs it and GLB everywhere else.

Last reviewed