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

3D Model Optimizer

Optimize GLB and GLTF models for real-time rendering directly 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

Add .bin buffers and texture images for external GLTF models

PresetReal-timeSafeCustomEverything on — the lowest draw-call count, at the cost of restructuring the scene graph.Optimization stepsDeduplicatePrune unusedWeld verticesGPU instancingMaterial paletteJoin meshesFlatten hierarchyGenerate normalsSparse accessorsReorder verticesSteps always run in a fixed, dependency-correct order — these toggles only choose which ones run.

Similar Tools

3D Web Optimizer

3D Web Optimizer

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

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 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.

Video Mirror Tool

Video Mirror Tool

Video Mirror Tool helps you flip a recording horizontally or vertically directly in your browser. Use it for fast, private media cleanup, publishing, lessons, demos, and everyday video or audio editing.

PDF Outline Editor

PDF Outline Editor

Add or replace bookmarks / outlines in a PDF file. Paste a flat list and generate a nested navigable outline tree — free and private.

Compress PDF

Compress PDF

Reduce the file size of a PDF document without uploading it.

apps

More Tools

Browse our full collection of free online tools.

File size is not the same as performance

A 2 MB GLB that renders at 12 fps and a 20 MB GLB that renders at 60 fps are both entirely possible. Compression fixes download time. This tool fixes frame time — and the two problems have almost nothing in common.

The thing that actually costs you frames is draw calls. Every separate mesh primitive is a command the CPU has to issue to the GPU, complete with state changes. A furniture model exported from a CAD tool as 400 separate parts issues 400 draw calls per frame, and no amount of Draco compression will help.

What each step does

Join meshes — merges primitives that share a material and attribute layout into one. This is the single biggest real-time win and often takes a scene from hundreds of draw calls to a handful.

GPU instancing — when the same mesh appears many times (bolts, chairs, trees), converts it to EXT_mesh_gpu_instancing so the GPU draws all copies in one call.

Material palette — merges materials that differ only by base colour into a single atlased material, which unlocks joining meshes that could not previously be merged.

Deduplicate — exporters routinely write the same accessor, texture or material twice. Merging them cuts memory and enables further merging downstream.

Prune — deletes nodes, materials, textures and accessors nothing references. Pure win, never changes appearance.

Weld — merges co-located duplicate vertices, shrinking index buffers and improving cache behaviour.

Flatten — collapses nested nodes whose only job is to hold a transform.

Reorder — rearranges indices and vertices so the GPU's post-transform vertex cache hits far more often. Typically a 5–15% GPU-side improvement for free.

Sparse accessors — stores mostly-zero data (common in morph targets) compactly.

Normals — generates vertex normals where an exporter forgot them, which is why some models render faceted or black.

Order matters

These steps are not independent. Welding must happen before joining, or merged meshes carry duplicate vertices. Instancing must happen before flattening, because flattening destroys the repeated structure instancing detects. Reordering must be last, after the final index buffers exist. The tool enforces this order — the toggles only decide which steps run.

Two presets

  • Real-time — everything on. Use when preparing an asset for a web viewer or engine.
  • Safe — deduplicate, prune, weld and reorder only. Nothing structural changes, so node names and hierarchy survive intact.

Choose Safe if your application looks up objects by name, or animates specific nodes. Joining and flattening will break that.

What it will not do

Joining only merges meshes that share a material. A model with 40 genuinely different materials will still issue at least 40 draw calls — the fix there is texture atlasing, which is a modelling job, not an automated one. The step-by-step results table tells you honestly how much each step achieved.

Privacy

Every transform runs locally in your browser. Nothing is uploaded, stored or logged.