Optimize 3D for WebAR: Polycount, Textures, GLB, Performance


augmented reality
In mobile WebAR, performance is the product. The smaller your 3D scene, the faster it loads — and the higher the chance it runs correctly across a wide range of phones. The goal is always the same: balance visuals and functionality.

This guide is a practical checklist for optimizing 3D assets specifically for mobile WebAR (including WebAR.Studio-ready requirements).
WebAR-ready targets
the numbers that matter
A well-optimized 3D object for mobile WebAR is typically:

  1. GLB file size: up to 10 MB
  2. Textures: up to 1024×1024 (small objects: 512×512), preferably JPG
  3. Vertices: up to 100,000

Scene guidance: aim for ≤80 objects and ≤100k vertices in total for a stable experience.
Model preparation
the fastest wins before “optimization”
Clean the scene
  • Keep only what the user needs to see.
  • Delete extra cameras, lights, helper objects, hidden backups, unused empties.

Scale, pivot, and transforms (critical for AR)
  • Make sure topology is clean: no self-intersections, no flipped normals.
  • Place the pivot sensibly (often at the base of the object).
  • Keep the pivot at the world origin when exporting if your pipeline requires it.
  • Scale must be 1.0 (very important).
  • If your object has Scale ≠ 1, it may “snap back” on export and appear incorrectly sized in AR.
Geometry optimization
polycount without losing the look
The core rule: remove what the eye can’t see
Every vertex that doesn’t add visible value is a performance tax.

Delete invisible geometry:
  1. Enter Edit Mode (Tab)
  2. Use Box Select (B) / Circle Select (C)
  3. Press X → delete Vertices / Edges / Faces
Example mindset: if the camera never sees the astronaut’s face, you can remove that interior geometry.

Remove double vertices (if any)
  1. Edit Mode (Tab)
  2. Select all (A)
  3. Press MMerge by Distance
Reduce polygons with Decimate (when appropriate)
Decimate can dramatically reduce complexity while keeping the overall form.
  1. Select object
  2. Modifier PropertiesAdd ModifierDecimate
  3. Adjust Ratio until quality/performance is acceptable
Watch out for hard edges
Hard edges can increase file weight and complexity. Keep them only where they are visually necessary.
Materials & textures
what WebAR supports (and what it doesn’t)
Key limitations and rules
  • Texture animation is not supported in AR (plan your visuals accordingly).
  • Procedural textures must be baked (Bake) before export.
  • Recommended max texture resolution is 2048×2048, but for mobile WebAR:
  • default: 1024×1024
  • small objects: 512×512
  • If transparency is not required, prefer JPG instead of PNG (smaller file size).
Supported texture maps (typical PBR set)
  • Base Color
  • Metallic
  • Roughness
  • Emission
  • Normal
  • Occlusion
  • (Occlusion can be pre-baked and stored in the red channel, and used together with roughness/metalness packing.)
  • Alpha (transparency)
For each channel, use either:
  • a numeric value (0–1), or
  • a baked texture
UVs and atlases
smaller files + faster rendering
Keep UVs clean and “big”
  • Use larger UV islands with fewer seams.
  • The more islands you have, the larger the file tends to become.
Use texture atlases
Combining multiple textures into one atlas:
  • reduces the number of textures,
  • reduces draw calls,
  • improves loading and runtime performance.
“CAD imports”
the “Color Attribute” trap
When importing models from CAD software, objects may carry a Color Attribute.
If it exists, it can override your assigned materials during GLB export, causing incorrect appearance in AR.
  • If your materials look “wrong” after export, check and remove/disable those attributes.
Animation constraints
what works in mobile WebAR
Before animating, apply transforms (including armature if used):
Ctrl + A → Location / Rotation / Scale
Shape Keys animation is not supported
Only one armature is supported:
  • If multiple animated objects exist, merge them into one object
  • Use a single armature, or bind animation to a single rig/bone structure
Animation must be baked into keyframes
  1. In Weight Paint, enable Auto Normalize for stable deformations
Export to GLB
Blender settings that prevent surprises
Before export:
  • Apply Shade Smooth (where appropriate)
Export steps:
  1. File → Export → glTF 2.0
  2. Choose GLB format
  3. Enable Apply Modifiers (to apply all modifiers)
If your object has animation:
  • In newer Blender versions: choose “active action merged”
  • In older versions: disable “group by NLA track”
Validate your GLB
Use a GLB/glTF viewer (e.g., glTF Viewer) to:
  • catch missing textures,
  • check normals/materials,
  • verify animations,
  • confirm scale and orientation.
Test in AR
the only test that matters
Upload to https://web-ar.studio/
Verify:
  • correct scale and pivot behavior
  • materials under real lighting
  • performance (loading + FPS)
  • interaction behavior (if any)
Final checklist
WebAR.Studio-ready optimization
File size & budgets
  • GLB ≤ 10 MB
  • Vertices ≤ 100k
  • Scene: ≤ 80 objects
  • Textures: ≤ 1024×1024 (small objects: 512×512), mostly JPG
Scene hygiene
  • No extra cameras/lights/hidden junk
  • No inverted normals / self-intersections
Scale & transforms
  • Scale = 1.0
  • Pivot placed correctly
  • (Animation) Ctrl+A applied to objects + armature
Materials & textures
  • No texture animation
  • All procedural textures baked
  • Maps used are supported (BaseColor/Metallic/Roughness/Emission/Normal/Occlusion/Alpha)
  • Occlusion packing handled correctly (if used)
  • UVs are clean (few seams, large islands)
  • Texture atlas used when it helps
Animation
  • No Shape Keys animation
  • One armature only
  • Keys baked
  • Auto Normalize enabled for weights
Export & validation
  • GLB export: Apply Modifiers ON
  • Correct animation export settings (active action merged / no NLA grouping)
  • GLB checked in a viewer
  • Tested in WebAR.Studio on real devices
Want an optimization audit?

If you send me a GLB (or stats + screenshots), I can give you:

a quick performance diagnosis,

the biggest “weight killers,”

and a clean plan to hit ≤10MB / ≤100k vertices without ruining the look.

Email: annapolani.art@gmail.com
Telegram: @anna_polani