USDZ vs GLB Which Format for Apple AR?
Apple devices require USDZ for native AR. Everything else uses GLB. This guide explains where each format works, what you lose in conversion, and how to deliver 3D content across every platform without maintaining duplicate assets by hand.
The Split
You want to show a 3D product in augmented reality. If your customers use iPhones, you need USDZ. If they use Android phones, you need GLB. If they use both, and they do, you need a strategy for handling two formats that share a purpose but very little else under the hood.
GLB is the universal 3D transmission format backed by the Khronos Group. USDZ is Apple's AR delivery format, built on Pixar's Universal Scene Description. They overlap in capability, but they differ in compression, platform support, feature coverage, and file size in ways that matter when you are shipping real products.
What Is USDZ?
USDZ is a 3D file format that Apple introduced at WWDC 2018 for delivering augmented reality content on iOS, iPadOS, and later visionOS. It is built on top of Pixar's Universal Scene Description (USD) framework, which was originally designed for film production pipelines at studios like Pixar and Industrial Light & Magic.
At the file level, a USDZ package is a zip archive with no compression. The contained files are stored uncompressed, and each one is aligned to a 64 byte boundary. This alignment allows the operating system to memory map the file contents directly, which means the GPU can read texture data without copying it into a separate buffer first.
Inside the archive, the first file must be a USD scene file
(in .usda, .usdc, or
.usd format). This acts as the root of the
scene graph. Additional files, typically PNG or JPEG textures
and audio clips (M4A, MP3, or WAV), are referenced by the
scene file and bundled alongside it.
USDZ files are read only by design. You cannot modify their contents at runtime. To make changes, you must unpack the archive, edit the individual files, and repackage everything. This immutability is intentional: it ensures that AR experiences display consistently across devices.
On Apple platforms, USDZ integrates directly into the operating system. Safari, Messages, Mail, News, and Notes can all preview USDZ files inline. Tapping a USDZ link on an iPhone launches AR Quick Look, which places the 3D model into the real world through the camera feed. No app installation is required.
What Is GLB?
GLB is the binary variant of glTF (GL Transmission Format), an open standard maintained by the Khronos Group. The glTF 2.0 specification was released in June 2017 and became an ISO standard (ISO/IEC 12113:2022) in July 2022. It is often described as "the JPEG of 3D" because of its focus on efficient transmission and broad tool support.
A GLB file packs everything into a single binary: the JSON scene description, geometry buffers, texture images, and animation data. The file starts with a 12 byte header containing a magic number, version, and total file length. After that, data is organized into chunks. This structure is compact, fast to parse, and ready for GPU upload with minimal processing.
GLB is designed around the PBR (Physically Based Rendering) metallic-roughness material model, which produces consistent lighting across renderers. The format supports skeletal animation, morph targets (blend shapes), multiple UV channels, vertex colors, and a rich extension system that adds features like clearcoat materials, transmission (glass), and mesh instancing.
One of GLB's biggest practical advantages is its compression
ecosystem. The KHR_draco_mesh_compression
extension enables Draco geometry compression, which can
reduce vertex data by 70% to 95%. The
EXT_meshopt_compression extension provides an
alternative compression method with faster decode times.
Texture data can be compressed separately using KTX2 with
Basis Universal. These extensions make GLB files dramatically
smaller than equivalent USDZ packages.
GLB is supported natively in every major 3D engine (three.js, Babylon.js, Unity, Unreal Engine, Godot), every modern web browser, Android AR (through ARCore and Scene Viewer), and most content creation tools (Blender, Substance Painter, Maya, 3ds Max). It is the default 3D format for web delivery.
Platform Support
The format split between Apple and everyone else is the single most important factor in choosing between USDZ and GLB. Here is where each format works natively.
| Platform | USDZ | GLB |
|---|---|---|
| iPhone and iPad (AR Quick Look) | Native since iOS 12 | Not supported |
| Apple Vision Pro | Native since visionOS 1.0 | Via web (Safari model element) |
| Android (Scene Viewer) | Not supported | Native via ARCore |
| Chrome, Firefox, Edge | Not supported | Native via WebGL and WebXR |
| Safari (web) | AR Quick Look via link | Via WebGL (three.js, model-viewer) |
| Blender | Export supported | Full import and export |
| Unity | Limited (via plugins) | Native import |
| Unreal Engine | USD import (not USDZ directly) | Via glTF plugin |
The practical takeaway: GLB works everywhere except Apple's native AR viewer. USDZ works on Apple devices and almost nowhere else. For cross-platform AR, you need both formats or a tool that generates them from a single source.
<model-viewer> web component
displays GLB on all browsers and can provide a USDZ
file specifically for iOS AR via the
ios-src attribute. One embed tag, two
formats, full cross-platform coverage. This is the most
common approach for product pages and marketing sites.
Technical Comparison
Both formats can represent textured 3D models with PBR materials. The differences are in what they optimize for and what they leave out.
| Feature | USDZ | GLB |
|---|---|---|
| Specification owner | Pixar / Apple | Khronos Group |
| ISO standard | No | Yes (ISO/IEC 12113:2022) |
| File structure | Uncompressed zip archive | Binary chunk format |
| Material model | PBR (UsdPreviewSurface) | PBR (metallic-roughness) |
| Geometry compression | None | Draco, Meshopt |
| Texture compression | None (PNG/JPEG only) | KTX2, Basis Universal, WebP |
| Double-sided materials | Not supported | Native support |
| Vertex colors | Not supported | Supported |
| Multiple UV channels | Single UV channel only | Multiple channels |
| Morph targets | Not supported | Supported |
| Skeletal animation | Supported | Supported |
| Multiple animation tracks | Single track only | Multiple tracks |
| Point clouds | Not supported | Supported (via Draco) |
| Audio | M4A, MP3, WAV | Not supported |
| Extension system | USD schemas | Khronos extensions (100+) |
GLB has more features on paper. USDZ has tighter platform integration on Apple devices and includes audio support that GLB lacks entirely. For most AR and e-commerce use cases, the feature differences in geometry, materials, and compression are what matter most.
File Size and Compression
File size is where the two formats diverge the most. GLB was designed from the start as a compact transmission format. USDZ was designed for reliable local rendering, and compression was not a priority.
USDZ uses zero compression. Despite being a zip archive, USDZ stores all files uncompressed. This is intentional: it allows the operating system to memory map textures directly from the archive without decompressing them first. The tradeoff is that USDZ files are significantly larger than their GLB equivalents. A model with 2048x2048 textures stored as PNG inside a USDZ file will carry the full uncompressed PNG data.
GLB supports aggressive compression. With Draco geometry compression enabled, vertex data shrinks by 70% to 95%. Textures can be compressed separately using KTX2 with Basis Universal encoding. Combined, a well optimized GLB file is typically 3 to 10 times smaller than an equivalent USDZ.
In practice, this means a product model that ships as a 2 MB Draco-compressed GLB could become 15 to 25 MB when converted to USDZ. The geometry must be decompressed back to raw vertex data, and the textures cannot use GPU-compressed formats. For bandwidth-constrained mobile connections, this size difference matters.
| Scenario | GLB size | USDZ size | Ratio |
|---|---|---|---|
| Simple product (low poly, one texture) | 0.5 to 2 MB | 3 to 8 MB | 4 to 6x |
| Detailed product (mid poly, multiple textures) | 2 to 5 MB | 10 to 25 MB | 3 to 5x |
| Complex scene (high poly, 2K textures) | 5 to 15 MB | 25 to 60 MB | 3 to 5x |
Apple recommends keeping USDZ files under 50 MB for the best AR Quick Look experience. Shopify recommends under 25 MB for USDZ and under 15 MB for GLB. Google Scene Viewer (Android) recommends keeping GLB files under 10 MB for AR.
Material and Feature Limits
When you convert a GLB model to USDZ, several features are either dropped or require workarounds. Understanding these limits before you start modeling saves hours of debugging later.
Double-sided rendering. GLB materials have a
doubleSided flag that tells the renderer to draw
both the front and back of each polygon. USDZ does not
support this flag. The only workaround is to duplicate the
affected geometry and flip the normals on the copy, which
doubles the polygon count for those surfaces. This is
particularly problematic for thin objects like curtains,
flags, or leaves where both sides of the mesh are visible.
Vertex colors. Some 3D scanning workflows bake color information directly into vertex data instead of using texture maps. GLB supports this fully. USDZ does not read vertex colors at all, so scanned models will appear solid gray unless you bake the vertex colors into a texture before converting.
Multiple UV channels. GLB allows multiple UV sets per mesh, which is useful for lightmaps, detail textures, or decal layers. USDZ only reads the first UV channel. All textures must be mapped to a single UV set.
Morph targets (blend shapes). GLB supports morph targets for facial animation, product configurators, and shape variations. USDZ does not support morph targets. If your model relies on blend shapes for expression or configuration, those animations will not transfer.
Animation constraints. USDZ supports skeletal animation, but only a single animation track. GLB supports multiple named animation clips that can be triggered independently. Apple also recommends keeping AR Quick Look animations under 10 seconds.
Texture specifications. Apple recommends textures at 2048x2048 maximum resolution, with square dimensions and power of two sizes (512, 1024, 2048). Textures must be in PNG or JPEG format. GLB accepts these formats plus KTX2, Basis Universal, and WebP.
Converting Between Formats
Conversion between GLB and USDZ is possible, but it is not lossless. Each direction has specific gotchas you should know about.
GLB to USDZ is the more common direction, since most 3D workflows produce glTF/GLB first and need USDZ as a secondary output for Apple devices.
- Draco compressed geometry must be fully decompressed. The compression savings are lost, and the resulting USDZ file will be much larger.
- KTX2 and Basis Universal textures are converted back to PNG or JPEG. This can increase texture file size significantly.
- Double-sided materials trigger geometry duplication. Every face that was marked as double-sided in GLB gets its polygons duplicated with flipped normals.
- Vertex colors are dropped entirely. If your model uses per-vertex coloring, bake the colors into a texture before converting.
- Morph targets, multiple animation tracks, and multiple UV channels are stripped.
USDZ to GLB is less common but sometimes necessary when you receive assets from a team working in Apple's ecosystem and need them for web or Android delivery.
- Material mapping is usually clean since both formats use PBR metallic-roughness workflows.
- Audio data (M4A, MP3, WAV embedded in USDZ) is dropped, as GLB has no audio support.
- The resulting GLB can then be optimized with Draco or Meshopt compression to reduce file size significantly.
Conversion tools. Apple's Reality Converter
(macOS only) handles GLB to USDZ conversion with a visual
preview. Google's open source usd_from_gltf
tool runs on the command line. Blender can export to both
formats from the same scene. For browser-based conversion
without installing anything,
Polyforge converts GLB to USDZ
and
USDZ to GLB
directly in your browser with no file uploads to a server.
E-Commerce and AR
Product visualization in AR is one of the primary use cases for both formats. Here is how the major e-commerce platforms handle them.
Shopify accepts both GLB and USDZ as product media. The recommended approach is to upload a single optimized GLB file. Shopify automatically generates a USDZ version for iOS customers. GLB files should be under 15 MB (ideally around 4 MB), and USDZ files should be under 25 MB. Files over 15 MB are automatically optimized by Shopify's pipeline. This means you can maintain a single source file and let the platform handle the conversion.
Google Merchant Center supports GLB for product 3D models in Search and Shopping results. The maximum file size is 15 MB. Models appear in Google Search results with a "View in 3D" button on supported Android devices using Scene Viewer.
Amazon supports GLB for 3D product views on select product categories. Models must follow specific polygon and texture budgets defined per category.
Custom product pages. If you build your own
product viewer, Google's model-viewer web
component is the standard solution. It displays GLB in a 3D
viewer on all browsers and launches platform native AR when
available. Set the src attribute to your GLB
file and the ios-src attribute to your USDZ
file. On iOS, tapping the AR button opens Quick Look with
the USDZ. On Android, it opens Scene Viewer with the GLB.
| Platform | Required format | Max file size | Auto-conversion |
|---|---|---|---|
| Shopify | GLB (USDZ optional) | 15 MB GLB / 25 MB USDZ | Yes (GLB to USDZ) |
| Google Merchant Center | GLB | 15 MB | No |
| Amazon | GLB | Varies by category | No |
| Apple AR Quick Look | USDZ | 50 MB (recommended) | N/A |
| Google Scene Viewer | GLB | 10 MB | No |
For a deeper breakdown of format requirements per platform, including texture specs and polygon budgets, see the 3D file formats for e-commerce guide. If you are setting up Shopify AR specifically, the Shopify AR preparation guide walks through the entire process.
Which Format Should You Use?
The answer depends on where your 3D content needs to appear and how your audience accesses it.
Use GLB as your primary format if you are building for the web, Android, or any cross-platform scenario. GLB is smaller, better compressed, more widely supported by tools and engines, and backed by an ISO standard. It is the right default for web 3D viewers, product configurators, game engines, and any project that needs to reach the broadest audience.
Use USDZ as a secondary output for Apple devices when your audience includes iPhone, iPad, or Vision Pro users who will interact with your content through native AR. Generate USDZ from your optimized GLB source rather than maintaining two separate asset pipelines.
Use USDZ as your primary format only if you are building exclusively for Apple's ecosystem: a visionOS spatial experience, an iOS app with RealityKit, or an Apple focused product line where Android and web coverage are not requirements.
- E-commerce product pages → GLB primary, USDZ secondary (Shopify generates USDZ automatically)
- Web 3D viewer or configurator → GLB only (model-viewer handles iOS AR)
- iOS app with RealityKit → USDZ primary
- visionOS spatial experience → USDZ primary
- Android AR experience → GLB only
- Marketing landing page with AR → GLB primary + USDZ for iOS AR Quick Look
- Game development → GLB (universal engine support)
Apple AR Quick Look Specifications
If you are targeting Apple AR Quick Look, these are the specifications Apple recommends for the best experience on iPhones and iPads.
- Format: USDZ only. No GLB, no OBJ, no FBX.
- Maximum recommended vertices: 100,000 for reliable performance on all devices.
- Texture resolution: 2048x2048 maximum. Use square, power of two dimensions (512, 1024, 2048).
- Texture formats: PNG (with or without alpha), JPEG. No KTX2, no WebP, no AVIF.
- Material model: PBR (UsdPreviewSurface) with albedo, normal, metallic, roughness, occlusion, and emissive maps.
- Animation: Skeletal animation only. No morph targets. Maximum duration of 10 seconds. Single animation track.
- File size: Under 50 MB for the best loading experience. Under 25 MB is preferred.
- Supported devices: iPhone and iPad running iOS 12 or later, Vision Pro running visionOS 1.0 or later.
For the full modeling and export workflow targeting AR Quick Look, see the AR model requirements guide.
Frequently Asked Questions
Can I use GLB for AR on iPhone?
Not directly. Apple AR Quick Look only accepts USDZ files. However, Google's model-viewer web component can display GLB models and will automatically launch AR Quick Look with a USDZ fallback on iOS. If you embed 3D content on the web, model-viewer handles the format switching for you.
Does Android support USDZ?
No. Android's Scene Viewer and ARCore use GLB and glTF exclusively. USDZ files will not open in Android AR experiences. If you need AR on both platforms, you need both a GLB file for Android and web, and a USDZ file for Apple devices.
Which format produces smaller files?
GLB, by a significant margin. GLB supports Draco geometry compression, which reduces vertex data by 70% to 95%. USDZ uses uncompressed zip archives with no geometry compression, so files are typically 3 to 10 times larger than an equivalent GLB.
Do I need both USDZ and GLB for e-commerce?
It depends on the platform. Shopify accepts GLB uploads and automatically generates USDZ versions for iOS customers, so one GLB file covers both platforms. If you manage your own 3D viewer, you need both formats. Start with an optimized GLB and convert to USDZ for Apple devices.
What happens to materials when converting GLB to USDZ?
Both formats support PBR metallic-roughness materials, so basic materials transfer well. However, USDZ does not support double-sided rendering, vertex colors, or multiple UV channels. Double-sided materials require duplicating and flipping the geometry, which increases file size.
Is USDZ the same as USD?
Not exactly. USD (Universal Scene Description) is an open framework created by Pixar for composing and exchanging 3D scene data. USDZ is a specific packaging format that wraps USD files into a single uncompressed zip archive for easy distribution. Think of USD as the language and USDZ as the envelope. Apple adopted USDZ specifically for AR delivery on its platforms.
Can Vision Pro display GLB files?
Vision Pro uses USDZ as its native 3D format for Quick
Look and spatial experiences. GLB files are not directly
supported in the system AR viewer. However, web content
viewed in Safari on Vision Pro can use model-viewer or
the HTML <model> element to display
GLB content, and Safari will handle format conversion
for AR experiences.