Free tools / OBJ viewer
OBJ viewer.
Drop an .obj file, or the .obj with its .mtl and images, to see the model with its colors and textures. Check the wireframe, the triangle count and the size, and set which way is up. Nothing is uploaded.
Specification
What this tool does
Reads the OBJ text and the MTL files it names, matches each texture to the files you dropped and shows the result with three.js. OBJ stores no unit and no up axis, so sizes are shown in the units of the file and you can switch between Y up and Z up.
- Inputs
- Wavefront OBJ
- MTL files and their images (PNG, JPEG, TGA)
- A folder or a .zip that holds them
- Outputs
- Model details on the page
- PNG snapshot of the view
- Controls
- Turn, zoom and pan by mouse, touch or keyboard
- Wireframe, see-through, textures and grid
- Up axis: Y or Z
- Dark, grey, light or clear background
- Limits
- 64 MiB per file and 256 MiB per drop
- OBJ has no rig or animation, so there is nothing to play
- Sizes are in file units, because OBJ does not say what they are
Privacy: Files are parsed, previewed and written back inside your browser. Nothing is uploaded, no account is needed and no generation credits are spent.
Maintained by Bake3D · Updated
What an OBJ file holds
OBJ is one of the oldest 3D formats, and almost every 3D app can read it. An .obj file is plain text. It lists the corners of the model, the faces between them, and sometimes texture positions and normals, which tell the light how a surface faces.
The colors and textures are not in the .obj. They live in a second text file with the .mtl ending, which the .obj names on a line that starts with mtllib. The .mtl lists each material’s colors and the image files it uses. Wavefront wrote both formats, and Paul Bourke keeps their original notes for OBJ and MTL online.
How to view an OBJ with its materials and textures
- Find the .obj, the .mtl and the images. They are often in one folder.
- Drop them all on the box above in one go. You can also drop the folder, press Choose a folder on a computer, or drop the .zip you downloaded.
- The viewer reads the .obj, finds the .mtl it names and then finds each image the .mtl asks for. Each file can be up to 64 MiB.
- Drag to turn the model and scroll or pinch to zoom. Turn on the wireframe to see how the faces are laid out.
Your files stay in your browser. Nothing is uploaded.
Set the up axis and read the size
OBJ does not say which way is up. Many apps save it with Y up, but CAD and 3D printing apps often use Z up. If your model lies on its back or its side, switch Up axis in the panel from Y to Z.
OBJ does not store a unit either. The size in the panel is in the file’s own units. The same file could mean metres, centimetres or millimetres, depending on the app that saved it. Compare the size with what you expect before you print it or put it in a scene.
When colors or textures are missing
- The model is all grey. The .mtl was not dropped with the .obj, or the .obj names no .mtl. The panel notes tell you which .mtl it asks for.
- Some parts have no texture. An image is missing. The notes name each missing image. Drop it with the other files.
- The .mtl points to a full path, like
C:\Users\.... That happens often. The viewer ignores the folders and matches the image by its file name. - The textures look upside down. The texture positions were saved for a different convention. Flip them in your 3D app and save again.
OBJ has no bones or animation
OBJ stores a still shape. It has no skeleton, no skin weights and no animation, so there is nothing to play. To check a model that moves, use the GLB viewer or the FBX viewer. If you need a moving model and only have a picture, Bake3D can make a rigged, animated 3D model from one image.
To convert an OBJ, our free OBJ to GLB converter writes a single GLB for the web, OBJ to FBX packs the MTL colors and base color texture into one FBX for game engines, and OBJ to STL writes a file for 3D printing. Both ask for the units and the up axis, because OBJ does not store them.
Try the sample
The sample is our fox at rest, written in your browser as three files: bake3d-fox.obj, bake3d-fox.mtl and bake3d-fox-basecolor.jpg, 9.93 MB in all. The .obj has 60,000 triangles. The .mtl names one material, whose base color is the 2048 × 2048 JPEG. The OBJ text is larger than the GLB of the same fox, because text takes more room than binary numbers.
Common questions
How do I open an OBJ file with its textures?
Drop the .obj, the .mtl and the images together, or drop the folder or .zip that holds them. The viewer matches each file by name and shows the textured model.
Why is my OBJ grey?
The viewer did not get the .mtl file, or the .mtl names no images. Drop the .mtl and its images together with the .obj. The panel notes name any file that is still missing.
Why is my OBJ lying on its side?
The app that saved it used a different up axis. Switch Up axis in the panel from Y to Z, or from Z to Y.
What unit is an OBJ file in?
The file does not say. The numbers are whatever unit the app used. Many apps use metres, and many CAD apps use millimetres. Check the size in the panel against the real object.
What did we test?
In Chrome, we opened the sample fox as OBJ, MTL and JPEG, and checked that the texture appeared and the panel showed 60,000 triangles. Automated tests read the sample back with the three.js OBJ and MTL loaders, check the material’s image name and check that every texture position stays inside the image. They also check that the viewer finds mtllib names that contain spaces.
Other free tools
- JPG → STLphoto · lithophane
- Image → STLrelief · generator
- GLB → FBXrig + animation
- FBX → OBJbinary + ascii
- 3MF → STLbinary stl
- GLB → STLgltf too
- OBJ → GLBfor the web
- STL → OBJmm · ascii
- OBJ → STLfor printing
- GLB → OBJgltf too
- STL checkerinspect · report
- 3D viewerglb · fbx · obj · stl
- GLB viewerbones · animation
- glTF viewer.gltf + .bin
- FBX viewerbones · takes
- STL repairfix · watertight
- Normal map generatortexture · png
- 3D text → STLkeychain · name plate
- SVG → STLlogo · colour layers
- STL → 3MFparts · units
- FBX → GLBrig + animation
- OBJ → FBXmtl + textures
- glTF → FBX.gltf + .bin
- DAE → FBXcollada · rig