3D File Formats Explained
GLB, FBX, OBJ, STL, USDZ, and more. Each format was built for a different job. This guide covers what they do, where they fall short, and how to pick the right one for your project.
Why So Many Formats?
3D files are not like images or documents. A photo needs pixels. A 3D model can need geometry, materials, textures, animations, rigging data, scene hierarchy, and metadata. No single format covers every use case well.
Formats like STL were designed for manufacturing machines. OBJ was built for offline rendering. FBX was made for animation pipelines. GLB was engineered for real time delivery on the web. Understanding these origins makes the right choice obvious.
GLB / glTF: The Web Standard
The Khronos Group released glTF 2.0 in June 2017 as an open, royalty free format for delivering 3D content across platforms. It became an international standard in 2022 (ISO/IEC 12113). The community calls it "the JPEG of 3D" because it fills the same role for 3D models that JPEG fills for images: compact, open, and supported everywhere.
glTF comes in two packaging modes. glTF stores the scene as readable JSON with separate binary and texture files. GLB wraps everything into one binary container. Same specification, same capabilities, different packaging. For a detailed breakdown, see our GLB vs glTF comparison.
Materials. glTF uses physically based rendering (PBR) with a metallic roughness workflow. The same material definition renders correctly on WebGL, Vulkan, Metal, and Direct3D. Ratified extensions add clearcoat, transmission, sheen, iridescence, and more.
Compression. This is where GLB pulls ahead of every other format. Draco compression can reduce mesh data by 70 to 95 percent. Meshopt offers faster decoding with 60 to 80 percent reduction. KTX2 texture compression shrinks textures and cuts GPU memory usage at the same time. No other common 3D format has anything comparable.
Animation. Keyframe animation, skeletal animation with skinning, and morph targets are all supported. Interpolation modes include step, linear, and cubic spline.
Supported by: three.js, Babylon.js, Unity, Unreal Engine, Blender, Godot, Google Scene Viewer, Shopify, Meta Quest, and every major web 3D viewer.
FBX: The Animation Workhorse
FBX started as "Filmbox," a motion capture tool created by Kaydara in 1996. Autodesk now owns the format and turned FBX into the standard interchange format for animated 3D assets between content creation tools and game engines.
Animation. FBX has the most comprehensive animation support of any interchange format. Full skeletal rigs, morph targets with animated weights, multiple animation clips per file, animation layers with blend modes, and camera and light animation. If you are moving character animations between Maya, Blender, and Unity, FBX is still the most reliable path.
Materials. FBX supports Phong and Lambert shading. PBR support exists but is inconsistent across tools. Materials almost always need rework after importing an FBX file into a different application.
The downsides. The format is proprietary with no published specification. Autodesk provides an SDK, but the last major version (FBX SDK 2020) has not seen a significant update in years. Different tools implement FBX differently, which leads to compatibility issues. The default unit is centimeters, causing frequent scale problems when importing into tools that assume meters.
FBX has no meaningful compression (only basic deflate on binary arrays) and no browser support. The three.js FBXLoader is a reverse engineered implementation, not an official one.
OBJ: The Universal Interchange
Wavefront Technologies created the OBJ format around 1990 for their Advanced Visualizer rendering software. The format has no active maintainer today, but its extreme simplicity made it a permanent fixture in 3D workflows. Almost every 3D application on the market can read and write OBJ files.
An OBJ file is plain ASCII text. Vertices, texture coordinates,
normals, and faces are each on their own line, making it
trivial to open in a text editor, inspect, and debug. Materials
are defined in a separate .mtl file. Textures are
always external files referenced by path.
Materials. The standard MTL format uses Phong shading (ambient, diffuse, specular, shininess). PBR extensions for roughness and metallic values exist but are not part of the original spec and behave inconsistently across software.
Limitations. OBJ has no animation support
whatsoever. No scene hierarchy. No binary encoding, which means
large files and slow parsing. A mesh with one million triangles
can produce an OBJ file over 100 MB. Face indices are 1 based,
which is a frequent source of parser bugs. Texture paths break
easily when files are moved, so OBJ models must be distributed
as a zipped collection of the .obj,
.mtl, and texture files together.
STL: The 3D Printing Standard
STL was created in 1987 by the Albert Consulting Group for 3D Systems, the company founded by Chuck Hull, who invented stereolithography. The format has not changed since. It stores nothing but triangles: three vertices and a face normal per triangle, repeated for the entire mesh.
That simplicity is the entire point. Every 3D printer slicer on the market accepts STL. Every CAD tool exports it. The format is trivial to parse and generate. For getting geometry from a CAD program into a 3D printer, STL remains the most universally accepted option.
Binary vs ASCII. STL comes in two variants. Binary STL uses 50 bytes per triangle (12 bytes for the normal, 36 for three vertices, 2 for an attribute field). ASCII STL writes the same data as human readable text and is roughly five to ten times larger. Most tools export binary by default.
What it lacks. STL has no materials, no textures, no colors (in the standard), no animation, no scene hierarchy, no units, and no compression. Each triangle is fully self contained with no vertex sharing, so a cube needs 36 vertex positions instead of 8. Curved surfaces require dense tessellation, which produces large files.
The successor: 3MF. The 3MF format, backed by Microsoft, HP, Autodesk, and others, addresses all of STL's limitations. It supports color, materials, textures, units, and build metadata. 3MF became an ISO standard (ISO/IEC 25422) in 2025. Adoption is growing, but STL's decades of universal support mean it will remain dominant in 3D printing for years to come.
USDZ: Apple's AR Format
USDZ was announced at Apple's WWDC in June 2018 alongside ARKit 2. It builds on Pixar's Universal Scene Description (USD), which was open sourced in 2016 and is now governed by the Alliance for OpenUSD (AOUSD), a consortium founded in 2023 by Pixar, Adobe, Apple, Autodesk, and NVIDIA under the Linux Foundation.
A USDZ file is a zero compression ZIP archive containing a
binary USD scene (.usdc) and embedded textures. The
files inside are aligned to 64 byte boundaries, which allows
the system to memory map them directly for fast GPU access.
Standard ZIP tools cannot produce this alignment; you need
specialized tools like usdzip.
Materials. USDZ uses UsdPreviewSurface, a PBR metallic roughness shader. It supports diffuse color, metallic, roughness, clearcoat, normal maps, occlusion, and emissive. The shader is intentionally simplified compared to glTF's material extensions, with no support for transmission, sheen, iridescence, or anisotropy.
Apple AR Quick Look. This is the primary reason USDZ exists for most developers. AR Quick Look on iOS, iPadOS, macOS, and visionOS requires USDZ. Apple recommends models under 100,000 triangles, textures at 2048x2048 max, and total file sizes between 4 and 8 MB for reliable performance.
The catch. USDZ files are typically five to
eight times larger than equivalent GLB files because the format
has no mesh compression and no GPU texture compression. Android
AR uses GLB, not USDZ. For cross platform AR, you need both
formats. The <model-viewer> web component
handles this split automatically.
Other Formats Worth Knowing
PLY (Polygon File Format). Created at Stanford around 1994 for 3D scanning research. PLY's key strength is native per vertex color support, which makes it the standard output for photogrammetry, LiDAR, and depth sensors. It also became the default format for 3D Gaussian Splatting data. PLY has no animation, minimal material support, and inconsistent texture handling across tools.
DAE (COLLADA). An XML based interchange format maintained by the Khronos Group. It was PlayStation 3's official asset format, Google Earth's 3D model format, and SketchUp's primary exchange format. COLLADA supports animation, skeletal rigging, and physics, but it has no PBR materials and produces extremely verbose files. Blender 4.5 is the last version that includes COLLADA support; it was removed in Blender 5.0. Most tools now prefer glTF for interchange.
3DS (3D Studio). Autodesk's legacy format from 1990, frozen since 1996. Still found in older 3D model libraries. Limited to 65,536 vertices per mesh (16 bit indices), Phong materials only, 8.3 DOS filenames for textures, and basic keyframe animation. Not suitable for modern production work.
STEP (.stp). The ISO 10303 standard for exchanging CAD data. Unlike every other format on this list, STEP uses exact mathematical surface definitions (NURBS, B splines) rather than triangle meshes. A cylinder in a STEP file is an equation, not an approximation. This makes STEP essential for aerospace, automotive, and precision manufacturing, but it has no textures, no materials for visualization, and no animation. Converting STEP to a mesh format always involves tessellation, which is a lossy process.
3MF. The successor to STL for 3D printing, developed by a consortium that includes Microsoft, HP, Autodesk, and over 30 other companies. 3MF is XML based, open source, and became an ISO standard in 2025 (ISO/IEC 25422). It supports color, multiple materials, textures, precise units, and build metadata. Adoption is accelerating, particularly in industrial 3D printing.
Feature Comparison
| Feature | GLB/glTF | FBX | OBJ | STL | USDZ |
|---|---|---|---|---|---|
| Year | 2017 | 1996 | ~1990 | 1987 | 2018 |
| Open format | Yes (ISO) | No | Yes | Yes | Yes |
| PBR materials | Yes | Limited | Extension | No | Yes |
| Textures | Embedded | Embedded | External | No | Embedded |
| Skeletal animation | Yes | Yes | No | No | Yes |
| Morph targets | Yes | Yes | No | No | Yes |
| Mesh compression | Draco, meshopt | Deflate | No | No | No |
| GPU tex compression | KTX2 | No | No | No | No |
| Scene hierarchy | Yes | Yes | No | No | Yes |
| Web support | Excellent | Poor | Basic | Poor | Apple only |
| 3D printing | Possible | Possible | Common | Standard | Rare |
Choosing the Right Format
The best format depends entirely on where the model will end up.
Displaying 3D on a website or web app? Use GLB. Single file, compressed, fast loading, supported by every web 3D library. See our web optimization guide for tips on getting the smallest possible file.
Building AR experiences? You need GLB for
Android (Google Scene Viewer) and USDZ for Apple (AR Quick
Look). The <model-viewer> component handles
both automatically. Start with a GLB master and
convert to USDZ for iOS.
Moving animated characters between DCC tools and game engines? FBX is still the most reliable option for complex rigs and animation data flowing between Maya, Blender, and Unity or Unreal. For final delivery, convert to GLB.
Sending a model to a 3D printer? STL for maximum compatibility. 3MF if your slicer supports it and you need color or multi material printing. Convert from GLB or OBJ as needed.
Exchanging static geometry between tools? OBJ if you need something every application can open. GLB if the receiving tool supports it, since GLB is smaller and faster.
Working with CAD data? STEP for precision engineering. Convert to a mesh format like GLB or STL only when you need visualization or printing.
General rule: author in whatever format your tools produce natively, then convert to the delivery format your target platform requires. Polyforge handles all of these conversions directly in the browser with no file uploads to a server.
Frequently Asked Questions
Which 3D format has the smallest file size?
GLB with Draco or meshopt compression. Draco can reduce mesh data by 70 to 95 percent, and KTX2 texture compression shrinks textures by another 60 to 80 percent. No other common 3D format supports comparable compression. You can compress GLB files with Polyforge.
Which 3D format should I use for my website?
GLB. It is the standard for 3D on the web, supported by
three.js, Babylon.js, <model-viewer>, and
every major browser 3D viewer. A single GLB file contains
geometry, materials, textures, and animations with no external
dependencies.
Can I convert between any two 3D formats without losing data?
It depends on the formats. Converting between GLB and glTF is lossless because they use the same specification. Most other conversions lose some data. Converting FBX to OBJ drops all animations because OBJ has no animation support. Converting any mesh format to STEP is not possible because STEP stores exact mathematical surfaces, not triangles.
Do all 3D formats support textures and materials?
No. STL has no material or texture support at all. PLY supports
vertex colors but has minimal texture handling. OBJ supports
basic Phong materials through a separate .mtl
file. Only GLB/glTF, FBX, and USDZ support PBR materials, which
are the standard for realistic rendering today.
What happens to animations when converting between formats?
Animations survive only when both the source and target formats support them. GLB, FBX, and USDZ all handle skeletal animation and morph targets, so converting between these three generally keeps animations intact. Converting to OBJ, STL, or PLY drops all animation data because these formats store only static geometry.