Skip to content
STLBench

Free online USDZ to GLB converter

USDZ to GLB — the harder direction

Drop a .usdz and download a .glb, unpacked and rewritten here without anything being sent. Most converters go the other way only, because emitting a USD package is straightforward and reading one means handling a zip, two encodings of the scene description and the references between them. This page reads it. The scale is unchanged — USD and glTF both count in metres — so a model anchored at life size in Quick Look stays life size everywhere else.

  • 100% free
  • No signup
  • Reads .usda and .usdc
  • Scale factor 1
  • Nothing uploaded
Convert to

Drag a file anywhere on this page to open it. F fits the view, W switches shading, G the grid, R spins it.

How to convert USDZ to GLB

Three steps, and nothing to decide in the middle.

  1. Drop the .usdz

    The zip is opened and the USD scene inside it parsed here — both the text form and the binary crate form, which is what an iPhone-authored package usually contains.

  2. Nothing rescales

    USD and glTF both count in metres, so the factor is one and every coordinate crosses untouched. A model that was anchored at life size in Quick Look stays life size in whatever loads the GLB.

  3. Download the .glb

    A single binary that Android's Scene Viewer and every browser 3D library read directly. This is the file that stops the asset being locked to one platform.

Technical specifications

Reads.usdz — the zipped package, with .usda or .usdc inside
Writes.glb — binary glTF, self-contained
UnitMetres both sides; scale factor 1
KeptGeometry, packaged textures, base colour, metalness and roughness
LostAnimation, USD layers, variants and references
Opens inmodel-viewer, three.js, Babylon, Godot, Android Scene Viewer
File sizeNo fixed limit — past 100 MB you are told what it will cost this tab, then it opens

Frequently asked questions

Why is this direction rare?

Because writing USD is much easier than reading it. A converter that outputs USDZ only has to emit one dialect of one file plus a zip; a converter that reads one has to handle the text form, the binary crate form, references between files inside the package, and the composition rules USD uses to layer scenes on top of each other. Most tools therefore offer the export and not the import. This page does the harder half.

What is inside a .usdz?

A zip archive, stored uncompressed, containing a USD scene description — either .usda text or .usdc binary — plus the texture images it references. You can rename one to .zip and look, which is a useful trick when you want to know whether an asset you were sent actually carries the textures or merely points at them.

Do materials and textures come across?

Textures packaged inside the file do, and they are written into the GLB rather than referenced, so the output stays a single file. Material parameters translate as far as the two models overlap: USD Preview Surface and glTF metallic-roughness describe surfaces similarly enough that base colour, metalness and roughness map directly. Anything beyond that subset renders more plainly than it did in Quick Look.

Is animation carried?

No. This converts geometry and materials. USD's animation and composition machinery — layers, variants, references, time samples — is considerably richer than a mesh converter can honestly claim to reproduce, and a partial rig is worse than none. For animated USD, the tools are Blender's USD importer or Pixar's own usdcat and usdzip.

Why would I want a GLB instead?

Because USDZ works on Apple devices and GLB works everywhere else — Android's Scene Viewer, every browser 3D library, Godot, Unreal, Unity, and any web page with a model-viewer element. If you were handed a .usdz as the only copy of an asset, converting it is how it stops being locked to one platform.

Is the file uploaded?

No. The unzip, the USD parse and the GLB write all happen in this tab, so an asset sent to you under NDA stays where it was sent.

About getting an asset back out of a platform

USDZ arrives when somebody has already decided the destination is an iPhone. A client sends the AR file because that is what their agency delivered; a marketplace exports one because that is what the listing needed; a colleague AirDrops one because it opened when they tapped it. In each case the file that exists is the platform-specific end product, and the source it came from is somewhere else or gone.

That is a bad position to be in with any asset, and the way out of it is a conversion in the unglamorous direction. It is the same reason the print world keeps a STEP beside its STL and the reason a photographer keeps the raw file: the format you shipped is not the format you should be storing. A GLB is not a master either, but it is readable by everything and owned by nobody, which is enough to stop an asset from being stranded.

Going the other way, when you have the model and need the iOS file, the export is one page across. And if you want to look at what is in the package before converting anything, the viewer opens it and reports the triangle count and the size without writing a file.

Where the conversion happens

Every number on this page is worked out by JavaScript running in the tab you are reading it in. The model you open is read straight off your own disk — it is never uploaded, logged or kept, which is also why these tools carry on working after you disconnect from the network.

One clause specific to this page: a USDZ you were sent is usually somebody else's work under somebody else's terms, and uploading it to a conversion service is a copy you did not have the right to make. That copy is not made here; the unzip and the rewrite happen on your own machine.