What is OBJ?
OBJ (Wavefront OBJ) is a plain-text ASCII 3D file format that stores geometry, texture coordinates, and vertex normals for polygonal meshes, with optional material references pointing to a separate .mtl file. It was developed by Wavefront Technologies in the early 1990s for its Advanced Visualizer product, with an openly published specification, and has since become one of the most widely supported 3D interchange formats in the world.
The format's staying power comes from its simplicity. An OBJ file is human-readable, easy to parse, and covers the minimum data model that a static 3D asset needs: vertex positions, texture coordinates, normals, and face indices. Nearly every 3D application supports it as an import or export target, which makes OBJ the safe common denominator when moving simple geometry between tools that share no other format. It is often the first format taught in graphics coursework because a working parser fits in a page of code.
OBJ does not carry the content types production pipelines need for rigged characters or animation. There is no skeletal data, no morph targets, no keyframe curves, no scene graph, no lights, no cameras, and no PBR material extensions in the base spec. For those workflows, FBX, OpenUSD, or glTF are the appropriate choices. OBJ remains dominant, however, for exchanging static meshes, photogrammetry output, 3D-printed models, and reference geometry between tools that would otherwise have no common language.
What OBJ contains
An OBJ file is a sequence of line-based records, each beginning with a keyword.
- v — vertex position (three or, optionally, four floats)
- vt — texture coordinate (two or three floats)
- vn — vertex normal (three floats)
- f — face definition referencing vertex, texture, and normal indices
- g — group name
- o — object name
- mtllib — reference to a companion .mtl material file
- usemtl — switch material for subsequent faces
A companion .mtl (Material Template Library) file defines named materials with parameters such as diffuse color, specular color, and texture map paths. The material model is pre-PBR and does not standardize modern parameters such as metallic/roughness, though many exporters attach PBR data as non-standard extensions.
How OBJ is used today
Despite its age, OBJ appears throughout modern pipelines in specific roles.
Photogrammetry and 3D scanning output. Scanner and photogrammetry software often exports raw geometry as OBJ because downstream tools reliably import it. RealityCapture, Metashape, and Polycam all offer OBJ export.
3D printing. Slicer software accepts OBJ alongside STL. OBJ carries texture coordinates, which STL does not, and is preferred when the print pipeline includes color or material information.
Reference geometry exchange. Between DCCs that share no other common language, OBJ is the fallback. A modeler working in ZBrush can hand geometry to a colleague in Blender via OBJ without worrying about version compatibility.
Academic and teaching contexts. Graphics courses and research prototypes lean on OBJ because a parser is trivial to write, which makes it easier to focus on the algorithm rather than the file format.
OBJ versus adjacent formats
The static-geometry interchange landscape has several options that overlap with OBJ.
| Format | Content | Strength | Weakness |
|---|
| OBJ | Static mesh + basic material | Simple, universally supported | No animation, no rigging, dated material model |
| STL | Static mesh only | 3D printing standard | No texture coordinates, no color |
| PLY | Static mesh with per-vertex color | Scanner and academic output | Less common in DCC tools |
| glTF | Static or animated mesh, PBR, scene graph | Modern delivery for web and mobile | Slightly harder to hand-author than OBJ |
| FBX | Rigged, animated, cameras and lights | Production interchange | Proprietary, binary, complex |
For any workflow that needs materials that render consistently, animation, or a scene graph, OBJ is the wrong choice. For simple mesh handoff, it remains hard to beat on universality.
See also
FBX — Interchange format for rigged and animated content OBJ cannot carry.
glTF — Modern delivery format with PBR materials and scene graph.
OpenUSD — Production interchange format for large pipelines.
Photogrammetry — Capture workflow that often outputs OBJ.
Additional resources