OBJ Viewer
Open a Wavefront OBJ file in your browser with its materials and textures. An OBJ keeps its colours and texture names in a separate .mtl file, and the textures are image files again; select them all together, drop the folder or click Open a folder, and the viewer matches the names the .mtl asks for. Anything missing is listed by name, and the model still opens in grey. Every object and group in the file gets its own line, so you can show or hide parts, and you can switch between the file’s normals, flat (faceted) and smooth shading. OBJ files have no units, so the size is shown in millimetres and inches with a units chooser and a hint when the size looks unlikely. Turn on wireframe, a grid or the bounding box, then save the view as a PNG. Nothing is uploaded.
100% private — everything runs in your browser. Everything runs in your browser; your model files are never uploaded.
File details
Parts (show or hide)
Textures and images
Files the model refers to
Checks
Extensions and cameras
File size breakdown
glTF JSON (tree)
View
Model
Screenshot
Animation
Morph targets
Runs in your browser: your files are read on your device and never uploaded, and web addresses inside a model are not fetched. The 3D engine (three.js) loads from the jsDelivr CDN. You may use what you make here, including commercially, with no credit needed. The rights in your own models stay as they were.
How to open an OBJ file online
- Select the .obj with its .mtl and texture images (or open their folder), or click Try a sample.
- Check Files the model refers to: the .mtl and every texture are found or listed as missing.
- Show or hide objects and groups under Parts; pick flat or smooth shading.
- Check the size under the view (change Units if needed), then save the view as a PNG.
What you can use it for
- Check an OBJ from a 3D shop or a scan before using it
- See whether an OBJ’s materials and textures come through
- Find which texture file an OBJ’s .mtl is missing
- Look at each part of a model on its own
- Measure an OBJ in millimetres or inches before 3D printing
- Save a picture of a model for a client or a listing
The files that make up an OBJ
| File | What it holds | In the sample |
|---|---|---|
| .obj | Vertices, texture coordinates, normals, faces, objects and groups | 48 vertices, 48 texture coordinates, 2 objects |
| .mtl | Named materials: colours and the texture file names | Checker, Red (mtllib crate.mtl) |
| Images (.png, .jpg) | The textures the .mtl names | Checker: map_Kd checker.png; Red: colour only |
Computed by the viewer’s own reader from the sample files. Faces with four or more corners are split into triangles for display.
What the sample shows per part
| Object | Faces in the file | Triangles drawn |
|---|---|---|
| Crate | 6 | 12 |
| Base | 6 | 12 |
What you can do with a model
| Control | What it does |
|---|---|
| Orbit, zoom, pan | Drag to turn, scroll or pinch to zoom, right-drag (or two fingers) to pan |
| Look from | Corner, front, back, left, right, top or bottom view |
| Wireframe, floor grid, bounding box | See the triangles, the size against a grid (square size shown) and the box around the model |
| Units and up axis | Read the file in mm, cm, m, inches or feet; stand the model on Y or Z |
| Shading normals | As in the file, flat (faceted) or smooth |
| Parts | Show or hide each object, group or mesh |
| Save view as PNG | The current view at the view size or twice that, background optional |
Units: why an OBJ can look the wrong size
| Units in the file | 1 unit = | A 20-unit cube is |
|---|---|---|
| Millimetres | 1 mm | 20 mm |
| Centimetres | 10 mm | 200 mm |
| Metres | 1000 mm | 20,000 mm |
| Inches | 25.4 mm | 508 mm |
| Feet | 304.8 mm | 6,096 mm |
The OBJ format stores numbers only. Most 3D printing models use millimetres, so that is the default; many 3D programs export in metres or centimetres.
Next steps
Print the model: OBJ to STL converts it with units and Y-up fixed, and the STL viewer checks it is watertight. For a flat technical drawing use Orthographic Drawing, or price a print with the 3D Print Cost Calculator.
Sources
Sources: Library of Congress: Wavefront OBJ File Format (OBJ and its MTL material file).
More free tools
Working with 3D models?
View, measure and convert 3D files with free maker tools that run privately in your browser, with no sign-up and no watermark.
Frequently asked questions
Do I need the .mtl file?
Only for colours and textures. Without it the shape opens in grey and the viewer names the .mtl the OBJ asks for. Add the .mtl (and its images) together with the .obj to see the materials.
How do I open an OBJ with its textures?
Select the .obj, the .mtl and the image files together, or click Open a folder. Texture names in the .mtl are matched by path first and then by file name, so textures in a sub-folder are found too.
Why does my OBJ look grey?
The .mtl file or its textures were not added, or the .mtl names a texture file that is not there. The list of files the model refers to shows what is missing.
How big is my OBJ?
OBJ files store plain numbers with no unit. The viewer reads them as millimetres and shows the size in mm and inches; if the model was made in metres or inches, change Units in the file. A hint appears when the size looks too small or too large.
What are groups and objects?
An OBJ can split its faces into named objects (o) and groups (g). Each one gets a line under Parts with its triangle count, and a tick box to show or hide it.
Flat or smooth shading?
As in the file uses the normals stored in the OBJ (or flat ones if it has none). Flat shows every face; Smooth averages the shading across shared corners, which suits curved scanned or sculpted models.
Can I save a picture of the model?
Yes. Turn the model to the view you want and click Save view as PNG: at the view size or twice that, with a transparent background if you choose it.
Is it free?
Yes. There is no sign-up, no watermark and no file limit beyond what your device can hold.
Are my files uploaded?
No. The model and its files are read by JavaScript in your browser and never leave your device. Only the 3D engine (three.js) is downloaded from a public CDN. A texture that points to a web address is not fetched: it is listed and shown in grey.