3DModel
3DModel is a MediaObject subtype for any 3D asset: a glTF/GLB for a product viewer, a USDZ for Apple AR, an FBX for gaming, a CAD file for engineering, or a scientific mesh for medical imaging. It adds one property: isResizable (Boolean), which indicates whether the model can be scaled by the consumer (a chair model for a room layout app should be resizable; a historical artefact reconstruction should not).
Use encoding (or multiple encoding entries) to carry the different file formats. contentUrl points to the primary file, encodingFormat is the MIME type (model/gltf-binary for GLB, model/vnd.usdz+zip for USDZ, model/gltf+json for glTF).
Full example of schema.org/3DModel json-ld markup
The markup is verified as valid with Rich Results Test from Google.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "3DModel",
"name": "XooTee Classic - 3D product model",
"description": "Physically-based 3D model of the XooTee Classic for AR try-on and configurator use.",
"contentUrl": "https://xoocode.com/models/xootee-classic.glb",
"encodingFormat": "model/gltf-binary",
"isResizable": false,
"encoding": [
{ "@type": "MediaObject", "contentUrl": "https://xoocode.com/models/xootee-classic.glb", "encodingFormat": "model/gltf-binary" },
{ "@type": "MediaObject", "contentUrl": "https://xoocode.com/models/xootee-classic.usdz", "encodingFormat": "model/vnd.usdz+zip" }
],
"creator": { "@type": "Organization", "name": "Xoo Code Product Studio" },
"license": "https://creativecommons.org/licenses/by-nc/4.0/",
"contentSize": "4.2 MB"
}
</script>AR viewer integration
For Google's arModel product AR viewer, attach a 3DModel to Product.subjectOf or reference it via a PotentialAction. For Apple Quick Look, the USDZ typically links from the page HTML directly; the 3DModel entity gives you the metadata layer consumers need to know what they're loading.
Minimal valid version
The smallest markup that still produces a valid 3DModel entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "3DModel",
"name": "XooTee Classic - 3D product model",
"contentUrl": "https://xoocode.com/models/xootee-classic.glb",
"encodingFormat": "model/gltf-binary"
}
</script>Google rich results this unlocks
Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.
- Google docsNo dedicated rich result (used by AR viewers and knowledge graph)
Common 3DModel mistakes
Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.
- 01
Wrong MIME type for the 3D format
Wrong"encodingFormat": "application/octet-stream" for a GLB fileRight"encodingFormat": "model/gltf-binary" for GLB; "model/gltf+json" for glTF; "model/vnd.usdz+zip" for USDZAR viewers key on the MIME type. A generic octet-stream forces a content sniff and can fail on strict clients. Use the IANA-registered model/* MIME types.
- 02
Omitting isResizable for a room-layout asset
WrongFurniture or decor 3DModel without isResizable: falseRightExplicit isResizable: false (furniture has a real physical size the consumer must not override)Room-layout apps scale models to fit walls. A chair that reports isResizable: true invites the consumer to render a 4-metre-tall chair. Explicit isResizable: false prevents that.
Schema properties in this example
About the example data
The 3D model of the XooTee Classic, used in the product page AR viewer and the Xoo Code merch configurator.
Comments
Loading comments...