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 millimetres 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.
OBJ vs STL: which file should you send?
For a plain print mesh, STL may be all the recipient needs. OBJ is useful when separate object names or a material workflow matter. It can reference material definitions in another file, so sending an OBJ may mean sending a folder rather than one attachment.
Neither format provides a standard unit declaration for the workflows covered here. Include the intended unit and one reference dimension when handing over a model. A recipient can then catch a scale mistake before using it.
On this site, OBJ to STL exports the supported triangle geometry. It does not repair holes or turn texture detail into physical relief. The single-file OBJ reader also does not load external materials. If you only need to inspect the shape, use the OBJ viewer and keep the original files together.
How to open a .obj file
Drop the file on this page and the viewer reads it in your browser. Blender and MeshLab open it for free and can write it back; FreeCAD, CloudCompare and Meshmixer read it; PrusaSlicer imports it for printing. Fusion and Rhino open it, and SketchUp exports it with the Pro licence.
Keep the folder together. An OBJ names its materials in a separate .mtl file, which in turn names texture images. Send the .obj alone and the shape arrives grey. This site's reader takes one file, so colour will not show here even when the sidecar exists.
OBJ has no unit. A model that opens at a tenth or a thousandth of its intended size was written in different units than the importer assumed; scale it once, on purpose, in the application that will use it.
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 |