Skip to main content

Repair GLB Files Online — Fix Mesh Errors for WebXR & 3D Web

Your Three.

Last updated Mar 2026

Loading repair tool...

Usually under 5 seconds — depends on mesh complexity.

When to Use GLB Repair

Fix Sketchfab Downloads for WebXR

Downloaded a GLB from Sketchfab but Three.js renders it with visible holes or z-fighting artifacts? Repair the mesh before deploying to your WebXR experience. The repaired GLB loads cleanly in GLTFLoader without rendering glitches.

Repair Game Engine Exports

Unity WebGL and Godot HTML5 exports sometimes produce GLB files with non-manifold edges after mesh merging or LOD generation. Repair before deploying to web platforms to prevent visual artifacts that only appear at certain camera angles.

Prepare for ARKit & ARCore

ARQuickLook on iOS and Scene Viewer on Android validate mesh geometry before rendering. GLB files with holes or degenerate faces may be rejected or render incorrectly in AR. Repair ensures your model passes platform validation and displays correctly in augmented reality.

Clean 3D Scan GLB for Web Viewers

Photogrammetry apps (Polycam, Luma AI, RealityCapture) export GLB with holes from occluded areas and noise artifacts. Repair the mesh before embedding in product pages, virtual tours, or e-commerce 3D viewers built on model-viewer or Three.js.

Repair Operations

Hole Filling

Detects open boundary loops in each mesh primitive and fills them with new triangles. GLB uses triangulated meshes per the glTF specification, so hole filling adds standard triangles that blend with the existing surface. Filled triangles inherit the PBR material from adjacent faces but have no UV coordinates, so textured models will show solid-color patches in filled areas. Animations and morph targets are preserved, but newly created vertices in filled regions have no bone weight assignments — verify rigged meshes after repair.

Degenerate Face Removal

Removes zero-area triangles that cause z-fighting and rendering glitches in WebGL renderers. These are common in GLB files exported from game engines after mesh merging or LOD generation. Removing degenerate faces reduces draw calls and eliminates flickering artifacts in Three.js and Babylon.js scenes.

Normal Recomputation

Recalculates per-vertex normals from face geometry for consistent lighting. glTF stores vertex normals and optional tangent vectors. This operation recalculates normals but does not recompute tangents. If your GLB uses normal maps, the lighting may look subtly different after normal recomputation because tangent-basis calculations depend on the original normals. Only use this operation if normals are visibly corrupted (dark patches, incorrect lighting).

How It Works

Drop your GLB file into the upload area (up to 150MB on desktop, 25MB on mobile). The tool parses the glTF 2.0 binary container locally: first the JSON chunk (scene structure, material definitions, animation references), then the binary buffer chunk (mesh data). Only mesh primitives are modified; everything else passes through byte-for-byte.

The tool reports per-primitive statistics: vertex count, face count, holes, and degenerate faces. If your GLB contains multiple meshes (common in scene exports from Unity or Blender), each is analyzed and repaired independently. The scene hierarchy and node transforms remain untouched.

Critical consideration for animated GLB: hole filling creates new vertices that have no bone weight assignments (joint indices and weights). On rigged characters, these unweighted vertices collapse to the skeleton root during animation, creating visible artifacts. For animated GLBs, consider repairing in Blender instead where you can manually assign weights to filled regions. For static models (product visualization, architectural scenes, AR placement objects), this is not a concern.

Similarly, normal recomputation recalculates normals from geometry but does not recompute tangent vectors. If your GLB uses normal maps (common in PBR workflows), recalculated normals with original tangents may produce subtle lighting differences. Only enable normal recomputation if you see obviously wrong lighting (dark patches, inside-out faces).

The output is standard glTF 2.0 binary format. Draco compression on the original file is decoded before repair and not re-applied — use the GLB Compress tool afterward if you need Draco compression on the repaired file.

Limitations

GLB repair addresses mesh-level topology errors. Some issues require specialized tools.

Self-intersecting geometry, where overlapping mesh surfaces exist within the same primitive, requires manual editing in Blender after converting from GLB.

Non-manifold edges from mesh merging artifacts create internal walls. This capability is planned for a future update.

Broken bone weight assignments are another limitation. Hole filling creates new vertices without weights. For rigged meshes, manually assign bone weights to filled vertices in Blender after repair.

Texture atlas gaps occur because hole-filled regions have no UV coordinates and cannot display textures. UV unwrap the filled area in Blender if texture coverage is needed.

For complex issues, export the GLB to OBJ or FBX, repair in Blender, and re-export.

Frequently Asked Questions
Mostly yes. PBR material properties (base color, metallic, roughness, emissive) are preserved. Existing textures and UV coordinates on untouched faces remain intact. Hole-filled areas inherit the PBR material from adjacent faces but have no UV coordinates — those patches render as solid base color without texture detail. If your GLB uses normal maps, be cautious with normal recomputation: normals are recalculated from geometry but tangents are not recomputed, which may cause subtle lighting artifacts on normal-mapped surfaces.
Skeletal animations and morph targets remain intact after repair. Vertex indices are updated to account for topology changes. However, hole filling may affect bone weights on rigged or animated meshes — newly created vertices in filled regions have no bone weight assignments, which can cause visual artifacts during animation playback. Verify animated meshes in the GLB Viewer after repair, and reassign weights in Blender if needed.
Yes. The repaired GLB is standard glTF 2.0 format, fully compatible with Three.js GLTFLoader, Babylon.js SceneLoader.ImportMesh, the WebXR Device API, Google's model-viewer web component, ARQuickLook on iOS, and ARCore on Android. No special configuration needed beyond what you already use to load GLB files.
No. Each mesh primitive in the GLB is repaired independently. The scene hierarchy, node transforms, and mesh separation are all preserved exactly as they were in the original file.

You Might Also Need

Step-by-Step Guides