Shopify 3D model requirements, from the actual docs
Shopify publishes its 3D requirements in two places that do not agree in tone: a platform limit that is very generous, and a partner checklist that is very strict. You need both, because they answer different questions.
Last reviewed July 27, 2026
The platform limits (what will be accepted)
From Shopify's product media types page, 3D models are accepted as GLB or USDZ, at up to 500 MB. Files over 15 MB are automatically optimized: "Model geometry and textures are optimized, while preserving the visual output of the original file." And regardless of what you upload, "Files are converted to ensure both a .USDZ and .GLB version of the model is available."
| Rule | Value | What it means for you |
|---|---|---|
| Formats | GLB, USDZ | GLB is the practical source of truth; Shopify derives the other. |
| Hard max | 500 MB | Effectively unreachable for a product page. Not a target. |
| Auto-optimize trigger | > 15 MB | Cross this and an unseen pipeline rewrites your asset. |
| Cross-format conversion | Always | Your USDZ for iOS AR is generated unless you supply one. |
The partner checklist (what will actually perform)
Shopify's 3D modeling checklist is written for the studios who build models for merchants, and it is far more prescriptive than the merchant-facing docs.
- File size: "The total file size should be about 4 MB. Some mediums might require a smaller size."
- Textures: for mobile web, "texture files shouldn't be larger than 2048 x 2048 px". Large-scale products "often need to be at least 2K".
- Texture format: "Textures should be optimized JPG files, if possible."
- Texture maps for GLB export: diffuse, normal, and a single packed map with occlusion, roughness and metalness in the red, green and blue channels respectively — plus optional emissive.
- Polycount: no fixed number. "The model's polycount is as low as possible while maintaining all the details."
- Scale: built to real-world scale, using correct units so the model is the exact size of the real product.
- Origin: "The base of the model has been placed at the origin of the grid" — the product's origin sits at its base, not its centre.
The ORM packing rule catches people out. glTF stores occlusion, roughness and metalness as one texture sampled on three channels; if your DCC exports three separate greyscale files you have tripled your texture memory for no visual gain. Any glTF-aware optimizer will repack them, but it is cheaper to export correctly.
The origin rule matters for AR. Quick Look and Scene Viewer both place the model on a detected plane using its origin. A chair authored with its origin at the seat centre will float or sink when a customer places it in their living room — the model is not wrong, its pivot is.
How Shopify renders your model
On the storefront, Shopify themes render GLB through Google's <model-viewer> web component. That matters because model-viewer, not Shopify, defines what your model can use: it is built on three.js and lazily loads decoders for Draco, KTX2 and Meshopt, so compressed geometry and textures work in the web view.
AR is a different code path. model-viewer's ar-modes attribute lists, in priority order, webxr (in-browser on Android), scene-viewer (the Android system app) and quick-look (iOS). Quick Look "only supports Apple's proprietary USDZ format" — which is exactly why Shopify generates a USDZ for every model you upload. The consequences of that split are covered in AR Quick Look vs Scene Viewer.
What Shopify does not check
The upload will succeed with a file that is technically legal and practically broken. Shopify does not tell you that your normal map has no tangents to work with, that a material uses KHR_materials_transmission which USDZ cannot represent, that two UV islands sit close enough to bleed under block compression, or that your model contains eleven disconnected floating fragments left over from a generator.
Those are the failures that show up as a customer complaint rather than an error message: the glass bottle that renders opaque in iOS AR, the sneaker with a seam of the wrong colour, the lamp that appears two metres tall. Validating them is a pre-upload step, not a Shopify step — see the pre-publish checklist and fixing glTF validation errors.
A sane target
If you want one line to give a supplier: GLB, under 4 MB, textures at 2048 px or below packed as ORM, real-world scale, origin at the base, under 15 MB guaranteed so Shopify passes the bytes through untouched. Everything else is negotiable per product.
Common questions
- What file format does Shopify need for 3D models?
- GLB or USDZ. Shopify converts uploads so both versions exist, and serves the right one to web, Android and iOS AR viewers. GLB is the practical source format because it is what Shopify themes render on the storefront.
- What texture resolution should I use for Shopify 3D models?
- Shopify's partner checklist says textures should not exceed 2048 × 2048 px for mobile web, with large-scale products often needing at least 2K. It also recommends optimized JPG where possible, and packing occlusion, roughness and metalness into the red, green and blue channels of one map.
- Is there a polygon limit for Shopify 3D models?
- Shopify does not publish a fixed triangle limit. Its guidance is to keep polycount as low as possible while retaining detail. For web delivery, the Khronos Asset Creation Guidelines treat 500,000 triangles as the point where an asset stops being suitable for the web.
- Where should the model origin be?
- At the base of the product, centred on the grid origin. AR viewers place models on a detected floor plane using the origin, so a pivot in the middle of the object makes it float or sink in a customer's room.
Reading about it is slower than measuring it. Drop your .glb, .gltf, or .usdz in and get every blocker on this page checked against the real bytes — packaging, textures, geometry, AR parity — with the fix for each one.