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 M → Merge by Distance
Reduce polygons with Decimate (when appropriate)
Decimate can dramatically reduce complexity while keeping the overall form.
  1. Select object
  2. Modifier Properties → Add Modifier → Decimate
  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