Tiny Online Tools logoTiny Online ToolssearchSearch tools…grid_viewAll Tools
Homechevron_right3D Toolschevron_right3D Web Optimizer3D Web Optimizer

3D Web Optimizer

Optimize a 3D model for the web against a real performance budget, free and entirely in your browser.

upload_file

Click to browse or drag & drop files here

Select a 3D model — GLB, GLTF, OBJ, STL, PLY, FBX, DAE or 3MF

Accepted: .glb,.gltf,.obj,.stl,.ply,.fbx,.dae,.3mf

Companion files (optional)upload_file

Click to browse or drag & drop files here

External .bin buffers, textures or .mtl files that a .gltf or .obj refers to.

Deployment targetDesktopMobileWebXRA mid-range phone on a cellular connection, thermally throttled after a minute. The default, because it is where most visitors actually are.
Budgets used for grading
MetricDesktopMobileWebXR
File size15 MB5 MB3 MB
Triangles1,500,000300,000150,000
Draw calls2005030
Texture memory512 MB128 MB96 MB
Max texture size4096 px2048 px2048 px
Materials1002515
Nothing here is hidden behind a preset name. A metric passes at 80% of its budget or less, warns up to 100%, and fails above it — except max texture size, which is a hard threshold.

Similar Tools

3D Web Performance Analyzer

3D Web Performance Analyzer

Analyse how a 3D model will behave on the web, free and entirely in your browser.

3D Model Optimizer

3D Model Optimizer

Optimize GLB and GLTF models for real-time rendering directly in your browser.

3D Model Compressor

3D Model Compressor

Compress GLB and GLTF files online for free and cut 3D model size by up to 95%.

3D Texture Optimizer

3D Texture Optimizer

Resize, convert and compress the textures embedded in GLB, GLTF, FBX and USDZ models, free and entirely in your browser.

Barcode Generator

Barcode Generator

Generate barcodes for products.

SVG Wave Generator

SVG Wave Generator

Generate smooth, customizable SVG wave shapes for section dividers, hero backgrounds, and decorative page elements.

Split PDF

Split PDF

Split a PDF file into individual pages or page ranges.

apps

More Tools

Browse our full collection of free online tools.

Stop guessing what "web-ready" means

Every 3D model that ends up on a website has to fit inside a budget, but almost nobody writes the budget down. The result is the familiar loop: export, upload, watch a phone choke, export again with slightly smaller textures, repeat. This tool inverts that. You choose where the model is going — desktop, mobile or WebXR — and it tells you, before you change anything, exactly which limits you are over and by how much.

The budgets, in the open

MetricDesktopMobileWebXR
File size15 MB5 MB3 MB
Triangles1,500,000300,000150,000
Draw calls2005030
Texture memory512 MB128 MB96 MB
Max texture size409620482048
Materials1002515

WebXR is the harshest column on purpose. A headset renders the whole scene twice per frame, at high resolution, against a 72–90 Hz deadline. Half the mobile triangle budget is not pessimism, it is arithmetic.

Texture memory is the metric people miss

A 4096 × 4096 texture is about 67 MB of RGBA on the GPU, and roughly 89 MB once the mip chain exists — from a file that may have shipped as a 2 MB JPEG. Eight of those and a mid-range phone runs out of memory no matter how small the GLB was. That is why this tool grades GPU texture memory separately from file size, and why halving a texture from 2048 to 1024 saves four times more memory than it saves bytes.

What the plan actually does

Up to five actions, each recommended only when the analysis found a reason for it, each with that reason written out:

  • Cleandedup, prune, weld. Always worth it, always lossless.
  • Simplify — quadric decimation down to the triangle budget, when you are over it.
  • Batchinstance, palette, join, to collapse draw calls and materials.
  • Textures — resize to a computed target and re-encode as WebP.
  • Compress — quantisation plus Draco or Meshopt.

The order is fixed because it matters: welding before simplification, instancing before joining, encoding last. Toggle any action off if you disagree.

Honest limits

Meeting every budget does not guarantee 60 fps. Overdraw, transparency and shader cost are invisible to a static file. And join only merges meshes that share a material. Everything runs locally — your assets never leave the browser.