How to View 3D Models in AR on iPhone, iPad and Android
Both iOS and Android can place a 3D model in your room without any app, as long as the file is in the right format, at the right scale and small enough to load quickly.
Updated 20 October 2026 · 6 min read
Viewing 3D models in AR on iPhone and iPad takes nothing more than a USDZ file and Apple's built-in Quick Look viewer. On Android, the equivalent is a GLB file opened in Google's Scene Viewer. Neither requires the viewer to install an app, which makes AR practical for product pages, design reviews, 3D printing previews and portfolios. This guide covers which format each platform needs, how to convert STL, OBJ and GLB files, how to get real-world scale right, and how to put AR on a web page.
Which file format does AR need on iPhone and Android?
| Platform | Built-in AR viewer | Format | Requirements |
|---|---|---|---|
| iPhone, iPad | AR Quick Look | USDZ (also Reality files) | ARKit-capable device, iOS / iPadOS 12 or later |
| Android | Scene Viewer | GLB or glTF | ARCore-supported device with Google Play Services for AR |
| Web (both) | <model-viewer> | GLB, plus USDZ for iOS | Hands off to Quick Look or Scene Viewer for AR |
USDZ is a zip-packaged variant of Pixar's Universal Scene Description, adopted by Apple for AR. GLB is the binary form of glTF 2.0, the Khronos standard for real-time 3D. Both carry geometry, PBR materials and textures in a single file, and both can carry animation. STL, OBJ, PLY and FBX are not accepted by either viewer directly, so they need converting.
How to open a USDZ file in AR on iPhone
- Get the USDZ onto the device: AirDrop, Files, iCloud Drive, Mail or Messages all work.
- Tap the file. Quick Look opens it in Object mode, where you can rotate and zoom.
- Switch to AR at the top of the screen and move the phone slowly so it can detect a floor or table.
- The model is placed on the surface. Drag to move it, use two fingers to rotate, and pinch to scale.
Quick Look shows the scale percentage while you pinch; if you want to judge real size, keep it at 100%. Before sending a file to anyone, you can preview it in the USDZ viewer on any computer.
Converting STL, OBJ and GLB to USDZ
Pick the converter for your source format:
- STL to USDZ: typical for 3D printing previews. STL has no colour or material, so the result has a single plain material. Use the STL to USDZ converter.
- OBJ to USDZ: OBJ can bring texture maps via its MTL file. Keep the OBJ, MTL and image files together so textures are found. Use the OBJ to USDZ converter.
- GLB to USDZ: the cleanest path, because glTF's metallic-roughness PBR materials map well onto USD's preview surface material. Use the GLB to USDZ converter.
For Android you need GLB. If you start from a 3D printing file, convert it to GLB first, then make the USDZ from the GLB so both platforms get the same geometry and orientation.
Getting real-world scale and units right
AR is the one place where scale errors are instantly visible: a phone stand that appears the size of a building, or a car that fits in a teacup.
- glTF/GLB is defined in metres. One unit equals 1 m.
- USDZ stores its unit in the file (metersPerUnit), so a correctly exported file displays at true size.
- STL has no units. By convention, 3D printing files are in millimetres. A 120 mm part read as metres becomes 120 m in AR, so the conversion must divide by 1,000.
- OBJ has no units either, and the convention depends on the exporting program: millimetres, centimetres or metres are all common.
Check dimensions before converting. If a model is in the wrong units, fix it with the STL scale tool (a factor of 0.001 converts millimetres to metres, 25.4 converts inches to millimetres) and verify the bounding box after export. Also check the up-axis: glTF is Y-up, while many CAD and printing tools treat Z as up, so a model can arrive lying on its back if the converter does not reorient it.
Materials and textures in AR
Both formats use physically based rendering. For predictable results:
- Use base colour, metallic, roughness, normal and, if needed, emissive and occlusion maps. Exotic shader setups from Blender, 3ds Max or game engines usually do not survive conversion.
- Keep textures at power-of-two sizes such as 1024 or 2048 pixels. 4096 px textures look little better on a phone and multiply memory use.
- Use JPEG for colour maps without transparency and PNG where you need alpha.
- Avoid very thin transparent surfaces and double-sided materials where possible; they render inconsistently across viewers.
- Untextured scans (PLY with vertex colour) may lose colour in conversion. Baking vertex colour to a texture in Blender before export gives more consistent results.
File size limits and optimisation tips
Neither Apple nor Google sets a single hard limit that applies everywhere, but large files load slowly on mobile data and can fail on older devices. Practical targets:
| Item | Comfortable target |
|---|---|
| File size | Under about 10 MB; under 5 MB for product pages |
| Triangle count | Under about 100,000 for most objects |
| Textures | Up to 2048 × 2048, as few maps as possible |
| Separate meshes and materials | As few as practical |
The largest gains usually come from decimation and texture size. A 3D-printing STL often has millions of triangles of detail that is invisible on a phone screen. Reduce it with the STL file size reducer before converting, and check that silhouettes and edges still look right. For web delivery, GLB files can also use Draco or Meshopt geometry compression, which <model-viewer> supports.
Embedding AR on a website with <model-viewer>
<model-viewer> is an open-source web component from Google that displays a GLB in the page and launches native AR on supported devices. A minimal setup:
<script type="module" src="https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js"></script>
<model-viewer src="chair.glb" ios-src="chair.usdz"
alt="Oak chair" ar ar-modes="webxr scene-viewer quick-look"
camera-controls style="width:100%;height:400px">
</model-viewer>
On Android, the AR button opens WebXR or Scene Viewer; on iPhone and iPad it opens Quick Look with the USDZ. If ios-src is omitted, recent versions of <model-viewer> can generate a USDZ from the GLB on the fly, but supplying your own file gives you control over materials and scale. Pin the script to a specific version in production rather than loading the latest.
For iOS only, a plain link also works. The anchor needs rel="ar" and must contain a single image:
<a rel="ar" href="chair.usdz"><img src="chair.jpg" alt="Oak chair"></a>
Serve files with correct MIME types: model/vnd.usdz+zip for USDZ and model/gltf-binary for GLB. A wrong type is a common reason AR links download the file instead of opening the viewer.
Troubleshooting AR models
| Symptom | Likely cause | Fix |
|---|---|---|
| Model is huge or tiny | Unit mismatch, often millimetres treated as metres | Scale by 0.001 or 1000 and re-export |
| Model lies on its side | Z-up source converted as Y-up | Rotate 90° about X before export |
| Model floats above or sinks into the floor | Origin not at the base | Move the model so its lowest point sits at zero |
| Model is grey or black | Textures missing, or unsupported material | Use PBR maps; embed textures in GLB |
| AR button missing on Android | Device lacks ARCore support or Play Services for AR | Check the device list; 3D view still works |
| iPhone downloads the file instead of opening AR | Wrong MIME type or missing rel="ar" | Fix server headers and the link markup |
| Slow to load or crashes | Too many triangles or oversized textures | Decimate, reduce textures to 2048 px or less |
FAQ
Can I view an STL file in AR on iPhone?
Not directly. Quick Look needs USDZ, so convert the STL to USDZ first and make sure millimetre dimensions are converted to real-world size.
Do I need an app to view USDZ files?
No. USDZ opens in AR Quick Look, built into iOS and iPadOS from Files, Safari, Mail and Messages on ARKit-capable devices.
What is the Android equivalent of USDZ?
GLB, the binary glTF format. Android opens it in Scene Viewer on ARCore-supported devices.
Why does my model appear the wrong size in AR?
AR uses real-world metres. STL and OBJ files have no units, so a model built in millimetres is often read as metres and appears 1,000 times too large. Scale it before converting.