OBJ
Generated by scripts/gen-format-pages.py from docs/data/format-metadata/, FILE_FORMATS.csv and docs/formats-master.csv. Do not edit by hand: change the source, then run the script.
OBJ Preview.
At a glance
| Original creator | Wavefront Technologies |
| Purpose | Plain-text description of 3D surface geometry, made for the Wavefront Advanced Visualizer and widely used to move meshes between programs. |
| Extensions | .obj |
| Poka parser | poka-obj |
| Viewer | poka-3d-viewer |
| Depth tier | Parser with a shared viewer (see Depth tiers) |
| Breadth tier | B3 Core (see Breadth tiers) |
Preview a sample
These are sample files, not yours. Poka opens a sample in your browser: the file is read and parsed on your device and nothing is uploaded.
How much Poka reads
B3 Core. Only the main content type or types are decoded (for example geometry but not materials, layers or annotations, or only one version family). The list of gaps is substantial.
Confidence: high (the reviewer read the code and a test that proves the claim). Basis: Reviewed 2026-10-16: the whole poka-obj parser, its unit tests, tests/samples.rs and the four corpus files (no sample has texture coordinates, lines or free-form content, and the corpus holds no .mtl file). OBJ has no versions.
What Poka does not read
- Textures and texture coordinates
- Smoothing groups
- Lines and points
- Curved and free-form surfaces
- Per-vertex colours
- Material properties other than colour and opacity
- More than 200,000 triangles
- Files not encoded as UTF-8
Background
Colours and textures live in a companion .mtl file that the OBJ names. Poka reads vertices, faces (polygons are fan-triangulated), objects, groups and material names, and takes the colour and opacity from a .mtl found beside the file. It uses the file's own vn normals when a face corner references one, and recomputes area-weighted normals for corners that do not. Textures and texture coordinates and smoothing groups are not used, nor are lines, points, free-form surfaces or per-vertex colours. The mesh stops at 200,000 triangles and the file must be UTF-8.
Derived and related formats
- Wavefront material library (
.mtl): Companion file for colours and textures, per the Library of Congress.
Libraries
Libraries Poka uses or has assessed for this format, with the status, licence and language the registry records.
- tobj (candidate; MIT; Rust; https://github.com/Twinklebear/tobj)
- obj-rs (candidate; Apache-2.0 OR MIT; Rust; https://github.com/simnalamburt/obj-rs)
- obj (candidate; Apache-2.0; Rust; https://github.com/kvark/obj)
Sources
- https://loc.gov/preservation/digital/formats/fdd/fdd000507.shtml
- parsers/poka-obj/src/lib.rs