What is a .obj file?
An OBJ file is a plain-text 3D model format from Wavefront that stores vertices, faces, texture coordinates and object names. It is very widely supported, stores no units, and keeps colours in a separate .mtl file.
Open your .obj file here
Dimensions
Capabilities
Each row carries its source and the date it was checked.
| Property | Value | Source · retrieved |
|---|---|---|
| Stores units | noRead as mm by convention. Nothing in the file says so. | Wavefront OBJ file format specification · 2026-09-04 |
| Stores colour | yes | Wavefront OBJ file format specification · 2026-09-04 |
| Stores assembly structure | yes | Wavefront OBJ file format specification · 2026-09-04 |
| Geometry kind | triangle mesh | Wavefront OBJ file format specification · 2026-09-04 |
| Binary or text | text | Wavefront OBJ file format specification · 2026-09-04 |
| Extensions | .obj | Wavefront OBJ file format specification · 2026-09-04 |
| MIME type | model/obj | Wavefront OBJ file format specification · 2026-09-04 |
| Standard | no formal standard | Wavefront OBJ file format specification · 2026-09-04 |
| Vendor | neutral, no single vendor | Wavefront OBJ file format specification · 2026-09-04 |
What an OBJ file looks like
OBJ is readable text, and unusually pleasant to read:
v 0.0 0.0 0.0
v 10.0 0.0 0.0
v 0.0 10.0 0.0
vn 0.0 0.0 1.0
o bracket
f 1//1 2//1 3//1
v is a vertex, vn a normal, vt a texture coordinate, f a face and o an object name. Indices are 1-based, which trips up every programmer who writes an OBJ parser for the first time.
Faces can have any number of sides, not just three. A lot of OBJ files in the wild are quad meshes, which is why an OBJ can arrive with a different triangle count than you expected: the triangulation happens on import.
The .mtl problem
OBJ stores colours and materials in a separate file with an .mtl extension, referenced by an mtllib line. Textures are separate files again.
This is the most common OBJ frustration. You download or receive a .obj, open it, and everything is grey, because the .mtl was not sent with it. It is also why OBJ is awkward for any single-file upload, including this site's. If your OBJ references a material library, the colours are simply not in the file you uploaded, and the conversion report says so instead of silently rendering grey.
If you need one self-contained file with colour, use GLB or 3MF.
Units
OBJ has no unit. Like STL, the numbers are just numbers, and millimetres is the usual assumption for anything mechanical. Content pipelines for games and film often treat OBJ as metres or as arbitrary "world units" instead, which is why an OBJ from an artist and an OBJ from a CAD package can be a thousand times apart in scale.
Structure
OBJ does keep object and group names, the o and g statements, so a multi-part model arrives with its parts distinguishable. What it does not have is a transform hierarchy: there is no way to say "this part is positioned here relative to that one". Positions are baked into the coordinates.
That is a real but smaller loss than STL's, and this site's conversion reports distinguish the two.
What OBJ is good for
- Universal interchange for meshes. Almost every 3D tool ever written reads
OBJ.
- Human inspection and scripting. It is text, and a few lines of code can
read or write it.
- Photogrammetry and scanning output, where OBJ plus a texture is a common
delivery format.
What it is not good for
- Manufacturing. There is no unit and no exact geometry. Use STEP.
- Single-file colour delivery. Use GLB.
- Very large meshes. Text is bulky, and a 10-million-triangle OBJ is enormous
and slow. Use PLY binary or GLB.
What opens a .obj file
Free tools are listed first. Paid rows are marked, and paying never moves a row up the table.
| Application | Opens | Saves | Platforms | Free | Source |
|---|---|---|---|---|---|
| This site's viewerin-browser, nothing uploaded | ✓ | — | any browser | yes | viewer → |
| Autodesk Meshmixer | ✓ | ✓ | windows · macos | yes | docs · 2026-09-04 |
| Blender | ✓ | ✓ | windows · macos · linux | yes | docs · 2026-09-04 |
| CloudCompare | ✓ | ✓ | windows · macos · linux | yes | docs · 2026-09-04 |
| FreeCAD | ✓ | ✓ | windows · macos · linux | yes | docs · 2026-09-04 |
| MeshLab | ✓ | ✓ | windows · macos · linux | yes | docs · 2026-09-04 |
| PrusaSlicerImport only; slicers output G-code, not meshes. | ✓ | — | windows · macos · linux | yes | docs · 2026-09-04 |
| Autodesk Fusion | ✓ | ✓ | windows · macos | paid | docs · 2026-09-04 |
| Rhino | ✓ | ✓ | windows · macos | paid | docs · 2026-09-04 |
| SketchUpExport requires SketchUp Pro. | ✓ | ✓ | windows · macos · linux · web | paid | docs · 2026-09-04 |