Convert USDZ to STL
A .usdz is what an iPhone opens in AR. Getting a printable mesh back out of one is possible, but not in a browser — and before you start, it is worth checking whether you already have the file the USDZ was made from.
We write USDZ but cannot read one. The scene inside is normally stored as `usdc`, Pixar’s binary crate format, which has no reader outside their own library and no browser build. Blender does the import free, and the steps are below.
Getting an STL out of a USDZ
Blender has read Universal Scene Description since version 3.0, and handles .usdz in current releases. Written for Blender 4.x.
Check whether you need to do this at all
(look for the original)
A USDZ is almost always a derived file — somebody exported it from a GLB, an OBJ or a CAD model to show it in AR. If that original exists, converting it directly is better in every way, because nothing has been through a lossy packaging step.
Import into Blender
File → Import → Universal Scene Description (.usd, .usdc, .usda, .usdz)
Select the .usdz. The geometry, the materials and the textures all come in, because a USDZ carries its images inside the archive.
If your Blender version does not list USDZ in that dialog, it is too old. USD import arrived in 3.0 and USDZ handling improved through the 3.x and 4.x releases.
Check the scale
Press N in the viewport → Item → Dimensions
USDZ is read as metres by Quick Look, and a model authored for AR is at real-world size — a chair is about 0.9 units tall. Blender is also in metres, so the numbers usually agree already.
For printing you want millimetres. Set Scene Properties, Units, Unit Scale to 0.001 with Length in Millimeters, or set Scale to 1000 in the STL exporter. One or the other, never both.
Check the model is solid enough to print
Edit Mode → Select → All by Trait → Non Manifold (Shift+Ctrl+Alt+M)
AR models are built to be looked at, not printed. Single-sided surfaces, holes where the camera never went and pieces that overlap rather than join are all normal and all unprintable.
The Solidify modifier gives a surface with no thickness a real one, which is the usual fix. One to two millimetres is a sensible starting value.
Export the STL
File → Export → STL (.stl) → Format: Binary · Up Axis: Z
Z-up is what slicers expect and Blender is already Z-up, so no rotation is needed. Binary is smaller and universally read.
Check the result
(in any converter on this site)
Drop the STL in here and read the measured dimensions and the open-edge count. Zero open edges means the mesh is closed and will slice cleanly.
A USDZ is a ZIP, and that is occasionally all you need
The archive is an ordinary ZIP with two unusual rules: nothing inside is compressed, and every file starts at a 64-byte boundary. Both exist so a phone can read the model straight out of the archive without unpacking it.
The practical consequence is that you can rename `model.usdz` to `model.zip` and open it. Inside you will find the USD scene and every texture image as an ordinary PNG or JPEG.
If what you actually wanted was the textures — to reuse a material, to check what resolution the images are, to rebuild the model around them — this takes ten seconds and needs no software at all.
What you will usually not be able to read is the scene file itself. If it is a `.usda` you are in luck: that is the text form of USD and it is readable, verbose and quite understandable. If it is a `.usdc`, which is what Apple’s own tools produce, it is a binary crate file and there is nothing useful to see in a text editor.
Why we can write these and not read them
It looks inconsistent from the outside, so it is worth explaining. Writing a USDZ means producing a USD scene description and putting it in a ZIP with the right alignment. USD has a text form, `usda`, which is a documented plain-text format — writing one is a matter of emitting the right lines. Quick Look reads text USD perfectly well, so that is what we write.
Reading a USDZ that somebody else made is a different job, because the file will almost certainly contain `usdc` instead. That is a binary crate format designed for fast memory-mapped loading, with compressed integer encodings and a structure that exists to be read quickly by Pixar’s library rather than to be parsed by anyone else. There is no independent implementation, and no WebAssembly build of the real one.
So the asymmetry is in the format, not in our effort. It is the same reason we can write a 3MF and also read one — 3MF is XML in a ZIP and documented — while a .blend goes in neither direction.
Other routes, if Blender is not an option
Reality Converter, free from Apple’s developer site, runs on macOS and opens a USDZ for inspection. It is built to convert OBJ, glTF and USD *into* USDZ rather than out of it, so it is more useful for checking a file than for extracting one.
Apple’s USD tools — `usdzconvert` and the Python USD libraries from Pixar — will do the conversion properly on macOS or Linux, and they are the reference implementation. They are command-line tools and installing the USD Python libraries is a real piece of work.
Xcode on a Mac previews USDZ and shows the scene structure, which is useful for diagnosis.
On Windows without Blender, there is no good option. Blender is free, runs on Windows, and is the recommendation.
The direction that does work here
Making a USDZ is something this site does well, and it is the direction most people need: you have a model and you want somebody with an iPhone to see it at real size on their table.
GLB to USDZ is the cleanest of those, because both formats describe surfaces the same way — the textures, the normal maps and the material values all come across, and the images are repacked into the archive.
STL to USDZ works too and produces an untinted surface, which is the honest look for a part that has not been printed yet. OBJ to USDZ carries the material colours.
All three run in your browser with nothing uploaded, which matters when the model is a client’s product rather than yours.
Where we can actually help
The opposite direction is one of the things this site is best at. If you have the model the USDZ was made from, converting it here keeps the textures and gets the real-world scale right for Quick Look.
Questions
- Why can no website read my USDZ?
- The scene inside is almost always stored as `usdc`, Pixar’s binary crate format. There is no implementation outside their own library and no browser build of it. Blender has one built in and imports the file free.
- How do I get the textures out of a USDZ quickly?
- Rename the file from .usdz to .zip and open it. It is an ordinary uncompressed ZIP, and every texture is inside as a normal PNG or JPEG. This takes ten seconds and needs no software.
- Will the model be printable?
- Often not without work. AR models are built to be looked at, so single-sided surfaces and holes where the camera never went are normal. Use Blender’s non-manifold check and the Solidify modifier before exporting an STL.
- What size will the model be?
- USDZ is read as metres and AR models are authored at real-world size, so a chair is about 0.9 units. Blender is also in metres. For printing, set the scene units to millimetres before exporting the STL.
- Can I convert something to USDZ here?
- Yes — that direction works well. GLB to USDZ keeps the textures and materials, and STL and OBJ both convert too, all in your browser with nothing uploaded.
Where to go next
Related guides
Tools that do part of this here
About these formats
Checked against current software versions on 2026-09-11