Skip to main content

Polyforge

Learn

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.

12 min read
By Polyforge · Published Mar 21, 2026 · Updated Mar 28, 2026
LEARN
Format Guide

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.

$ contents
$ glb_gltf

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.

Best for: Web delivery, e-commerce product visualization, AR on Android, game engine interchange, and any scenario where file size and loading speed matter.
$ fbx

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.

Best for: Transferring animated characters and rigged models between content creation tools (Maya, Blender, 3ds Max) and game engines (Unity, Unreal). Convert to GLB or glTF for web delivery.
$ obj

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.

Best for: Static geometry interchange when maximum compatibility is required. Common in education, 3D printing (with color support via MTL), and as an intermediate format. Convert to GLB for web use.
$ stl

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.

Best for: 3D printing and CNC machining. If your model needs to go to a slicer or a manufacturing machine, STL is the safest bet. Convert from GLB or OBJ when needed.
$ usdz

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.

Best for: AR experiences on Apple devices. Required for AR Quick Look in Safari, Messages, and other Apple apps. Convert from GLB to USDZ for iOS AR delivery.
$ other_formats

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.

$ diff

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
$ choose

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.

$ faq

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.

$ related

Related Articles and Tools