# Glint: AI-enhanced glTF/GLB online optimizer

**URL:** <https://discourse.threejs.org/t/glint-ai-enhanced-gltf-glb-online-optimizer/96153>\
**Category:** Resources\
**Created:** [October 30, 2026, 9:24am UTC](https://discourse.threejs.org/t/glint-ai-enhanced-gltf-glb-online-optimizer/96153 "2026-10-30T09:24:03Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![yisky](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/yisky/32/66706_2.png) [@yisky](https://discourse.threejs.org/u/yisky)\
**Post date:** [October 30, 2026, 9:24am UTC](https://discourse.threejs.org/t/glint-ai-enhanced-gltf-glb-online-optimizer/96153/1 "2026-10-30T09:24:03Z")

</div>

For three.js / WebGL work, glTF size and texture VRAM often bite before the first frame feels right. I used to guess how hard to simplify, re-export, and repeat. I wanted the data first.

So I made **Glint** : [https://glintlab.cn](https://glintlab.cn)  
(Backup if the main site is down: [https://glint-bg3.pages.dev/](https://glint-bg3.pages.dev/))

Open it in a desktop browser — nothing to install. It accepts **`.glb` / `.gltf` only** , hard cap **500MB** per file (you get a warning past ~100MB).

Drop a file in, orbit it. You get a breakdown: triangles, verts, meshes/materials/textures, a VRAM estimate, risk flags — parsed in the browser with gltf-transform. That breakdown can feed an AI analysis (only the report text is sent, not the raw model; you need your own API key — without a key, AI analysis doesn’t run). The breakdown and local optimize don’t need a key.

After the breakdown (or the AI analysis report), optimize with presets or pick steps yourself — dedupe, weld, simplify, texture resize, Draco, Meshopt, **KTX2 via toKtx** (JPEG/PNG → KTX2/BasisU; viewer uses KTX2Loader). Some steps are lossy; the UI shows that. When you’re done, compare size / tris / VRAM estimate and download the new `.glb`.

It’s gltf-transform plus a readable report: understand the data, then optimize. KTX2 is supported. Not a magic one-click compressor, and I didn’t invent a new codec.

If you load models with three.js (Draco / Meshopt / KTX2 paths included), try a real file and tell me what breaks — browser, which step, what kind of model.

 ![01-overview](https://canada1.discourse-cdn.com/flex035/uploads/threejs/original/3X/f/3/f34db46d4151af7bc3830ca21a635237b0bb2f8c.jpeg)  
 ![02-report](https://canada1.discourse-cdn.com/flex035/uploads/threejs/original/3X/8/0/80879f28f0668381804a401648c16a79e0478db5.jpeg)  
 ![04-results](https://canada1.discourse-cdn.com/flex035/uploads/threejs/original/3X/b/3/b3f7a1d307c288d38f9d26f5506bdc5ab75ca793.jpeg)
