A step-by-step guide to reduce your 3D model file size for use in the web configurator.
Target size: Under 5MB
Ideal size: 1-3MB
IMPORTANT: Compression Requirements
This configurator uses Meshopt compression exclusively. Do NOT use Draco compression under any circumstances. Draco-compressed files will fail to load with the error: “THREE.GLTFLoader: No DRACOLoader instance provided.” Always use Meshopt.
Why File Size Matters
Large GLB files cause slow loading times, poor performance on mobile devices, and a bad customer experience. The most common causes of oversized files are:
- High-resolution textures (4096×4096 or 2048×2048)
- Uncompressed geometry
- Unused data (animations, shape keys, armatures)
Step 1 – Clean Up in Blender
Before exporting, clean your scene to remove unnecessary data.
Remove unused objects
- Delete any hidden objects, lights, or cameras that are not part of the product
- Remove internal geometry that customers will never see
Resize textures
Large textures are the #1 cause of bloated GLB files. Resize them inside Blender before export.
- Open the UV Editor or Image Editor
- Select a texture
- Go to Image > Scale Image
- Set width and height to 1024×1024 (standard) or 2048×2048 for high-detail models only
- Repeat for all textures in the scene
Remove unused data
In the Properties panel, disable or remove:
- Shape Keys – only needed for facial animation or morphing
- Armature / Skinning – only needed for rigged characters
- Animations – not needed for product configurators
Step 2 – Export from Blender with Correct Settings
Go to File > Export > glTF 2.0 and configure the right panel as follows.
Do NOT enable Draco compression in Blender’s export settings. Leave the Compression checkbox unchecked. Meshopt will be applied in Step 3 using gltf-transform.
Format
| Setting | Value |
| Format | glTF Binary (.glb) |
Include
| Setting | Value |
| Selected Objects | Enabled (export only your product) |
Transform
| Setting | Value |
| +Y Up | Enabled |
Mesh
| Setting | Value |
| Apply Modifiers | Enabled |
| UVs | Enabled |
| Normals | Enabled |
| Tangents | Disabled |
| Loose Edges / Points | Disabled |
Material
| Setting | Value |
| Images | JPEG Format (.jpg) |
| Image Quality | 75 |
| Create WebP | Enabled |
| WebP Fallback | Enabled |
Shape Keys
| Setting | Value |
| Shape Keys | Disabled |
Skinning / Armature / Animation
| Setting | Value |
| Skinning | Disabled |
| Animation | Disabled |
Compression
| Setting | Value |
| Compression (Draco) | DISABLED – leave unchecked |
Click Export glTF 2.0.
Step 3 – Optimize with gltf-transform (Required)
This step applies Meshopt compression and handles texture resizing. It is required, not optional.
Install Node.js
Download and install from nodejs.org – choose the LTS version.
Install gltf-transform
Open Command Prompt (Win + R, type cmd, press Enter) and run:
npm install -g @gltf-transform/cli
Open terminal in your GLB folder
- Open the folder containing your GLB file in Windows Explorer
- Click the address bar at the top
- Type cmd and press Enter
- The terminal opens already pointing to that folder
Run optimization
Step 1 – Inspect first:
gltf-transform inspect yourfile.glb
Look at the resolution and size columns in the texture table. Any texture at 2048×2048 or 4096×4096 needs to be resized.
Step 2 – Resize textures:
gltf-transform resize --width 1024 --height 1024 yourfile.glb resized.glb
Step 3 – Convert textures to WebP:
gltf-transform webp resized.glb webp.glb
Step 4 – Apply Meshopt compression:
gltf-transform meshopt webp.glb output.glb
Step 5 – Validate:
gltf-validate output.glb
The file must pass validation with no errors before submitting. Share the validation output alongside the file.
Expected Results
| Stage | Typical Size |
| Original (unoptimized) | 20-100 MB |
| After texture resize to 1024 + WebP | 5-15 MB |
| After Meshopt compression | 1-5 MB |
If your output is under 500KB, textures have likely been stripped. Re-check your process.
Texture Resolution Reference
| Texture Type | Standard Models | High-Detail Models |
| Base Color (diffuse) | 1024×1024 | 2048×2048 |
| Normal Map | 1024×1024 | 2048×2048 |
| Roughness / Metallic | 1024×1024 | 1024×1024 |
| Ambient Occlusion | 1024×1024 | 1024×1024 |
| Emissive | 1024×1024 | 1024×1024 |
Deliverables Checklist
For every file, submit:
- Optimized .glb file (self-contained binary)
- gltf-validate output showing no errors
- Exact CLI commands used, in order
- Confirmation that you tested the file in the plugin using the provided login credentials
Troubleshooting
Model loads with no materials / appears grey
Material names were merged or stripped during export. Re-export from Blender with materials intact. Do not use any “merge by material” or “join meshes” operations.
Error: THREE.GLTFLoader: No DRACOLoader instance provided
Draco compression was applied. This is not supported. Re-run the optimization pipeline using gltf-transform meshopt instead.
File fails to upload
The file may be exported as .gltf + .bin and renamed, or may be corrupted. Re-export from Blender directly as glTF Binary (.glb) and run the pipeline again.
Meshes are missing after optimization
Meshes were likely merged into a single mesh. Do not use any join or merge mesh operations. Each mesh and node must remain as a separate object with its original name.
Model looks blurry after optimization
Textures were resized too aggressively. Use 2048×2048 for the base color texture on detailed models.
File is still over 5MB after optimization Run gltf-transform inspect output.glb and check for remaining high-resolution textures. Also check whether multiple materials share the same large